summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]bin/elf2e32_qtwrapper.pl108
-rwxr-xr-xbin/patch_capabilities.pl3
-rwxr-xr-xbin/syncqt14
-rw-r--r--config.tests/mac/corewlan/corewlan.pro2
-rw-r--r--config.tests/symbian/audio/audio.pro1
-rw-r--r--config.tests/symbian/simple/simple.pro1
-rwxr-xr-xconfigure58
-rw-r--r--demos/chip/view.cpp54
-rw-r--r--demos/chip/view.h32
-rw-r--r--demos/declarative/minehunt/minehunt.cpp2
-rw-r--r--demos/declarative/minehunt/minehunt.pro3
-rw-r--r--demos/declarative/samegame/SamegameCore/Button.qml4
-rwxr-xr-xdemos/declarative/samegame/SamegameCore/samegame.js198
-rw-r--r--demos/declarative/samegame/samegame.qml7
-rw-r--r--demos/declarative/snake/snake.qml2
-rw-r--r--demos/qtdemo/xml/examples.xml1
-rw-r--r--demos/spectrum/app/engine.cpp333
-rw-r--r--demos/spectrum/app/engine.h57
-rw-r--r--demos/spectrum/app/mainwidget.cpp67
-rw-r--r--demos/spectrum/app/mainwidget.h10
-rw-r--r--demos/spectrum/app/progressbar.cpp26
-rw-r--r--demos/spectrum/app/progressbar.h4
-rw-r--r--demos/spectrum/app/spectrumanalyser.cpp2
-rw-r--r--demos/spectrum/app/utils.cpp4
-rw-r--r--demos/spectrum/app/waveform.cpp120
-rw-r--r--demos/spectrum/app/waveform.h14
-rw-r--r--demos/spectrum/app/wavfile.cpp205
-rw-r--r--demos/spectrum/app/wavfile.h36
-rw-r--r--demos/symbianpkgrules.pri4
-rw-r--r--doc/src/declarative/basictypes.qdoc85
-rw-r--r--doc/src/declarative/dynamicobjects.qdoc6
-rw-r--r--doc/src/declarative/elements.qdoc106
-rw-r--r--doc/src/declarative/extending-tutorial.qdoc20
-rw-r--r--doc/src/declarative/extending.qdoc9
-rw-r--r--doc/src/declarative/qtbinding.qdoc631
-rw-r--r--doc/src/development/designer-manual.qdoc156
-rw-r--r--doc/src/getting-started/installation.qdoc263
-rw-r--r--doc/src/index.qdoc2
-rw-r--r--doc/src/legal/trademarks.qdoc12
-rw-r--r--doc/src/platforms/emb-pointer.qdoc7
-rw-r--r--doc/src/platforms/platform-notes.qdoc3
-rw-r--r--doc/src/snippets/code/doc_src_emb-pointer.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc13
-rw-r--r--doc/src/snippets/declarative/borderimage/borderimage-defaults.qml55
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml46
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h52
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp)28
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/custompalette/main.cpp)17
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/MyItem.qml45
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/context.pro (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro)0
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/main.cpp56
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h79
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/enums.pro (renamed from doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro)2
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/imageviewer.h68
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/main.cpp73
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/standalone.qml49
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/main.qml)13
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp)17
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h (renamed from doc/src/snippets/declarative/qtbinding/custompalette/main.qml)29
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/main.qml)15
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp63
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/MyItem.qml56
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/loading.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/main.cpp90
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h56
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/main.cpp62
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/newelements.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/standalone.qml44
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml54
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h71
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp58
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml47
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp61
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/resources/main.qml5
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml50
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h64
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp)53
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml48
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml55
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp59
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h)20
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro3
-rwxr-xr-xdoc/src/template/scripts/functions.js6
-rw-r--r--doc/src/template/style/narrow.css1
-rwxr-xr-xdoc/src/template/style/style.css84
-rw-r--r--examples/declarative/cppextensions/plugins/README2
-rw-r--r--examples/declarative/modelviews/listview/highlightranges.qml20
-rw-r--r--examples/network/bearermonitor/bearermonitor.cpp22
-rw-r--r--examples/network/bearermonitor/bearermonitor.h4
-rw-r--r--examples/network/bearermonitor/bearermonitor.pro3
-rw-r--r--examples/network/bearermonitor/bearermonitor_maemo.ui601
-rw-r--r--examples/network/bearermonitor/main.cpp9
-rw-r--r--examples/network/bearermonitor/sessionwidget.cpp4
-rw-r--r--examples/network/bearermonitor/sessionwidget.h5
-rw-r--r--examples/symbianpkgrules.pri5
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.h4
-rw-r--r--examples/webkit/imageanalyzer/mainwindow.h2
-rw-r--r--mkspecs/common/clang.conf3
-rw-r--r--mkspecs/common/g++-base.conf30
-rw-r--r--mkspecs/common/g++-macx.conf (renamed from mkspecs/common/g++-mac.conf)2
-rw-r--r--mkspecs/common/g++-unix.conf2
-rw-r--r--mkspecs/common/g++.conf25
-rw-r--r--mkspecs/common/gcc-base-macx.conf (renamed from mkspecs/common/gcc-base-mac.conf)0
-rw-r--r--mkspecs/common/gcc-base.conf18
-rw-r--r--mkspecs/common/llvm.conf3
-rw-r--r--mkspecs/common/symbian/symbian.conf9
-rw-r--r--mkspecs/features/qttest_p4.prf3
-rw-r--r--mkspecs/features/symbian/application_icon.prf12
-rw-r--r--mkspecs/features/symbian/default_post.prf19
-rw-r--r--mkspecs/features/symbian/qt_config.prf2
-rw-r--r--mkspecs/features/symbian/symbian_building.prf26
-rw-r--r--mkspecs/linux-llvm/qmake.conf2
-rw-r--r--mkspecs/macx-g++/qmake.conf7
-rw-r--r--mkspecs/macx-g++40/qmake.conf11
-rw-r--r--mkspecs/macx-g++42/qmake.conf11
-rw-r--r--mkspecs/macx-llvm/qmake.conf2
-rwxr-xr-xmkspecs/macx-xcode/qmake.conf4
-rw-r--r--mkspecs/symbian-gcce/qmake.conf26
-rw-r--r--mkspecs/unsupported/linux-clang/qmake.conf2
-rw-r--r--mkspecs/unsupported/macx-clang/qmake.conf2
-rw-r--r--mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf3
-rw-r--r--mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf1
-rw-r--r--mkspecs/win32-msvc2003/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2005/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2008/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2010/qmake.conf2
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp4
-rw-r--r--qmake/project.cpp18
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp2
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.cpp2
-rw-r--r--src/corelib/animation/qabstractanimation.cpp146
-rw-r--r--src/corelib/animation/qabstractanimation.h31
-rw-r--r--src/corelib/animation/qabstractanimation_p.h52
-rw-r--r--src/corelib/arch/qatomic_arm.h2
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h25
-rw-r--r--src/corelib/global/qglobal.h26
-rw-r--r--src/corelib/global/qmalloc.cpp16
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp16
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp4
-rw-r--r--src/corelib/io/qsettings.cpp37
-rw-r--r--src/corelib/io/qurl.cpp8
-rw-r--r--src/corelib/io/qurl.h2
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h4
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp4
-rw-r--r--src/corelib/kernel/qvariant.cpp8
-rw-r--r--src/corelib/kernel/qvariant.h2
-rw-r--r--src/corelib/plugin/qelfparser_p.cpp6
-rw-r--r--src/corelib/plugin/qelfparser_p.h5
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp2
-rw-r--r--src/corelib/thread/qthread_unix.cpp1
-rw-r--r--src/corelib/thread/qthread_win.cpp1
-rw-r--r--src/corelib/tools/qbitarray.cpp7
-rw-r--r--src/corelib/tools/qbitarray.h2
-rw-r--r--src/corelib/tools/qbytearray.cpp17
-rw-r--r--src/corelib/tools/qbytearray.h2
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp7
-rw-r--r--src/corelib/tools/qcontiguouscache.h1
-rw-r--r--src/corelib/tools/qhash.cpp14
-rw-r--r--src/corelib/tools/qhash.h2
-rw-r--r--src/corelib/tools/qlinkedlist.cpp7
-rw-r--r--src/corelib/tools/qlinkedlist.h1
-rw-r--r--src/corelib/tools/qlist.cpp7
-rw-r--r--src/corelib/tools/qlist.h1
-rw-r--r--src/corelib/tools/qlocale.cpp1
-rw-r--r--src/corelib/tools/qlocale.h2
-rw-r--r--src/corelib/tools/qmap.cpp14
-rw-r--r--src/corelib/tools/qmap.h2
-rw-r--r--src/corelib/tools/qpoint.cpp6
-rw-r--r--src/corelib/tools/qqueue.cpp8
-rw-r--r--src/corelib/tools/qqueue.h1
-rw-r--r--src/corelib/tools/qregexp.cpp8
-rw-r--r--src/corelib/tools/qregexp.h1
-rw-r--r--src/corelib/tools/qscopedpointer.h12
-rw-r--r--src/corelib/tools/qset.h1
-rw-r--r--src/corelib/tools/qset.qdoc7
-rw-r--r--src/corelib/tools/qshareddata.h14
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h10
-rw-r--r--src/corelib/tools/qsize.cpp6
-rw-r--r--src/corelib/tools/qstack.cpp8
-rw-r--r--src/corelib/tools/qstack.h1
-rw-r--r--src/corelib/tools/qstring.cpp7
-rw-r--r--src/corelib/tools/qstring.h1
-rw-r--r--src/corelib/tools/qvarlengtharray.h124
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc208
-rw-r--r--src/corelib/tools/qvector.cpp7
-rw-r--r--src/corelib/tools/qvector.h7
-rw-r--r--src/dbus/qdbusconnection.cpp6
-rw-r--r--src/declarative/debugger/qdeclarativedebugclient.cpp2
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper.cpp8
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper_p.h6
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice.cpp19
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp44
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h3
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp43
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp63
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp19
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp3
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp3
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp37
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp23
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout.cpp17
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout_p.h1
-rw-r--r--src/declarative/qml/parser/qdeclarativejs.g4
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser.cpp4
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp37
-rw-r--r--src/declarative/qml/qdeclarativecontext.cpp21
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp3
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug.cpp3
-rw-r--r--src/declarative/qml/qdeclarativeparser_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeprivate.h5
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp30
-rw-r--r--src/declarative/qml/qmetaobjectbuilder.cpp12
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp16
-rw-r--r--src/declarative/util/qdeclarativestate.cpp12
-rw-r--r--src/declarative/util/qdeclarativestate_p.h7
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativestategroup_p.h2
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp2
-rw-r--r--src/declarative/util/qdeclarativetransition.cpp6
-rw-r--r--src/declarative/util/qdeclarativetransition_p.h2
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp16
-rw-r--r--src/declarative/util/qdeclarativeview.cpp8
-rw-r--r--src/gui/dialogs/qdialog.cpp2
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp45
-rw-r--r--src/gui/dialogs/qinputdialog.cpp6
-rw-r--r--src/gui/egl/qegl.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp7
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/gui/image/qbitmap.cpp8
-rw-r--r--src/gui/image/qbitmap.h1
-rw-r--r--src/gui/image/qicon.cpp8
-rw-r--r--src/gui/image/qicon.h2
-rw-r--r--src/gui/image/qimage.cpp8
-rw-r--r--src/gui/image/qimage.h1
-rw-r--r--src/gui/image/qimage_ssse3.cpp2
-rw-r--r--src/gui/image/qpicture.cpp8
-rw-r--r--src/gui/image/qpicture.h1
-rw-r--r--src/gui/image/qpixmap.cpp11
-rw-r--r--src/gui/image/qpixmap.h2
-rw-r--r--src/gui/image/qpnghandler.cpp82
-rw-r--r--src/gui/image/qxbmhandler.cpp25
-rw-r--r--src/gui/image/qxpmhandler.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp6
-rw-r--r--src/gui/itemviews/qabstractproxymodel.cpp2
-rw-r--r--src/gui/itemviews/qdirmodel.cpp19
-rw-r--r--src/gui/itemviews/qtableview.cpp4
-rw-r--r--src/gui/kernel/qapplication.cpp21
-rw-r--r--src/gui/kernel/qapplication_mac.mm2
-rw-r--r--src/gui/kernel/qapplication_p.h3
-rw-r--r--src/gui/kernel/qapplication_s60.cpp13
-rw-r--r--src/gui/kernel/qapplication_x11.cpp24
-rw-r--r--src/gui/kernel/qclipboard_s60.cpp10
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm2
-rw-r--r--src/gui/kernel/qeventdispatcher_s60.cpp66
-rw-r--r--src/gui/kernel/qeventdispatcher_s60_p.h24
-rw-r--r--src/gui/kernel/qgesturemanager.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.cpp8
-rw-r--r--src/gui/kernel/qkeysequence.h1
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp5
-rw-r--r--src/gui/kernel/qstandardgestures.cpp10
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm22
-rw-r--r--src/gui/kernel/qt_x11_p.h1
-rw-r--r--src/gui/kernel/qwidget.cpp44
-rw-r--r--src/gui/kernel/qwidget_p.h1
-rw-r--r--src/gui/kernel/qwidget_s60.cpp3
-rw-r--r--src/gui/kernel/qwidget_win.cpp23
-rw-r--r--src/gui/painting/qbackingstore.cpp2
-rw-r--r--src/gui/painting/qbrush.cpp9
-rw-r--r--src/gui/painting/qbrush.h2
-rw-r--r--src/gui/painting/qgrayraster.c35
-rw-r--r--src/gui/painting/qgrayraster_p.h2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp64
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h1
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainterpath.cpp8
-rw-r--r--src/gui/painting/qpainterpath.h1
-rw-r--r--src/gui/painting/qpen.cpp8
-rw-r--r--src/gui/painting/qpen.h1
-rw-r--r--src/gui/painting/qpolygon.cpp16
-rw-r--r--src/gui/painting/qpolygon.h3
-rw-r--r--src/gui/painting/qregion.cpp8
-rw-r--r--src/gui/painting/qregion.h1
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp2
-rw-r--r--src/gui/painting/qunifiedtoolbarsurface_mac.cpp38
-rw-r--r--src/gui/painting/qunifiedtoolbarsurface_mac_p.h1
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp5
-rw-r--r--src/gui/styles/qs60style.cpp116
-rw-r--r--src/gui/styles/qs60style_feedbackinterface_p.h50
-rw-r--r--src/gui/styles/qs60style_p.h11
-rw-r--r--src/gui/styles/qs60style_s60.cpp99
-rw-r--r--src/gui/styles/qstyle.cpp8
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp143
-rw-r--r--src/gui/styles/qstylesheetstyle_p.h20
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp7
-rw-r--r--src/gui/text/qfontengine.cpp19
-rw-r--r--src/gui/text/qfontengine_mac.mm1
-rw-r--r--src/gui/text/qfontengine_p.h2
-rw-r--r--src/gui/text/qstatictext.cpp22
-rw-r--r--src/gui/text/qstatictext_p.h54
-rw-r--r--src/gui/text/qtextcontrol.cpp3
-rw-r--r--src/gui/text/qtextcursor.h1
-rw-r--r--src/gui/text/qtextdocument.cpp8
-rw-r--r--src/gui/text/qtextengine.cpp2
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm22
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm18
-rw-r--r--src/gui/widgets/qmainwindowlayout_p.h1
-rw-r--r--src/gui/widgets/qvalidator.cpp45
-rw-r--r--src/imports/folderlistmodel/folderlistmodel.pro1
-rw-r--r--src/imports/gestures/gestures.pro1
-rw-r--r--src/imports/particles/particles.pro1
-rw-r--r--src/multimedia/audio/audio.pri4
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp21
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp11
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp2
-rw-r--r--src/network/access/qhttp.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp166
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h36
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp40
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h7
-rw-r--r--src/network/access/qhttpnetworkreply.cpp5
-rw-r--r--src/network/access/qhttpnetworkreply_p.h8
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp14
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp12
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp17
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp84
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp49
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h6
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp2
-rw-r--r--src/network/access/qnetworkrequest.cpp10
-rw-r--r--src/network/kernel/qauthenticator.cpp24
-rw-r--r--src/network/kernel/qauthenticator_p.h1
-rw-r--r--src/network/kernel/qnetworkproxy.cpp6
-rw-r--r--src/network/socket/qabstractsocket.cpp30
-rw-r--r--src/network/socket/qabstractsocket.h1
-rw-r--r--src/network/socket/qabstractsocket_p.h7
-rw-r--r--src/network/socket/qlocalserver_unix.cpp2
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp4
-rw-r--r--src/network/ssl/qsslsocket.cpp14
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp75
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h1
-rw-r--r--src/network/ssl/qsslsocket_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp5
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp58
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp20
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h4
-rw-r--r--src/opengl/qgl.cpp18
-rw-r--r--src/opengl/qgl.h1
-rw-r--r--src/opengl/qgl_egl.cpp2
-rw-r--r--src/opengl/qgl_p.h80
-rw-r--r--src/opengl/qgl_x11egl.cpp2
-rw-r--r--src/opengl/qglframebufferobject.cpp4
-rw-r--r--src/opengl/qpaintengine_opengl.cpp8
-rw-r--r--src/opengl/qpixmapdata_x11gl_egl.cpp4
-rw-r--r--src/openvg/qpaintengine_vg.cpp89
-rw-r--r--src/openvg/qpaintengine_vg_p.h1
-rw-r--r--src/openvg/qpixmapdata_vg.cpp27
-rw-r--r--src/openvg/qpixmapdata_vg_p.h2
-rw-r--r--src/openvg/qvg_symbian.cpp1
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.cpp83
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.h27
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp15
-rw-r--r--src/plugins/bearer/connman/qofonoservice_linux.cpp12
-rw-r--r--src/plugins/bearer/corewlan/corewlan.pro5
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm85
-rw-r--r--src/plugins/bearer/icd/icd.pro2
-rw-r--r--src/plugins/bearer/icd/maemo_icd.cpp2
-rw-r--r--src/plugins/bearer/icd/qnetworksession_impl.cpp2
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp2
-rw-r--r--src/plugins/bearer/symbian/symbian.pri2
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp44
-rw-r--r--src/plugins/graphicssystems/meego/dithering.cpp67
-rw-r--r--src/plugins/graphicssystems/meego/qmeegoextensions.cpp80
-rw-r--r--src/plugins/graphicssystems/meego/qmeegoextensions.h22
-rw-r--r--src/plugins/graphicssystems/meego/qmeegographicssystem.cpp55
-rw-r--r--src/plugins/graphicssystems/meego/qmeegographicssystem.h9
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp13
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h9
-rw-r--r--src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp5
-rw-r--r--src/plugins/phonon/mmf/mmf.pro2
-rw-r--r--src/plugins/s60/feedback/feedback.pro18
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback.h54
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback_s60.cpp83
-rw-r--r--src/plugins/s60/s60.pro4
-rw-r--r--src/qt3support/canvas/q3canvas.cpp2
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def225
-rw-r--r--src/s60installs/bwins/QtGuiu.def8
-rw-r--r--src/s60installs/bwins/QtOpenVGu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def1
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def209
-rw-r--r--src/s60installs/eabi/QtGuiu.def11
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def1
-rw-r--r--src/s60installs/qt.iby5
-rw-r--r--src/s60installs/s60installs.pro6
-rw-r--r--src/script/api/qscriptengine.cpp18
-rw-r--r--src/script/api/qscriptengine.h5
-rw-r--r--src/script/api/qscriptvalue.cpp14
-rw-r--r--src/script/bridge/qscriptclassobject.cpp12
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp6
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp239
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp2
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp2
-rw-r--r--src/xmlpatterns/data/qschematime_p.h2
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser.cpp8
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser_setup.cpp2
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachine_p.h4
-rw-r--r--src/xmlpatterns/type/qtypechecker.cpp2
-rw-r--r--tests/arthur/.gitignore2
-rw-r--r--tests/arthur/baselineserver/.gitignore2
-rwxr-xr-xtests/arthur/baselineserver/bin/runserver13
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.cpp505
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.h133
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.pro27
-rw-r--r--tests/arthur/baselineserver/src/htmlpage.cpp238
-rw-r--r--tests/arthur/baselineserver/src/htmlpage.h77
-rw-r--r--tests/arthur/baselineserver/src/main.cpp70
-rw-r--r--tests/arthur/common/baselineprotocol.cpp380
-rw-r--r--tests/arthur/common/baselineprotocol.h164
-rw-r--r--tests/arthur/common/baselineprotocol.pri10
-rw-r--r--tests/arthur/common/lookup3.cpp786
-rw-r--r--tests/arthur/common/paintcommands.cpp29
-rw-r--r--tests/arthur/common/paintcommands.h5
-rw-r--r--tests/auto/collections/collections.pro1
-rw-r--r--tests/auto/collections/tst_collections.cpp212
-rw-r--r--tests/auto/declarative/examples/tst_examples.cpp1
-rw-r--r--tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp78
-rw-r--r--tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h4
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp7
-rw-r--r--tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml6
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml11
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml3
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp15
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/rect.pngbin0 -> 171 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp74
-rw-r--r--tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml16
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp42
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml29
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp13
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic1.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic4.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml159
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml187
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml147
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml171
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.pngbin961 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.pngbin972 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.pngbin962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.pngbin962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.pngbin962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.pngbin970 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.pngbin961 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml2203
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.pngbin1588 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.pngbin1575 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.pngbin1502 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.pngbin1583 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.pngbin1681 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.pngbin1627 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.pngbin1678 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.pngbin1573 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.pngbin1670 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.pngbin1658 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml3079
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml159
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml187
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml147
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml171
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic1.qml114
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic2.qml100
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic3.qml84
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic4.qml110
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.pngbin0 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.pngbin0 -> 704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.pngbin0 -> 695 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.pngbin0 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.pngbin0 -> 701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.pngbin0 -> 704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml2119
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.pngbin961 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.pngbin972 -> 986 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.pngbin962 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.pngbin962 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.pngbin962 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.pngbin970 -> 990 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.pngbin961 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml354
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.0.pngbin1510 -> 1585 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.1.pngbin1510 -> 1580 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.10.pngbin1588 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.11.pngbin1575 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.12.pngbin1502 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.13.pngbin1583 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.14.pngbin1681 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.15.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.16.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.17.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.18.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.19.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.2.pngbin1656 -> 1667 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.3.pngbin1524 -> 1599 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.4.pngbin1678 -> 1663 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.5.pngbin1510 -> 1666 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.6.pngbin1573 -> 1611 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.7.pngbin1669 -> 1579 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.8.pngbin1658 -> 1579 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.9.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.qml2612
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/enforcerange.qml31
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/listview.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.pngbin714 -> 797 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.pngbin798 -> 794 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.pngbin773 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.pngbin773 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.pngbin742 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.pngbin733 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.pngbin712 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.pngbin744 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.pngbin757 -> 817 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.pngbin721 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.pngbin732 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.pngbin813 -> 796 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.pngbin756 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.pngbin752 -> 774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.pngbin752 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.pngbin774 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.pngbin774 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml3182
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml16
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.pngbin0 -> 627 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.pngbin0 -> 626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml951
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.pngbin1418 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.pngbin1430 -> 345 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.pngbin1431 -> 336 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml546
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.pngbin1149 -> 1135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.pngbin1177 -> 1141 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.pngbin1173 -> 1150 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.pngbin1149 -> 1141 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.pngbin0 -> 1132 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml864
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.pngbin0 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.pngbin0 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml298
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.pngbin1418 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.pngbin1431 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.pngbin14875 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.pngbin14875 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.pngbin14863 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml1599
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.pngbin5375 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.pngbin5375 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml607
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.pngbin12749 -> 1549 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.pngbin12667 -> 1140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.pngbin12373 -> 1338 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.pngbin12150 -> 1221 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.pngbin11944 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.pngbin12150 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.pngbin12373 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.pngbin12667 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.pngbin12749 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.pngbin12710 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml2554
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.pngbin11501 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.pngbin11501 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.pngbin11486 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml1599
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.pngbin4656 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.pngbin4656 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml607
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.pngbin10093 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.pngbin10051 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.pngbin9812 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.pngbin9625 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.pngbin9458 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.pngbin9645 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.pngbin9812 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.pngbin10051 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.pngbin10087 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.pngbin10072 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml2879
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.0.pngbin14836 -> 1968 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.1.pngbin14836 -> 1968 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.2.pngbin14821 -> 1974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.3.pngbin14833 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.4.pngbin14833 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.5.pngbin14833 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.qml1324
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.0.pngbin5359 -> 305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.1.pngbin5359 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.qml440
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.0.pngbin12616 -> 1333 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.1.pngbin12538 -> 994 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.2.pngbin12257 -> 1156 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.3.pngbin12035 -> 1057 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.4.pngbin11877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.5.pngbin12046 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.6.pngbin12257 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.7.pngbin12538 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.8.pngbin12616 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.9.pngbin12581 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.qml2554
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test2.qml26
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test3.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.pngbin61731 -> 89135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.pngbin98927 -> 26593 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.pngbin48780 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.pngbin32431 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.pngbin35835 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.pngbin79428 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.pngbin45928 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml1536
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.pngbin23684 -> 30167 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.pngbin29115 -> 14694 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.pngbin27580 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.pngbin14822 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.pngbin21356 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.pngbin31143 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.pngbin26468 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.pngbin16225 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml1796
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.pngbin22832 -> 24327 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.pngbin1427 -> 1423 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.pngbin1357 -> 1424 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.pngbin1405 -> 1397 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.pngbin1427 -> 1453 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml1144
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.pngbin1951 -> 1971 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.pngbin1951 -> 1941 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.pngbin1952 -> 1966 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.pngbin1930 -> 1966 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.pngbin1974 -> 1966 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.pngbin1961 -> 1972 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.pngbin1959 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.pngbin1937 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.pngbin1618 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.pngbin1952 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.pngbin1952 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.pngbin1930 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.pngbin1976 -> 1629 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.pngbin1930 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.pngbin1947 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.pngbin1941 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.pngbin1951 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.pngbin1987 -> 1966 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.pngbin1947 -> 1966 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.pngbin1975 -> 1995 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.pngbin1928 -> 2013 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.pngbin1928 -> 1963 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.pngbin1928 -> 1963 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.pngbin1928 -> 2002 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml6476
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.pngbin1303 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.pngbin1317 -> 1332 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.pngbin1318 -> 1331 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.pngbin1306 -> 1321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.pngbin1308 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.pngbin1303 -> 1321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.pngbin1323 -> 1341 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.pngbin1325 -> 1341 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.pngbin1346 -> 1359 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.pngbin1303 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml742
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.pngbin10219 -> 9951 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.pngbin13469 -> 14613 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.pngbin14051 -> 14056 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml376
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml10
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.pngbin2263 -> 2270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.pngbin2329 -> 2332 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.pngbin2279 -> 2354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.pngbin2263 -> 2280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.pngbin2263 -> 2280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.pngbin2308 -> 2311 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.pngbin2280 -> 2286 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml894
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.pngbin2412 -> 2412 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.pngbin2443 -> 2373 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.pngbin2398 -> 2404 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.pngbin2390 -> 2390 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.pngbin2416 -> 2416 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.pngbin2395 -> 2395 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml264
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.pngbin2782 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml268
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml65
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.pngbin1306 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.pngbin1303 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.pngbin1303 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.pngbin1306 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml1807
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml45
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml)3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png)bin46895 -> 46895 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png)bin765 -> 765 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png)bin20653 -> 20653 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png)bin303 -> 303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.pngbin0 -> 16437 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.pngbin0 -> 16543 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml615
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.pngbin0 -> 975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.pngbin0 -> 1244 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.pngbin0 -> 1225 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.pngbin0 -> 1243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.pngbin0 -> 1230 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.pngbin0 -> 1244 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.pngbin0 -> 1242 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.pngbin17294 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.pngbin17394 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.pngbin17524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.pngbin17572 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml1135
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.pngbin959 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.pngbin1244 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.pngbin1299 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.pngbin1224 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.pngbin1243 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.pngbin1230 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.pngbin1231 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.pngbin1239 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.pngbin1241 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.pngbin1237 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.pngbin1229 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.pngbin0 -> 2388 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.pngbin0 -> 1895 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.pngbin0 -> 1895 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml25
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml131
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml7
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml23
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.pngbin0 -> 422 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.pngbin0 -> 422 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.pngbin0 -> 1640 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.pngbin0 -> 1400 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.pngbin0 -> 1400 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.pngbin2276 -> 1706 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml130
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.pngbin4818 -> 3564 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.pngbin4089 -> 3271 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.pngbin3128 -> 2549 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.pngbin1963 -> 1574 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml480
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.pngbin736 -> 2883 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml146
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.pngbin1002 -> 1150 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml130
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.pngbin0 -> 2795 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.pngbin0 -> 2456 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.pngbin0 -> 2038 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.pngbin0 -> 1317 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml991
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.pngbin596 -> 2285 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.pngbin0 -> 2284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.pngbin0 -> 1197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.pngbin0 -> 1197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.pngbin0 -> 556 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml1166
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.pngbin1604 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml279
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.pngbin4818 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.pngbin4089 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.pngbin3128 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.pngbin1963 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml991
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.pngbin103018 -> 96247 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml340
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.pngbin0 -> 3481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.pngbin0 -> 53503 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.pngbin136492 -> 118835 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml348
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.pngbin0 -> 77252 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.pngbin0 -> 101974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.pngbin94120 -> 77181 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml340
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.pngbin0 -> 53503 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.pngbin121122 -> 103375 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml348
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml121
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml23
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml93
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml18
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml21
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.pngbin793 -> 3636 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.pngbin795 -> 3611 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.pngbin803 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.pngbin805 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.pngbin805 -> 3609 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.pngbin805 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.pngbin799 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.pngbin799 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.pngbin803 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml3050
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.pngbin365 -> 3273 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.pngbin365 -> 3265 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.pngbin366 -> 3266 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.pngbin362 -> 3245 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml530
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.pngbin0 -> 5123 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.pngbin0 -> 5500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.pngbin0 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.pngbin0 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.pngbin0 -> 6163 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.pngbin0 -> 6785 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.pngbin0 -> 6943 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.pngbin0 -> 7043 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.pngbin0 -> 7428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.pngbin0 -> 6860 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.pngbin0 -> 8659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.pngbin0 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.pngbin0 -> 11626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.pngbin0 -> 11869 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.pngbin0 -> 12264 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.pngbin0 -> 12607 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.pngbin0 -> 13243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.pngbin0 -> 13260 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.pngbin0 -> 13260 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml2467
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.pngbin0 -> 3171 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.pngbin0 -> 3603 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.pngbin0 -> 3152 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.pngbin0 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.pngbin0 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.pngbin0 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.pngbin0 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.pngbin0 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.pngbin0 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml1499
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.pngbin0 -> 2483 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.pngbin0 -> 2474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.pngbin0 -> 2480 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.pngbin0 -> 2443 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml1371
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.pngbin0 -> 4006 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.pngbin0 -> 4293 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.pngbin0 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.pngbin0 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.pngbin0 -> 4683 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.pngbin0 -> 5114 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.pngbin0 -> 5270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.pngbin0 -> 5401 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.pngbin0 -> 5591 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.pngbin0 -> 5261 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.pngbin0 -> 6051 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.pngbin0 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.pngbin1110 -> 8764 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.pngbin1110 -> 8922 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.pngbin1110 -> 9175 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.pngbin1110 -> 9553 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.pngbin1110 -> 9975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.pngbin1110 -> 9977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.pngbin1110 -> 9977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml844
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.pngbin3322 -> 3171 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.pngbin3323 -> 3603 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.pngbin3325 -> 3152 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.pngbin3332 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.pngbin3329 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.pngbin3818 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.pngbin3333 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.pngbin3332 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.pngbin3347 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml3050
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.pngbin0 -> 4006 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.pngbin0 -> 4293 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.pngbin0 -> 4683 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.pngbin0 -> 5114 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.pngbin0 -> 5270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.pngbin0 -> 5401 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.pngbin0 -> 5591 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.pngbin0 -> 5261 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.pngbin0 -> 6072 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml10
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.pngbin793 -> 3613 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.pngbin796 -> 4140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.pngbin804 -> 3593 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.pngbin805 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.pngbin805 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml2966
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.pngbin0 -> 703 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.pngbin0 -> 1360 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.pngbin0 -> 2031 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml1043
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml107
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.pngbin0 -> 3153 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.pngbin0 -> 3622 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.pngbin0 -> 3163 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.pngbin0 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.pngbin0 -> 3143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml1551
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.pngbin716 -> 580 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.pngbin1352 -> 1073 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.pngbin2047 -> 1672 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml376
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.pngbin1245 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml50
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.pngbin3137 -> 2659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.pngbin3195 -> 2696 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.pngbin3853 -> 3331 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.pngbin3171 -> 2659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.pngbin3228 -> 2682 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.pngbin3198 -> 2695 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.pngbin3310 -> 2825 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.pngbin3233 -> 2681 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.pngbin3607 -> 3111 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.pngbin3657 -> 3178 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.pngbin3262 -> 2806 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml1386
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.pngbin3314 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.pngbin3377 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.pngbin3323 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.pngbin3325 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.pngbin3322 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.pngbin3322 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.pngbin3326 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.pngbin3814 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.pngbin3324 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml2966
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.pngbin999 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.pngbin1880 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.pngbin2962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.pngbin1245 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.pngbin0 -> 248 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/MyRect.0.pngbin0 -> 135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/MyRect.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.pngbin29725 -> 25197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml276
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic1.qml24
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic2.qml24
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic3.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic4.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml323
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml331
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml347
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml419
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml323
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml331
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml347
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml419
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.qml312
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.qml320
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.qml336
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.qml408
-rw-r--r--tests/auto/declarative/qmlvisual/shared/README7
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestText.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestTextInput.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/shared/Vera.ttfbin0 -> 65932 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/shared/qmldir3
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp12
-rw-r--r--tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml115
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml3
-rw-r--r--tests/auto/exceptionsafety/exceptionsafety.pro1
-rw-r--r--tests/auto/guiapplauncher/guiapplauncher.pro1
-rw-r--r--tests/auto/lancelot/.gitignore1
-rw-r--r--tests/auto/lancelot/lancelot.pro15
-rw-r--r--tests/auto/lancelot/scripts/aliasing.qps156
-rw-r--r--tests/auto/lancelot/scripts/arcs.qps68
-rw-r--r--tests/auto/lancelot/scripts/arcs2.qps47
-rw-r--r--tests/auto/lancelot/scripts/background.qps136
-rw-r--r--tests/auto/lancelot/scripts/background_brush.qps5
-rw-r--r--tests/auto/lancelot/scripts/beziers.qps147
-rw-r--r--tests/auto/lancelot/scripts/bitmaps.qps166
-rw-r--r--tests/auto/lancelot/scripts/borderimage.qps120
-rw-r--r--tests/auto/lancelot/scripts/brush_pens.qps104
-rw-r--r--tests/auto/lancelot/scripts/brushes.qps79
-rw-r--r--tests/auto/lancelot/scripts/clippaths.qps60
-rw-r--r--tests/auto/lancelot/scripts/clipping.qps182
-rw-r--r--tests/auto/lancelot/scripts/clipping_state.qps47
-rw-r--r--tests/auto/lancelot/scripts/cliprects.qps59
-rw-r--r--tests/auto/lancelot/scripts/conical_gradients.qps85
-rw-r--r--tests/auto/lancelot/scripts/conical_gradients_perspectives.qps64
-rw-r--r--tests/auto/lancelot/scripts/dashes.qps268
-rw-r--r--tests/auto/lancelot/scripts/degeneratebeziers.qps10
-rw-r--r--tests/auto/lancelot/scripts/deviceclipping.qps48
-rw-r--r--tests/auto/lancelot/scripts/drawpoints.qps101
-rw-r--r--tests/auto/lancelot/scripts/ellipses.qps86
-rw-r--r--tests/auto/lancelot/scripts/filltest.qps413
-rw-r--r--tests/auto/lancelot/scripts/gradients.qps44
-rw-r--r--tests/auto/lancelot/scripts/image_formats.qps81
-rw-r--r--tests/auto/lancelot/scripts/images.qps106
-rw-r--r--tests/auto/lancelot/scripts/images2.qps145
-rw-r--r--tests/auto/lancelot/scripts/join_cap_styles.qps63
-rw-r--r--tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps68
-rw-r--r--tests/auto/lancelot/scripts/linear_gradients.qps144
-rw-r--r--tests/auto/lancelot/scripts/linear_gradients_perspectives.qps62
-rw-r--r--tests/auto/lancelot/scripts/linear_resolving_gradients.qps66
-rw-r--r--tests/auto/lancelot/scripts/lineconsistency.qps72
-rw-r--r--tests/auto/lancelot/scripts/linedashes.qps94
-rw-r--r--tests/auto/lancelot/scripts/linedashes2.qps154
-rw-r--r--tests/auto/lancelot/scripts/linedashes2_aa.qps5
-rw-r--r--tests/auto/lancelot/scripts/lines.qps558
-rw-r--r--tests/auto/lancelot/scripts/lines2.qps179
-rw-r--r--tests/auto/lancelot/scripts/pathfill.qps38
-rw-r--r--tests/auto/lancelot/scripts/paths.qps34
-rw-r--r--tests/auto/lancelot/scripts/paths_aa.qps4
-rw-r--r--tests/auto/lancelot/scripts/pens.qps133
-rw-r--r--tests/auto/lancelot/scripts/pens_aa.qps6
-rw-r--r--tests/auto/lancelot/scripts/pens_cosmetic.qps110
-rw-r--r--tests/auto/lancelot/scripts/perspectives.qps72
-rw-r--r--tests/auto/lancelot/scripts/perspectives2.qps309
-rw-r--r--tests/auto/lancelot/scripts/pixmap_rotation.qps30
-rw-r--r--tests/auto/lancelot/scripts/pixmap_scaling.qps224
-rw-r--r--tests/auto/lancelot/scripts/pixmap_subpixel.qps117
-rw-r--r--tests/auto/lancelot/scripts/pixmaps.qps106
-rw-r--r--tests/auto/lancelot/scripts/porter_duff.qps251
-rw-r--r--tests/auto/lancelot/scripts/porter_duff2.qps261
-rw-r--r--tests/auto/lancelot/scripts/primitives.qps184
-rw-r--r--tests/auto/lancelot/scripts/radial_gradients.qps99
-rw-r--r--tests/auto/lancelot/scripts/radial_gradients_perspectives.qps62
-rw-r--r--tests/auto/lancelot/scripts/rasterops.qps87
-rw-r--r--tests/auto/lancelot/scripts/sizes.qps150
-rw-r--r--tests/auto/lancelot/scripts/text.qps124
-rw-r--r--tests/auto/lancelot/scripts/text_perspectives.qps102
-rw-r--r--tests/auto/lancelot/scripts/tiled_pixmap.qps84
-rw-r--r--tests/auto/lancelot/tst_lancelot.cpp302
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp2
-rw-r--r--tests/auto/other.pro1
-rw-r--r--tests/auto/platformquirks.h122
-rw-r--r--tests/auto/q_func_info/q_func_info.pro1
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp5
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp17
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp8
-rw-r--r--tests/auto/qalgorithms/tst_qalgorithms.cpp23
-rw-r--r--tests/auto/qanimationgroup/qanimationgroup.pro1
-rw-r--r--tests/auto/qatomicint/qatomicint.pro1
-rw-r--r--tests/auto/qatomicpointer/qatomicpointer.pro1
-rw-r--r--tests/auto/qbitarray/qbitarray.pro1
-rw-r--r--tests/auto/qbitarray/tst_qbitarray.cpp9
-rw-r--r--tests/auto/qboxlayout/tst_qboxlayout.cpp5
-rw-r--r--tests/auto/qbrush/tst_qbrush.cpp9
-rw-r--r--tests/auto/qbuffer/qbuffer.pro1
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp9
-rw-r--r--tests/auto/qbytearray/qbytearray.pro1
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp9
-rw-r--r--tests/auto/qbytearraymatcher/qbytearraymatcher.pro1
-rw-r--r--tests/auto/qcache/qcache.pro1
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp5
-rw-r--r--tests/auto/qchar/qchar.pro1
-rw-r--r--tests/auto/qcolumnview/tst_qcolumnview.cpp21
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp14
-rw-r--r--tests/auto/qcomplextext/tst_qcomplextext.cpp39
-rw-r--r--tests/auto/qcontiguouscache/qcontiguouscache.pro1
-rw-r--r--tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp13
-rw-r--r--tests/auto/qcoreapplication/qcoreapplication.pro1
-rw-r--r--tests/auto/qcryptographichash/qcryptographichash.pro1
-rw-r--r--tests/auto/qdate/qdate.pro1
-rw-r--r--tests/auto/qdatetime/qdatetime.pro1
-rw-r--r--tests/auto/qdebug/qdebug.pro1
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro1
-rw-r--r--tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp12
-rw-r--r--tests/auto/qeasingcurve/qeasingcurve.pro1
-rw-r--r--tests/auto/qelapsedtimer/qelapsedtimer.pro1
-rw-r--r--tests/auto/qevent/qevent.pro1
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp2
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro1
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp8
-rw-r--r--tests/auto/qflags/qflags.pro1
-rw-r--r--tests/auto/qfuture/qfuture.pro1
-rw-r--r--tests/auto/qfuturewatcher/qfuturewatcher.pro1
-rw-r--r--tests/auto/qgetputenv/qgetputenv.pro1
-rw-r--r--tests/auto/qgl/tst_qgl.cpp122
-rw-r--r--tests/auto/qglobal/qglobal.pro1
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp6
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp69
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp12
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp148
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp15
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp17
-rw-r--r--tests/auto/qhash/qhash.pro1
-rw-r--r--tests/auto/qhash/tst_qhash.cpp11
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp29
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp54
-rw-r--r--tests/auto/qicon/tst_qicon.cpp16
-rw-r--r--tests/auto/qimage/tst_qimage.cpp15
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp98
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp4
-rw-r--r--tests/auto/qinputdialog/tst_qinputdialog.cpp8
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp10
-rw-r--r--tests/auto/qlayout/tst_qlayout.cpp5
-rw-r--r--tests/auto/qlibrary/qlibrary.pro1
-rw-r--r--tests/auto/qline/qline.pro1
-rw-r--r--tests/auto/qlist/tst_qlist.cpp7
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp35
-rw-r--r--tests/auto/qlistwidget/tst_qlistwidget.cpp13
-rw-r--r--tests/auto/qmainwindow/tst_qmainwindow.cpp4
-rw-r--r--tests/auto/qmap/qmap.pro1
-rw-r--r--tests/auto/qmap/tst_qmap.cpp12
-rw-r--r--tests/auto/qmargins/qmargins.pro1
-rw-r--r--tests/auto/qmath/qmath.pro1
-rw-r--r--tests/auto/qmdiarea/tst_qmdiarea.cpp19
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp13
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp4
-rw-r--r--tests/auto/qmetatype/qmetatype.pro1
-rw-r--r--tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp4
-rw-r--r--tests/auto/qmutex/qmutex.pro1
-rw-r--r--tests/auto/qmutexlocker/qmutexlocker.pro1
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp551
-rw-r--r--tests/auto/qnumeric/qnumeric.pro1
-rw-r--r--tests/auto/qobject/qobject.pro1
-rw-r--r--tests/auto/qobject/tst_qobject.cpp78
-rw-r--r--tests/auto/qobjectrace/qobjectrace.pro1
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp84
-rw-r--r--tests/auto/qpainterpath/tst_qpainterpath.cpp13
-rw-r--r--tests/auto/qpathclipper/tst_qpathclipper.cpp3
-rw-r--r--tests/auto/qpauseanimation/tst_qpauseanimation.cpp5
-rw-r--r--tests/auto/qpen/tst_qpen.cpp9
-rw-r--r--tests/auto/qpicture/tst_qpicture.cpp13
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp70
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp1
-rw-r--r--tests/auto/qplugin/qplugin.pro1
-rw-r--r--tests/auto/qpluginloader/qpluginloader.pro1
-rw-r--r--tests/auto/qpoint/qpoint.pro1
-rw-r--r--tests/auto/qpolygon/tst_qpolygon.cpp10
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp12
-rw-r--r--tests/auto/qprocessenvironment/qprocessenvironment.pro1
-rw-r--r--tests/auto/qqueue/qqueue.pro1
-rw-r--r--tests/auto/qrand/qrand.pro1
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro1
-rw-r--r--tests/auto/qreadwritelock/qreadwritelock.pro1
-rw-r--r--tests/auto/qrect/qrect.pro1
-rw-r--r--tests/auto/qregexp/qregexp.pro1
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp9
-rw-r--r--tests/auto/qregion/tst_qregion.cpp10
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro1
-rw-r--r--tests/auto/qringbuffer/qringbuffer.pro1
-rw-r--r--tests/auto/qscopedpointer/qscopedpointer.pro1
-rw-r--r--tests/auto/qscriptable/tst_qscriptable.cpp4
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp61
-rw-r--r--tests/auto/qscriptcontext/tst_qscriptcontext.cpp207
-rw-r--r--tests/auto/qscriptengine/idtranslatable-unicode.js5
-rw-r--r--tests/auto/qscriptengine/qscriptengine.qrc2
-rw-r--r--tests/auto/qscriptengine/translatable-unicode.js9
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.qmbin0 -> 209 bytes
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.ts26
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.qmbin0 -> 322 bytes
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.ts37
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp384
-rw-r--r--tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp94
-rw-r--r--tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro3
-rw-r--r--tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp79
-rw-r--r--tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro10
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/__init__.js6
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp75
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro7
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc6
-rw-r--r--tests/auto/qscriptextensionplugin/test/test.pro18
-rw-r--r--tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp167
-rw-r--r--tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp157
-rw-r--r--tests/auto/qscriptvalue/qscriptvalue.pro8
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp1593
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h404
-rw-r--r--tests/auto/qscriptvaluegenerated/.gitignore1
-rw-r--r--tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro18
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/data.txt (renamed from tests/auto/qscriptvalue/testgen/data.txt)8
-rwxr-xr-xtests/auto/qscriptvaluegenerated/testgen/gen.py (renamed from tests/auto/qscriptvalue/testgen/gen.py)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/main.cpp (renamed from tests/auto/qscriptvalue/testgen/main.cpp)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgen.pro (renamed from tests/auto/qscriptvalue/testgen/testgen.pro)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp (renamed from tests/auto/qscriptvalue/testgen/testgenerator.cpp)41
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgenerator.h (renamed from tests/auto/qscriptvalue/testgen/testgenerator.h)0
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp116
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h370
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp (renamed from tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp)887
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp (renamed from tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp)572
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp (renamed from tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp)10
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp (renamed from tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp)208
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp (renamed from tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp)1106
-rw-r--r--tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp21
-rw-r--r--tests/auto/qsemaphore/qsemaphore.pro1
-rw-r--r--tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro1
-rw-r--r--tests/auto/qset/qset.pro1
-rw-r--r--tests/auto/qset/tst_qset.cpp11
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro1
-rw-r--r--tests/auto/qsignalspy/qsignalspy.pro1
-rw-r--r--tests/auto/qsize/qsize.pro1
-rw-r--r--tests/auto/qsizef/qsizef.pro1
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp12
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h2
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp131
-rw-r--r--tests/auto/qsslcertificate/qsslcertificate.pro3
-rw-r--r--tests/auto/qstate/qstate.pro1
-rw-r--r--tests/auto/qstl/qstl.pro1
-rw-r--r--tests/auto/qstring/qstring.pro1
-rw-r--r--tests/auto/qstring/tst_qstring.cpp13
-rw-r--r--tests/auto/qstringbuilder1/qstringbuilder1.pro1
-rw-r--r--tests/auto/qstringbuilder2/qstringbuilder2.pro1
-rw-r--r--tests/auto/qstringbuilder3/qstringbuilder3.pro1
-rw-r--r--tests/auto/qstringbuilder4/qstringbuilder4.pro1
-rw-r--r--tests/auto/qstringlist/qstringlist.pro1
-rw-r--r--tests/auto/qstringmatcher/qstringmatcher.pro1
-rw-r--r--tests/auto/qstringref/qstringref.pro1
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp40
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp24
-rw-r--r--tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro2
-rw-r--r--tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro2
-rw-r--r--tests/auto/qtconcurrentmap/qtconcurrentmap.pro2
-rw-r--r--tests/auto/qtconcurrentrun/qtconcurrentrun.pro2
-rw-r--r--tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp38
-rw-r--r--tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro2
-rw-r--r--tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro1
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp1
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp11
-rw-r--r--tests/auto/qthread/qthread.pro1
-rw-r--r--tests/auto/qthread/tst_qthread.cpp14
-rw-r--r--tests/auto/qthreadonce/qthreadonce.pro1
-rw-r--r--tests/auto/qthreadpool/qthreadpool.pro1
-rw-r--r--tests/auto/qthreadstorage/qthreadstorage.pro1
-rw-r--r--tests/auto/qtime/qtime.pro1
-rw-r--r--tests/auto/qtimeline/qtimeline.pro1
-rw-r--r--tests/auto/qtimer/qtimer.pro1
-rw-r--r--tests/auto/qtmd5/qtmd5.pro1
-rw-r--r--tests/auto/qtokenautomaton/qtokenautomaton.pro1
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp23
-rw-r--r--tests/auto/qtreewidget/tst_qtreewidget.cpp6
-rw-r--r--tests/auto/qurl/qurl.pro1
-rw-r--r--tests/auto/qurl/tst_qurl.cpp9
-rw-r--r--tests/auto/quuid/quuid.pro1
-rw-r--r--tests/auto/qvariant/tst_qvariant.cpp11
-rw-r--r--tests/auto/qvarlengtharray/qvarlengtharray.pro1
-rw-r--r--tests/auto/qvector/qvector.pro1
-rw-r--r--tests/auto/qvector/tst_qvector.cpp12
-rw-r--r--tests/auto/qwaitcondition/qwaitcondition.pro1
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp2
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp24
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro1
-rw-r--r--tests/auto/qwritelocker/qwritelocker.pro1
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp27
-rw-r--r--tests/auto/script.pro2
-rw-r--r--tests/auto/selftests/selftests.pro1
-rw-r--r--tests/auto/symbols/tst_symbols.cpp2
-rw-r--r--tests/auto/utf8/utf8.pro1
-rw-r--r--tests/benchmarks/benchmarks.pro3
-rw-r--r--tests/benchmarks/corelib/corelib.pro10
-rw-r--r--tests/benchmarks/corelib/tools/qstring/data.cpp19
-rw-r--r--tests/benchmarks/corelib/tools/qstring/data.h7
-rw-r--r--tests/benchmarks/corelib/tools/qstring/generatelist.pl8
-rw-r--r--tests/benchmarks/corelib/tools/qstring/main.cpp2
-rw-r--r--tests/benchmarks/declarative/declarative.pro2
-rw-r--r--tests/benchmarks/gui/gui.pro7
-rw-r--r--tests/benchmarks/network/network.pro7
-rw-r--r--tests/benchmarks/opengl/opengl.pro2
-rw-r--r--tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp314
-rw-r--r--tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp28
-rw-r--r--tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp862
-rw-r--r--tests/benchmarks/script/script.pro11
-rw-r--r--tests/benchmarks/script/sunspider/sunspider.pro20
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-cube.js337
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-morph.js54
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-raytrace.js441
-rw-r--r--tests/benchmarks/script/sunspider/tests/VERSION1
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-binary-trees.js50
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-fannkuch.js66
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-nbody.js169
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-nsieve.js38
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js32
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js21
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js28
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js32
-rw-r--r--tests/benchmarks/script/sunspider/tests/controlflow-recursive.js25
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-aes.js422
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-md5.js286
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-sha1.js224
-rw-r--r--tests/benchmarks/script/sunspider/tests/date-format-tofte.js299
-rw-r--r--tests/benchmarks/script/sunspider/tests/date-format-xparb.js417
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-cordic.js95
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-partial-sums.js33
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-spectral-norm.js51
-rw-r--r--tests/benchmarks/script/sunspider/tests/regexp-dna.js1712
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-base64.js135
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-fasta.js85
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-tagcloud.js265
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-unpack-code.js68
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-validate-input.js89
-rw-r--r--tests/benchmarks/script/sunspider/tst_sunspider.cpp129
-rw-r--r--tests/benchmarks/script/v8/tests/README.txt79
-rw-r--r--tests/benchmarks/script/v8/tests/base.js284
-rw-r--r--tests/benchmarks/script/v8/tests/crypto.js1698
-rw-r--r--tests/benchmarks/script/v8/tests/deltablue.js880
-rw-r--r--tests/benchmarks/script/v8/tests/earley-boyer.js4684
-rw-r--r--tests/benchmarks/script/v8/tests/raytrace.js904
-rw-r--r--tests/benchmarks/script/v8/tests/regexp.js1764
-rw-r--r--tests/benchmarks/script/v8/tests/richards.js539
-rw-r--r--tests/benchmarks/script/v8/tests/splay.js394
-rw-r--r--tests/benchmarks/script/v8/tst_v8.cpp142
-rw-r--r--tests/benchmarks/script/v8/v8.pro20
-rw-r--r--tests/benchmarks/svg/svg.pro2
-rw-r--r--tests/benchmarks/trusted-benchmarks.pri8
-rw-r--r--tools/linguist/linguist/mainwindow.cpp4
-rw-r--r--tools/linguist/linguist/printout.cpp2
-rw-r--r--tools/linguist/shared/ts.dtd23
-rw-r--r--tools/macdeployqt/shared/shared.cpp2
-rw-r--r--tools/porting/src/preprocessorcontrol.cpp2
-rw-r--r--tools/porting/src/textreplacement.h4
-rw-r--r--tools/qconfig/qconfig.pro1
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp4
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdocconf253
-rw-r--r--tools/qdoc3/htmlgenerator.cpp12
-rw-r--r--tools/qdoc3/qdoc3.pro4
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf34
-rw-r--r--tools/qdoc3/tokenizer.h2
-rw-r--r--tools/qdoc3/tree.cpp71
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.cpp79
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.h101
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync_p.h60
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro4
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp9
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.h7
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.cpp29
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.h4
-rw-r--r--tools/qml/main.cpp3
-rw-r--r--tools/qml/qdeclarativetester.cpp34
-rw-r--r--tools/qml/qdeclarativetester.h1
-rw-r--r--tools/qml/qmlruntime.h3
-rw-r--r--tools/runonphone/serenum_unix.cpp35
-rw-r--r--translations/assistant_de.ts37
-rw-r--r--translations/assistant_ru.ts581
-rw-r--r--translations/designer_ru.ts172
-rw-r--r--translations/linguist_ru.ts955
-rw-r--r--translations/qt_de.ts4
-rw-r--r--translations/qt_ru.ts166
-rw-r--r--translations/qtconfig_ru.ts82
-rw-r--r--translations/qvfb_ru.ts139
1465 files changed, 91675 insertions, 64370 deletions
diff --git a/bin/elf2e32_qtwrapper.pl b/bin/elf2e32_qtwrapper.pl
index 694d54a34c..4eeb09809b 100644..100755
--- a/bin/elf2e32_qtwrapper.pl
+++ b/bin/elf2e32_qtwrapper.pl
@@ -75,26 +75,106 @@ while (1) {
last;
}
- if ($buildingLibrary) {
+ if ($buildingLibrary && $runCount == 1) {
my $tmpDefFile;
- my $defFile;
- open($defFile, "< $defoutput[1]") or die("Could not open $defoutput[1]");
+ my $newDefFile;
+ my $origDefFile;
+ my $savedNewDefFileLine = "";
+ if ($definput[1]) {
+ open($origDefFile, "< $definput[1]") or die("Could not open $definput[1]");
+ }
+ open($newDefFile, "< $defoutput[1]") or die("Could not open $defoutput[1]");
open($tmpDefFile, "> $defoutput[1].tmp") or die("Could not open $defoutput[1].tmp");
+ print($tmpDefFile "EXPORTS\n");
$fixupFile = "$defoutput[1].tmp";
- while (<$defFile>) {
- s/\r//;
- s/\n//;
- next if (/; NEW:/);
- if (/([a-z0-9_]+) @/i) {
- if (exists($fixupSymbols{$1})) {
- s/ ABSENT//;
- } elsif (s/; MISSING://) {
- s/$/ ABSENT/;
+ while (1) {
+ my $origDefLine;
+ my $origSym;
+ my $origOrdinal;
+ my $origExtraData;
+ my $newDefLine;
+ my $newSym;
+ my $newOrdinal;
+ my $newExtraData;
+ my $defLine;
+ my $sym;
+ my $ordinal;
+ my $extraData;
+ if ($definput[1]) {
+ # Read from original def file, and skip non-symbol lines
+ while (1) {
+ $origDefLine = <$origDefFile>;
+ if (defined($origDefLine)) {
+ $origDefLine =~ s/[\n\r]//;
+ if ($origDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i) {
+ $origSym = $1;
+ $origOrdinal = $2;
+ $origExtraData = $3;
+ last;
+ }
+ } else {
+ last;
+ }
+ }
+ }
+
+ if ($savedNewDefFileLine) {
+ # This happens if the new def file was missing an entry.
+ $newDefLine = $savedNewDefFileLine;
+ $newDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i or die("$0: Shouldn't happen");
+ $newSym = $1;
+ $newOrdinal = $2;
+ $newExtraData = $3;
+ } else {
+ # Read from new def file, and skip non-symbol lines
+ while (1) {
+ $newDefLine = <$newDefFile>;
+ if (defined($newDefLine)) {
+ $newDefLine =~ s/[\n\r]//;
+ if ($newDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i) {
+ $newSym = $1;
+ $newOrdinal = $2;
+ $newExtraData = $3;
+ last;
+ }
+ } else {
+ last;
+ }
}
}
- print($tmpDefFile "$_\n");
+ $savedNewDefFileLine = "";
+ last if (!defined($origDefLine) && !defined($newDefLine));
+
+ if (defined($origOrdinal) && (!defined($newOrdinal) || $origOrdinal != $newOrdinal)) {
+ # If the symbol is missing from the new def file, use the original symbol.
+ $savedNewDefFileLine = $newDefLine;
+ $defLine = $origDefLine;
+ $sym = $origSym;
+ $ordinal = $origOrdinal;
+ $extraData = $origExtraData;
+ } else {
+ $defLine = $newDefLine;
+ $sym = $newSym;
+ $ordinal = $newOrdinal;
+ if ($newExtraData =~ /ABSENT/) {
+ # Special case to keep "DATA [0-9]+" data in absent entries.
+ $extraData = $origExtraData;
+ } else {
+ $extraData = $newExtraData;
+ }
+ }
+ if (exists($fixupSymbols{$sym})) {
+ # Fix symbols that have returned after first being marked ABSENT.
+ $extraData =~ s/ ABSENT//;
+ } elsif ($defLine =~ s/; MISSING://) {
+ # Auto-absent symbols.
+ $extraData .= " ABSENT";
+ }
+ print($tmpDefFile "\t$sym \@ $ordinal $extraData\n");
}
- close($defFile);
+ print($tmpDefFile "\n");
+ close($origDefFile) if ($definput[1]);
+ close($newDefFile);
close($tmpDefFile);
$definput[1] = "$defoutput[1].tmp";
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
index 06ab116623..5230480418 100755
--- a/bin/patch_capabilities.pl
+++ b/bin/patch_capabilities.pl
@@ -269,6 +269,9 @@ if (@ARGV)
if (@capabilitiesSpecified)
{
$commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesSpecified));
+ $executeNeeded = 1;
+ my $capString = join(" ", @capabilitiesSpecified);
+ print ("Patching: Patching the the Vendor ID to 0 and the capabilities used to: \"$capString\" in \"$binaryBaseName\".\n");
} else {
# Test which capabilities are present and then restrict them to the allowed set.
# This avoid raising the capabilities of apps that already have none.
diff --git a/bin/syncqt b/bin/syncqt
index faa357538e..99562fb54e 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -694,10 +694,7 @@ my @ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dis
my @ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h", "qatomic_arm.h", "qatomic_armv7.h" );
my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" );
my %colliding_headers = ();
-my %inject_headers;
-# Force generation of forwarding header for qconfig.h if (and only if) we can't
-# find the header by normal means.
-%inject_headers = ( "$basedir/src/corelib/global" => ( "*qconfig.h" ) ) unless (-e "$basedir/src/corelib/global/qconfig.h");
+my %inject_headers = ( "$basedir/src/corelib/global" => ( "qconfig.h" ) ); # all from build dir
foreach my $lib (@modules_to_sync) {
#iteration info
@@ -799,7 +796,12 @@ foreach my $lib (@modules_to_sync) {
#calc files and "copy" them
foreach my $subdir (@subdirs) {
my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
- push @headers, $inject_headers{$subdir} if (defined $inject_headers{$subdir});
+ if (defined $inject_headers{$subdir}) {
+ foreach my $if ($inject_headers{$subdir}) {
+ @headers = grep(!/^\Q$if\E$/, @headers); #in case we configure'd previously
+ push @headers, "*".$if;
+ }
+ }
foreach my $header (@headers) {
my $shadow = ($header =~ s/^\*//);
$header = 0 if($header =~ /^ui_.*.h/);
@@ -877,7 +879,7 @@ foreach my $lib (@modules_to_sync) {
@headers = ( "$out_basedir/include/$lib/private/$header" );
}
foreach(@headers) { #sync them
- $header_copies++ if(syncHeader($_, $iheader, $copy_headers, $ts));
+ $header_copies++ if(syncHeader($_, $iheader, $copy_headers && !$shadow, $ts));
}
if($public_header) {
diff --git a/config.tests/mac/corewlan/corewlan.pro b/config.tests/mac/corewlan/corewlan.pro
index 8451af3e5b..a9c256043c 100644
--- a/config.tests/mac/corewlan/corewlan.pro
+++ b/config.tests/mac/corewlan/corewlan.pro
@@ -1,3 +1,3 @@
-SOURCES = corewlantest.mm
+OBJECTIVE_SOURCES = corewlantest.mm
LIBS += -framework CoreWLAN -framework Foundation
CONFIG -= app_bundle qt
diff --git a/config.tests/symbian/audio/audio.pro b/config.tests/symbian/audio/audio.pro
index b2a1986c71..b496341a36 100644
--- a/config.tests/symbian/audio/audio.pro
+++ b/config.tests/symbian/audio/audio.pro
@@ -6,4 +6,5 @@ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/common
INCLUDEPATH += $${EPOCROOT}epoc32/include/platform
LIBS += -lmmfdevsound
+CONFIG -= qt
QT =
diff --git a/config.tests/symbian/simple/simple.pro b/config.tests/symbian/simple/simple.pro
index fa086c982e..9c60d622f2 100644
--- a/config.tests/symbian/simple/simple.pro
+++ b/config.tests/symbian/simple/simple.pro
@@ -1,4 +1,5 @@
TEMPLATE = app
+CONFIG -= qt
QT =
SOURCES += main.cpp
diff --git a/configure b/configure
index 61f2413e55..15be36ec6b 100755
--- a/configure
+++ b/configure
@@ -2553,14 +2553,8 @@ if [ "$OPT_SHADOW" = "yes" ]; then
ShadowMkspecs()
{
rm -rf "$outpath/mkspecs/$1"
- if [ "$UNAME_SYSTEM" = "Linux" ]; then
- # This works with GNU coreutils, and is needed for ScratchBox
- cp -rs "$relpath/mkspecs/$1" "$outpath/mkspecs/$1"
- else
- # A simple "cp -rs" doesn't work on Mac. :(
- find "$relpath/mkspecs/$1" -type d | sed "s,^$relpath,$outpath," | xargs mkdir -p
- find "$relpath/mkspecs/$1" -type f | sed "s,^$relpath/,," | xargs -n 1 -I % ln -s "$relpath/%" "$outpath/%"
- fi
+ find "$relpath/mkspecs/$1" -type d | sed "s,^$relpath,$outpath," | xargs mkdir -p
+ find "$relpath/mkspecs/$1" -type f | sed "s,^$relpath/,," | while read f; do ln -s "$relpath/$f" "$outpath/$f"; done
}
# Special case for mkspecs/features directory.
@@ -3289,7 +3283,7 @@ else
CFG_FRAMEWORK=no
fi
-QMAKE_CONF_COMPILER=`getQMakeConf "$XQMAKESPEC" | grep "\(^\| \)QMAKE_CXX[^_A-Z0-9]" | sed "s,.* *= *\(.*\)$,\1," | tail -1`
+QMAKE_CONF_COMPILER=`getQMakeConf "$XQMAKESPEC" | grep "^QMAKE_CXX[^_A-Z0-9]" | sed "s,.* *= *\(.*\)$,\1," | tail -1`
TEST_COMPILER="$CXX"
[ -z "$TEST_COMPILER" ] && TEST_COMPILER=$QMAKE_CONF_COMPILER
@@ -3467,11 +3461,9 @@ if [ -z "$QT_INSTALL_PREFIX" ]; then
if [ "$PLATFORM" != "$XPLATFORM" ]; then
QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}"
fi
- elif [ -d "$EPOCROOT" ]; then
- if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
- QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
- QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
- fi
+ elif [ -d "$EPOCROOT" ] && [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
+ QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
+ QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
else
QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
fi
@@ -4701,27 +4693,37 @@ fi
# $2: optional transformation
# relies on $QMAKESPEC, $COMPILER_CONF and $mkfile being set correctly, as the latter
# is where the resulting variable is written to
+# Assumes that the optional transformation produces the same variable name for each hit
setBootstrapVariable()
{
getQMakeConf | $AWK '/^('"$1"')[^_A-Z0-9]/ { print $0; }' | ( [ -n "$2" ] && sed "$2" ; [ -z "$2" ] && cat ) | $AWK '
+BEGIN {
+ variable = ""
+ combinedValue = ""
+}
{
- varLength = index($0, "=") - 1
- valStart = varLength + 2
- if (substr($0, varLength, 1) == "+") {
- varLength = varLength - 1
- valStart = valStart + 1
+ valStart = index($0, "=") + 1
+
+ append = 0
+ if (substr($0, valStart - 2, 1) == "+") {
+ append = 1
+ }
+
+ variable = substr($0, 0, valStart - 2 - append)
+ value = substr($0, valStart)
+ gsub("[ \t]+", "", variable)
+ gsub("^[ \t]+", "", value)
+ gsub("[ \t]+$", "", value)
+
+ if (append == 1 && length(combinedValue) > 0) {
+ combinedValue = combinedValue " " value
+ } else {
+ combinedValue = value
}
- var = substr($0, 0, varLength)
- gsub("[ \t]+", "", var)
- val = substr($0, valStart)
- printf "%s_%s = %s\n", var, NR, val
}
END {
- if (length(var) > 0) {
- printf "%s =", var
- for (i = 1; i <= NR; ++i)
- printf " $(%s_%s)", var, i
- printf "\n"
+ if (length(combinedValue) > 0) {
+ printf "%s = %s\n", variable, combinedValue
}
}' >> "$mkfile"
}
diff --git a/demos/chip/view.cpp b/demos/chip/view.cpp
index 7af30740a6..d6a641eeb5 100644
--- a/demos/chip/view.cpp
+++ b/demos/chip/view.cpp
@@ -48,15 +48,29 @@
#include <qmath.h>
+void GraphicsView::wheelEvent(QWheelEvent *e)
+{
+ if (e->modifiers() & Qt::ControlModifier) {
+ if (e->delta() > 0)
+ view->zoomIn(6);
+ else
+ view->zoomOut(6);
+ e->accept();
+ } else {
+ QGraphicsView::wheelEvent(e);
+ }
+}
+
View::View(const QString &name, QWidget *parent)
: QFrame(parent)
{
setFrameStyle(Sunken | StyledPanel);
- graphicsView = new QGraphicsView;
+ graphicsView = new GraphicsView(this);
graphicsView->setRenderHint(QPainter::Antialiasing, false);
graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
graphicsView->setOptimizationFlags(QGraphicsView::DontSavePainterState);
graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
+ graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
QSize iconSize(size, size);
@@ -111,6 +125,15 @@ View::View(const QString &name, QWidget *parent)
// Label layout
QHBoxLayout *labelLayout = new QHBoxLayout;
label = new QLabel(name);
+ label2 = new QLabel(tr("Pointer Mode"));
+ selectModeButton = new QToolButton;
+ selectModeButton->setText(tr("Select"));
+ selectModeButton->setCheckable(true);
+ selectModeButton->setChecked(true);
+ dragModeButton = new QToolButton;
+ dragModeButton->setText(tr("Drag"));
+ dragModeButton->setCheckable(true);
+ dragModeButton->setChecked(false);
antialiasButton = new QToolButton;
antialiasButton->setText(tr("Antialiasing"));
antialiasButton->setCheckable(true);
@@ -126,8 +149,17 @@ View::View(const QString &name, QWidget *parent)
printButton = new QToolButton;
printButton->setIcon(QIcon(QPixmap(":/fileprint.png")));
+ QButtonGroup *pointerModeGroup = new QButtonGroup;
+ pointerModeGroup->setExclusive(true);
+ pointerModeGroup->addButton(selectModeButton);
+ pointerModeGroup->addButton(dragModeButton);
+
labelLayout->addWidget(label);
labelLayout->addStretch();
+ labelLayout->addWidget(label2);
+ labelLayout->addWidget(selectModeButton);
+ labelLayout->addWidget(dragModeButton);
+ labelLayout->addStretch();
labelLayout->addWidget(antialiasButton);
labelLayout->addWidget(openGlButton);
labelLayout->addWidget(printButton);
@@ -145,6 +177,8 @@ View::View(const QString &name, QWidget *parent)
connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
+ connect(selectModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
+ connect(dragModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing()));
connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL()));
connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft()));
@@ -158,7 +192,7 @@ View::View(const QString &name, QWidget *parent)
QGraphicsView *View::view() const
{
- return graphicsView;
+ return static_cast<QGraphicsView *>(graphicsView);
}
void View::resetView()
@@ -188,6 +222,14 @@ void View::setupMatrix()
setResetButtonEnabled();
}
+void View::togglePointerMode()
+{
+ graphicsView->setDragMode(selectModeButton->isChecked()
+ ? QGraphicsView::RubberBandDrag
+ : QGraphicsView::ScrollHandDrag);
+ graphicsView->setInteractive(selectModeButton->isChecked());
+}
+
void View::toggleOpenGL()
{
#ifndef QT_NO_OPENGL
@@ -212,14 +254,14 @@ void View::print()
#endif
}
-void View::zoomIn()
+void View::zoomIn(int level)
{
- zoomSlider->setValue(zoomSlider->value() + 1);
+ zoomSlider->setValue(zoomSlider->value() + level);
}
-void View::zoomOut()
+void View::zoomOut(int level)
{
- zoomSlider->setValue(zoomSlider->value() - 1);
+ zoomSlider->setValue(zoomSlider->value() - level);
}
void View::rotateLeft()
diff --git a/demos/chip/view.h b/demos/chip/view.h
index 8047b8b5a4..67c7675e0a 100644
--- a/demos/chip/view.h
+++ b/demos/chip/view.h
@@ -43,12 +43,27 @@
#define VIEW_H
#include <QFrame>
+#include <QGraphicsView>
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
QT_FORWARD_DECLARE_CLASS(QLabel)
QT_FORWARD_DECLARE_CLASS(QSlider)
QT_FORWARD_DECLARE_CLASS(QToolButton)
+class View;
+
+class GraphicsView : public QGraphicsView
+{
+ Q_OBJECT
+public:
+ GraphicsView(View *v) : QGraphicsView(), view(v) { }
+
+protected:
+ void wheelEvent(QWheelEvent *);
+
+private:
+ View *view;
+};
+
class View : public QFrame
{
Q_OBJECT
@@ -57,22 +72,27 @@ public:
QGraphicsView *view() const;
+public slots:
+ void zoomIn(int level = 1);
+ void zoomOut(int level = 1);
+
private slots:
void resetView();
void setResetButtonEnabled();
void setupMatrix();
+ void togglePointerMode();
void toggleOpenGL();
void toggleAntialiasing();
void print();
-
- void zoomIn();
- void zoomOut();
void rotateLeft();
void rotateRight();
-
+
private:
- QGraphicsView *graphicsView;
+ GraphicsView *graphicsView;
QLabel *label;
+ QLabel *label2;
+ QToolButton *selectModeButton;
+ QToolButton *dragModeButton;
QToolButton *openGlButton;
QToolButton *antialiasButton;
QToolButton *printButton;
diff --git a/demos/declarative/minehunt/minehunt.cpp b/demos/declarative/minehunt/minehunt.cpp
index 709d9450a7..aaaaaac175 100644
--- a/demos/declarative/minehunt/minehunt.cpp
+++ b/demos/declarative/minehunt/minehunt.cpp
@@ -211,7 +211,7 @@ bool MinehuntGame::flip(int row, int col)
bool MinehuntGame::flag(int row, int col)
{
TileData *t = tile(row, col);
- if(!t || !playing)
+ if(!t || !playing || t->flipped())
return false;
t->setHasFlag(!t->hasFlag());
diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro
index 79843158c2..f591011aba 100644
--- a/demos/declarative/minehunt/minehunt.pro
+++ b/demos/declarative/minehunt/minehunt.pro
@@ -1,7 +1,6 @@
TEMPLATE = app
TARGET = minehunt
QT += declarative
-CONFIG += qt plugin
# Input
HEADERS += minehunt.h
@@ -21,4 +20,4 @@ symbian:{
qmlminehuntfiles.files = MinehuntCore minehunt.qml
DEPLOYMENT = qmlminehuntfiles
}
- \ No newline at end of file
+
diff --git a/demos/declarative/samegame/SamegameCore/Button.qml b/demos/declarative/samegame/SamegameCore/Button.qml
index 7fb7b654bd..140b1968c0 100644
--- a/demos/declarative/samegame/SamegameCore/Button.qml
+++ b/demos/declarative/samegame/SamegameCore/Button.qml
@@ -48,7 +48,7 @@ Rectangle {
signal clicked
- width: buttonLabel.width + 20; height: buttonLabel.height + 6
+ width: buttonLabel.width + 20; height: buttonLabel.height + 20
smooth: true
border { width: 1; color: Qt.darker(activePalette.button) }
radius: 8
@@ -70,6 +70,6 @@ Rectangle {
MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
- id: buttonLabel; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
+ id: buttonLabel; text: container.text; anchors.centerIn: container; color: activePalette.buttonText; font.pixelSize: 24
}
}
diff --git a/demos/declarative/samegame/SamegameCore/samegame.js b/demos/declarative/samegame/SamegameCore/samegame.js
index 9266767738..e618a101e0 100755
--- a/demos/declarative/samegame/SamegameCore/samegame.js
+++ b/demos/declarative/samegame/SamegameCore/samegame.js
@@ -9,12 +9,14 @@ var scoresURL = "";
var gameDuration;
var component = Qt.createComponent(blockSrc);
-//Index function used instead of a 2D array
-function index(column,row) {
- return column + (row * maxColumn);
+// Index function used instead of a 2D array
+function index(column, row)
+{
+ return column + row * maxColumn;
}
-function timeStr(msecs) {
+function timeStr(msecs)
+{
var secs = Math.floor(msecs/1000);
var m = Math.floor(secs/60);
var ret = "" + m + "m " + (secs%60) + "s";
@@ -23,47 +25,48 @@ function timeStr(msecs) {
function startNewGame()
{
- //Delete blocks from previous game
- for(var i = 0; i<maxIndex; i++){
- if(board[i] != null)
+ // Delete blocks from previous game
+ for (var i = 0; i < maxIndex; i++) {
+ if (board[i] != null)
board[i].destroy();
}
- //Calculate board size
+ // Calculate board size
maxColumn = Math.floor(gameCanvas.width/gameCanvas.blockSize);
maxRow = Math.floor(gameCanvas.height/gameCanvas.blockSize);
- maxIndex = maxRow*maxColumn;
+ maxIndex = maxRow * maxColumn;
- //Close dialogs
+ // Close dialogs
nameInputDialog.forceClose();
dialog.forceClose();
- //Initialize Board
+ // Initialize Board
board = new Array(maxIndex);
gameCanvas.score = 0;
- for(var column=0; column<maxColumn; column++){
- for(var row=0; row<maxRow; row++){
- board[index(column,row)] = null;
- createBlock(column,row);
+ for (var column = 0; column < maxColumn; column++) {
+ for (var row = 0; row < maxRow; row++) {
+ board[index(column, row)] = null;
+ createBlock(column, row);
}
}
gameDuration = new Date();
}
-var fillFound;//Set after a floodFill call to the number of blocks found
-var floodBoard;//Set to 1 if the floodFill reaches off that node
-//NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope
+var fillFound; // Set after a floodFill call to the number of blocks found
+var floodBoard; // Set to 1 if the floodFill reaches off that node
+
+// NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope
function handleClick(x,y)
{
var column = Math.floor(x/gameCanvas.blockSize);
var row = Math.floor(y/gameCanvas.blockSize);
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return;
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return;
- //If it's a valid block, remove it and all connected (does nothing if it's not connected)
+ // If it's a valid block, remove it and all connected (does nothing if it's not connected)
floodFill(column,row, -1);
- if(fillFound <= 0)
+ if (fillFound <= 0)
return;
gameCanvas.score += (fillFound - 1) * (fillFound - 1);
shuffleDown();
@@ -72,65 +75,65 @@ function handleClick(x,y)
function floodFill(column,row,type)
{
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return;
var first = false;
- if(type == -1){
+ if (type == -1) {
first = true;
type = board[index(column,row)].type;
-
- //Flood fill initialization
+
+ // Flood fill initialization
fillFound = 0;
floodBoard = new Array(maxIndex);
}
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return;
- if(floodBoard[index(column, row)] == 1 || (!first && type != board[index(column,row)].type))
+ if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type))
return;
floodBoard[index(column, row)] = 1;
- floodFill(column+1,row,type);
- floodFill(column-1,row,type);
- floodFill(column,row+1,type);
- floodFill(column,row-1,type);
- if(first==true && fillFound == 0)
- return;//Can't remove single blocks
- board[index(column,row)].dying = true;
- board[index(column,row)] = null;
+ floodFill(column + 1, row, type);
+ floodFill(column - 1, row, type);
+ floodFill(column, row + 1, type);
+ floodFill(column, row - 1, type);
+ if (first == true && fillFound == 0)
+ return; // Can't remove single blocks
+ board[index(column, row)].dying = true;
+ board[index(column, row)] = null;
fillFound += 1;
}
function shuffleDown()
{
- //Fall down
- for(var column=0; column<maxColumn; column++){
+ // Fall down
+ for (var column = 0; column < maxColumn; column++) {
var fallDist = 0;
- for(var row=maxRow-1; row>=0; row--){
- if(board[index(column,row)] == null){
+ for (var row = maxRow - 1; row >= 0; row--) {
+ if (board[index(column,row)] == null) {
fallDist += 1;
- }else{
- if(fallDist > 0){
- var obj = board[index(column,row)];
- obj.y = (row+fallDist) * gameCanvas.blockSize;
- board[index(column,row+fallDist)] = obj;
- board[index(column,row)] = null;
+ } else {
+ if (fallDist > 0) {
+ var obj = board[index(column, row)];
+ obj.y = (row + fallDist) * gameCanvas.blockSize;
+ board[index(column, row + fallDist)] = obj;
+ board[index(column, row)] = null;
}
}
}
}
- //Fall to the left
+ // Fall to the left
fallDist = 0;
- for(column=0; column<maxColumn; column++){
- if(board[index(column, maxRow - 1)] == null){
+ for (column = 0; column < maxColumn; column++) {
+ if (board[index(column, maxRow - 1)] == null) {
fallDist += 1;
- }else{
- if(fallDist > 0){
- for(row=0; row<maxRow; row++){
- obj = board[index(column,row)];
- if(obj == null)
+ } else {
+ if (fallDist > 0) {
+ for (row = 0; row < maxRow; row++) {
+ obj = board[index(column, row)];
+ if (obj == null)
continue;
- obj.x = (column-fallDist) * gameCanvas.blockSize;
- board[index(column-fallDist,row)] = obj;
- board[index(column,row)] = null;
+ obj.x = (column - fallDist) * gameCanvas.blockSize;
+ board[index(column - fallDist,row)] = obj;
+ board[index(column, row)] = null;
}
}
}
@@ -139,58 +142,59 @@ function shuffleDown()
function victoryCheck()
{
- //awards bonuses for no blocks left
+ // Awards bonuses for no blocks left
var deservesBonus = true;
- for(var column=maxColumn-1; column>=0; column--)
- if(board[index(column, maxRow - 1)] != null)
+ for (var column = maxColumn - 1; column >= 0; column--)
+ if (board[index(column, maxRow - 1)] != null)
deservesBonus = false;
- if(deservesBonus)
+ if (deservesBonus)
gameCanvas.score += 500;
- //Checks for game over
- if(deservesBonus || !(floodMoveCheck(0,maxRow-1, -1))){
+ // Checks for game over
+ if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) {
gameDuration = new Date() - gameDuration;
nameInputDialog.show("You won! Please enter your name: ");
nameInputDialog.initialWidth = nameInputDialog.text.width + 20;
- if(nameInputDialog.name == "")
+ if (nameInputDialog.name == "")
nameInputDialog.width = nameInputDialog.initialWidth;
- nameInputDialog.text.opacity = 0;//Just a spacer
+ nameInputDialog.text.opacity = 0; // Just a spacer
}
}
-//only floods up and right, to see if it can find adjacent same-typed blocks
+// Only floods up and right, to see if it can find adjacent same-typed blocks
function floodMoveCheck(column, row, type)
{
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return false;
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return false;
var myType = board[index(column, row)].type;
- if(type == myType)
+ if (type == myType)
return true;
return floodMoveCheck(column + 1, row, myType) ||
- floodMoveCheck(column, row - 1, board[index(column,row)].type);
+ floodMoveCheck(column, row - 1, board[index(column, row)].type);
}
-function createBlock(column,row){
+function createBlock(column,row)
+{
// Note that we don't wait for the component to become ready. This will
// only work if the block QML is a local file. Otherwise the component will
// not be ready immediately. There is a statusChanged signal on the
// component you could use if you want to wait to load remote files.
- if(component.status == Component.Ready){
+ if (component.status == Component.Ready) {
var dynamicObject = component.createObject(gameCanvas);
- if(dynamicObject == null){
+ if (dynamicObject == null) {
console.log("error creating block");
console.log(component.errorString());
return false;
}
dynamicObject.type = Math.floor(Math.random() * 3);
- dynamicObject.x = column*gameCanvas.blockSize;
- dynamicObject.y = row*gameCanvas.blockSize;
+ dynamicObject.x = column * gameCanvas.blockSize;
+ dynamicObject.y = row * gameCanvas.blockSize;
dynamicObject.width = gameCanvas.blockSize;
dynamicObject.height = gameCanvas.blockSize;
dynamicObject.spawned = true;
- board[index(column,row)] = dynamicObject;
- }else{
+ board[index(column, row)] = dynamicObject;
+ } else {
console.log("error loading block component");
console.log(component.errorString());
return false;
@@ -198,23 +202,35 @@ function createBlock(column,row){
return true;
}
-function saveHighScore(name) {
- if(scoresURL!="")
+function saveHighScore(name)
+{
+ if (scoresURL != "")
sendHighScore(name);
- //OfflineStorage
- var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores",100);
+ // Offline storage
+ var db = openDatabaseSync(
+ "SameGameScores",
+ "1.0",
+ "Local SameGame High Scores",
+ 100
+ );
var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)";
- var data = [name, gameCanvas.score, maxColumn+"x"+maxRow ,Math.floor(gameDuration/1000)];
+ var data = [
+ name,
+ gameCanvas.score,
+ maxColumn + "x" + maxRow,
+ Math.floor(gameDuration / 1000)
+ ];
db.transaction(
function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)');
tx.executeSql(dataStr, data);
- //Only show results for the current grid size
- var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'+maxColumn+"x"+maxRow+'" ORDER BY score desc LIMIT 10');
+ // Only show results for the current grid size
+ var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'
+ + maxColumn + "x" + maxRow + '" ORDER BY score desc LIMIT 10');
var r = "\nHIGH SCORES for this grid size\n\n"
- for(var i = 0; i < rs.rows.length; i++){
- r += (i+1)+". " + rs.rows.item(i).name +' got '
+ for (var i = 0; i < rs.rows.length; i++) {
+ r += (i+1) + ". " + rs.rows.item(i).name + ' got '
+ rs.rows.item(i).score + ' points in '
+ rs.rows.item(i).time + ' seconds.\n';
}
@@ -223,13 +239,15 @@ function saveHighScore(name) {
);
}
-function sendHighScore(name) {
+function sendHighScore(name)
+{
var postman = new XMLHttpRequest()
- var postData = "name="+name+"&score="+gameCanvas.score
- +"&gridSize="+maxColumn+"x"+maxRow +"&time="+Math.floor(gameDuration/1000);
+ var postData = "name=" + name + "&score=" + gameCanvas.score
+ + "&gridSize=" + maxColumn + "x" + maxRow
+ + "&time=" + Math.floor(gameDuration / 1000);
postman.open("POST", scoresURL, true);
postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- postman.onreadystatechange = function() {
+ postman.onreadystatechange = function() {
if (postman.readyState == postman.DONE) {
dialog.show("Your score has been uploaded.");
}
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index f66c40ec16..ab49c04f22 100644
--- a/demos/declarative/samegame/samegame.qml
+++ b/demos/declarative/samegame/samegame.qml
@@ -92,9 +92,7 @@ Rectangle {
enabled: nameInputDialog.initialWidth != 0
}
- onOpened: nameInputText.focus = true;
onClosed: {
- nameInputText.focus = false;
if (nameInputText.text != "")
Logic.saveHighScore(nameInputText.text);
}
@@ -116,7 +114,7 @@ Rectangle {
TextInput {
id: nameInputText
anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
- focus: false
+ focus: visible
autoScroll: false
maximumLength: 24
onTextChanged: {
@@ -133,7 +131,7 @@ Rectangle {
Rectangle {
id: toolBar
- width: parent.width; height: 32
+ width: parent.width; height: 58
color: activePalette.window
anchors.bottom: screen.bottom
@@ -156,6 +154,7 @@ Rectangle {
anchors { right: parent.right; rightMargin: 3; verticalCenter: parent.verticalCenter }
text: "Score: " + gameCanvas.score
font.bold: true
+ font.pixelSize: 24
color: activePalette.windowText
}
}
diff --git a/demos/declarative/snake/snake.qml b/demos/declarative/snake/snake.qml
index 37e64ec3fb..585c0b2f3a 100644
--- a/demos/declarative/snake/snake.qml
+++ b/demos/declarative/snake/snake.qml
@@ -105,7 +105,7 @@ Rectangle {
source: "content/pics/pause.png"
anchors.centerIn: parent;
//opacity is deliberately not animated
- opacity: gameActive && !runtime.isActiveWindow
+ opacity: activeGame && !runtime.isActiveWindow
}
Image {
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml
index 27f72bbeb7..b94d2b8c7d 100644
--- a/demos/qtdemo/xml/examples.xml
+++ b/demos/qtdemo/xml/examples.xml
@@ -19,7 +19,6 @@
<example filename="sub-attaq" name="Sub-attaq" />
<example filename="spectrum" name="Spectrum Analyzer" />
<example filename="declarative/minehunt" name="Minehunt"/>
- <example filename="declarative/snake" name="Snake" executable="false" qml="true"/>
<example filename="deform" name="Vector Deformation" />
<example filename="books" name="Books" />
<example filename="mainwindow" name="Main Window" />
diff --git a/demos/spectrum/app/engine.cpp b/demos/spectrum/app/engine.cpp
index 119a0e3b42..cd847fea10 100644
--- a/demos/spectrum/app/engine.cpp
+++ b/demos/spectrum/app/engine.cpp
@@ -85,6 +85,7 @@ Engine::Engine(QObject *parent)
, m_state(QAudio::StoppedState)
, m_generateTone(false)
, m_file(0)
+ , m_analysisFile(0)
, m_availableAudioInputDevices
(QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
, m_audioInputDevice(QAudioDeviceInfo::defaultInputDevice())
@@ -96,15 +97,19 @@ Engine::Engine(QObject *parent)
, m_audioOutputDevice(QAudioDeviceInfo::defaultOutputDevice())
, m_audioOutput(0)
, m_playPosition(0)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
, m_dataLength(0)
+ , m_levelBufferLength(0)
, m_rmsLevel(0.0)
, m_peakLevel(0.0)
- , m_spectrumLengthBytes(0)
+ , m_spectrumBufferLength(0)
, m_spectrumAnalyser()
, m_spectrumPosition(0)
, m_count(0)
{
qRegisterMetaType<FrequencySpectrum>("FrequencySpectrum");
+ qRegisterMetaType<WindowFunction>("WindowFunction");
CHECKED_CONNECT(&m_spectrumAnalyser,
SIGNAL(spectrumChanged(FrequencySpectrum)),
this,
@@ -132,34 +137,33 @@ Engine::~Engine()
bool Engine::loadFile(const QString &fileName)
{
+ reset();
bool result = false;
- m_generateTone = false;
-
- Q_ASSERT(!fileName.isEmpty());
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
- m_file = new QFile(fileName, this);
- m_file->setFileName(fileName);
- Q_ASSERT(m_file->exists());
- if (m_file->open(QFile::ReadOnly)) {
- m_wavFile.readHeader(*m_file);
- if (isPCMS16LE(m_wavFile.format())) {
+ Q_ASSERT(!fileName.isEmpty());
+ m_file = new WavFile(this);
+ if (m_file->open(fileName)) {
+ if (isPCMS16LE(m_file->fileFormat())) {
result = initialize();
} else {
emit errorMessage(tr("Audio format not supported"),
- formatToString(m_wavFile.format()));
+ formatToString(m_file->fileFormat()));
}
} else {
emit errorMessage(tr("Could not open file"), fileName);
}
-
- delete m_file;
- m_file = 0;
-
+ if (result) {
+ m_analysisFile = new WavFile(this);
+ m_analysisFile->open(fileName);
+ }
return result;
}
bool Engine::generateTone(const Tone &tone)
{
+ reset();
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = true;
m_tone = tone;
@@ -172,6 +176,7 @@ bool Engine::generateTone(const Tone &tone)
bool Engine::generateSweptTone(qreal amplitude)
{
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = true;
m_tone.startFreq = 1;
@@ -185,41 +190,18 @@ bool Engine::generateSweptTone(qreal amplitude)
bool Engine::initializeRecord()
{
+ reset();
ENGINE_DEBUG << "Engine::initializeRecord";
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = false;
m_tone = SweptTone();
return initialize();
}
-qint64 Engine::bufferDuration() const
-{
- return BufferDurationUs;
-}
-
-qint64 Engine::dataDuration() const
+qint64 Engine::bufferLength() const
{
- qint64 result = 0;
- if (QAudioFormat() != m_format)
- result = audioDuration(m_format, m_dataLength);
- return result;
-}
-
-qint64 Engine::audioBufferLength() const
-{
- qint64 length = 0;
- if (QAudio::ActiveState == m_state || QAudio::IdleState == m_state) {
- Q_ASSERT(QAudioFormat() != m_format);
- switch (m_mode) {
- case QAudio::AudioInput:
- length = m_audioInput->bufferSize();
- break;
- case QAudio::AudioOutput:
- length = m_audioOutput->bufferSize();
- break;
- }
- }
- return length;
+ return m_file ? m_file->size() : m_bufferLength;
}
void Engine::setWindowFunction(WindowFunction type)
@@ -252,7 +234,7 @@ void Engine::startRecording()
this, SLOT(audioNotify()));
m_count = 0;
m_dataLength = 0;
- emit dataDurationChanged(0);
+ emit dataLengthChanged(0);
m_audioInputIODevice = m_audioInput->start();
CHECKED_CONNECT(m_audioInputIODevice, SIGNAL(readyRead()),
this, SLOT(audioDataReady()));
@@ -275,7 +257,6 @@ void Engine::startPlayback()
} else {
m_spectrumAnalyser.cancelCalculation();
spectrumChanged(0, 0, FrequencySpectrum());
-
setPlayPosition(0, true);
stopRecording();
m_mode = QAudio::AudioOutput;
@@ -284,10 +265,17 @@ void Engine::startPlayback()
CHECKED_CONNECT(m_audioOutput, SIGNAL(notify()),
this, SLOT(audioNotify()));
m_count = 0;
- m_audioOutputIODevice.close();
- m_audioOutputIODevice.setBuffer(&m_buffer);
- m_audioOutputIODevice.open(QIODevice::ReadOnly);
- m_audioOutput->start(&m_audioOutputIODevice);
+ if (m_file) {
+ m_file->seek(0);
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ m_audioOutput->start(m_file);
+ } else {
+ m_audioOutputIODevice.close();
+ m_audioOutputIODevice.setBuffer(&m_buffer);
+ m_audioOutputIODevice.open(QIODevice::ReadOnly);
+ m_audioOutput->start(&m_audioOutputIODevice);
+ }
}
}
}
@@ -332,40 +320,55 @@ void Engine::audioNotify()
{
switch (m_mode) {
case QAudio::AudioInput: {
- const qint64 recordPosition =
- qMin(BufferDurationUs, m_audioInput->processedUSecs());
+ const qint64 recordPosition = qMin(m_bufferLength, audioLength(m_format, m_audioInput->processedUSecs()));
setRecordPosition(recordPosition);
-
- // Calculate level of most recently captured data
- qint64 levelLength = audioLength(m_format, LevelWindowUs);
- levelLength = qMin(m_dataLength, levelLength);
- const qint64 levelPosition = m_dataLength - levelLength;
- calculateLevel(levelPosition, levelLength);
-
- // Calculate spectrum of most recently captured data
- if (m_dataLength >= m_spectrumLengthBytes) {
- const qint64 spectrumPosition = m_dataLength - m_spectrumLengthBytes;
+ const qint64 levelPosition = m_dataLength - m_levelBufferLength;
+ if (levelPosition >= 0)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (m_dataLength >= m_spectrumBufferLength) {
+ const qint64 spectrumPosition = m_dataLength - m_spectrumBufferLength;
calculateSpectrum(spectrumPosition);
}
+ emit bufferChanged(0, m_dataLength, m_buffer);
}
break;
case QAudio::AudioOutput: {
- const qint64 playPosition =
- qMin(dataDuration(), m_audioOutput->processedUSecs());
- setPlayPosition(playPosition);
-
- qint64 analysisPosition = audioLength(m_format, playPosition);
-
- // Calculate level of data starting at current playback position
- const qint64 levelLength = audioLength(m_format, LevelWindowUs);
- if (analysisPosition + levelLength < m_dataLength)
- calculateLevel(analysisPosition, levelLength);
-
- if (analysisPosition + m_spectrumLengthBytes < m_dataLength)
- calculateSpectrum(analysisPosition);
-
- if (dataDuration() == playPosition)
- stopPlayback();
+ const qint64 playPosition = audioLength(m_format, m_audioOutput->processedUSecs());
+ setPlayPosition(qMin(bufferLength(), playPosition));
+ const qint64 levelPosition = playPosition - m_levelBufferLength;
+ const qint64 spectrumPosition = playPosition - m_spectrumBufferLength;
+ if (m_file) {
+ if (levelPosition > m_bufferPosition ||
+ spectrumPosition > m_bufferPosition ||
+ qMax(m_levelBufferLength, m_spectrumBufferLength) > m_dataLength) {
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ // Data needs to be read into m_buffer in order to be analysed
+ const qint64 readPos = qMax(qint64(0), qMin(levelPosition, spectrumPosition));
+ const qint64 readEnd = qMin(m_analysisFile->size(), qMax(levelPosition + m_levelBufferLength, spectrumPosition + m_spectrumBufferLength));
+ const qint64 readLen = readEnd - readPos + audioLength(m_format, WaveformWindowDuration);
+ qDebug() << "Engine::audioNotify [1]"
+ << "analysisFileSize" << m_analysisFile->size()
+ << "readPos" << readPos
+ << "readLen" << readLen;
+ if (m_analysisFile->seek(readPos + m_analysisFile->headerLength())) {
+ m_buffer.resize(readLen);
+ m_bufferPosition = readPos;
+ m_dataLength = m_analysisFile->read(m_buffer.data(), readLen);
+ qDebug() << "Engine::audioNotify [2]" << "bufferPosition" << m_bufferPosition << "dataLength" << m_dataLength;
+ } else {
+ qDebug() << "Engine::audioNotify [2]" << "file seek error";
+ }
+ emit bufferChanged(m_bufferPosition, m_dataLength, m_buffer);
+ }
+ } else {
+ if (playPosition >= m_dataLength)
+ stopPlayback();
+ }
+ if (levelPosition >= 0 && levelPosition + m_levelBufferLength < m_bufferPosition + m_dataLength)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (spectrumPosition >= 0 && spectrumPosition + m_spectrumBufferLength < m_bufferPosition + m_dataLength)
+ calculateSpectrum(spectrumPosition);
}
break;
}
@@ -376,27 +379,32 @@ void Engine::audioStateChanged(QAudio::State state)
ENGINE_DEBUG << "Engine::audioStateChanged from" << m_state
<< "to" << state;
- if (QAudio::StoppedState == state) {
- // Check error
- QAudio::Error error = QAudio::NoError;
- switch (m_mode) {
- case QAudio::AudioInput:
- error = m_audioInput->error();
- break;
- case QAudio::AudioOutput:
- error = m_audioOutput->error();
- break;
- }
- if (QAudio::NoError != error) {
- reset();
- return;
+ if (QAudio::IdleState == state && m_file && m_file->pos() == m_file->size()) {
+ stopPlayback();
+ } else {
+ if (QAudio::StoppedState == state) {
+ // Check error
+ QAudio::Error error = QAudio::NoError;
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ error = m_audioInput->error();
+ break;
+ case QAudio::AudioOutput:
+ error = m_audioOutput->error();
+ break;
+ }
+ if (QAudio::NoError != error) {
+ reset();
+ return;
+ }
}
+ setState(state);
}
- setState(state);
}
void Engine::audioDataReady()
{
+ Q_ASSERT(0 == m_bufferPosition);
const qint64 bytesReady = m_audioInput->bytesReady();
const qint64 bytesSpace = m_buffer.size() - m_dataLength;
const qint64 bytesToRead = qMin(bytesReady, bytesSpace);
@@ -407,9 +415,7 @@ void Engine::audioDataReady()
if (bytesRead) {
m_dataLength += bytesRead;
-
- const qint64 duration = audioDuration(m_format, m_dataLength);
- emit dataDurationChanged(duration);
+ emit dataLengthChanged(dataLength());
}
if (m_buffer.size() == m_dataLength)
@@ -419,9 +425,7 @@ void Engine::audioDataReady()
void Engine::spectrumChanged(const FrequencySpectrum &spectrum)
{
ENGINE_DEBUG << "Engine::spectrumChanged" << "pos" << m_spectrumPosition;
- const qint64 positionUs = audioDuration(m_format, m_spectrumPosition);
- const qint64 lengthUs = audioDuration(m_format, m_spectrumLengthBytes);
- emit spectrumChanged(positionUs, lengthUs, spectrum);
+ emit spectrumChanged(m_spectrumPosition, m_spectrumBufferLength, spectrum);
}
@@ -429,12 +433,8 @@ void Engine::spectrumChanged(const FrequencySpectrum &spectrum)
// Private functions
//-----------------------------------------------------------------------------
-void Engine::reset()
+void Engine::resetAudioDevices()
{
- stopRecording();
- stopPlayback();
- setState(QAudio::AudioInput, QAudio::StoppedState);
- setFormat(QAudioFormat());
delete m_audioInput;
m_audioInput = 0;
m_audioInputIODevice = 0;
@@ -442,55 +442,71 @@ void Engine::reset()
delete m_audioOutput;
m_audioOutput = 0;
setPlayPosition(0);
- m_buffer.clear();
- m_dataLength = 0;
m_spectrumPosition = 0;
- emit dataDurationChanged(0);
setLevel(0.0, 0.0, 0);
}
+void Engine::reset()
+{
+ stopRecording();
+ stopPlayback();
+ setState(QAudio::AudioInput, QAudio::StoppedState);
+ setFormat(QAudioFormat());
+ m_generateTone = false;
+ delete m_file;
+ m_file = 0;
+ delete m_analysisFile;
+ m_analysisFile = 0;
+ m_buffer.clear();
+ m_bufferPosition = 0;
+ m_bufferLength = 0;
+ m_dataLength = 0;
+ emit dataLengthChanged(0);
+ resetAudioDevices();
+}
+
bool Engine::initialize()
{
bool result = false;
- reset();
+ QAudioFormat format = m_format;
if (selectFormat()) {
- const qint64 bufferLength = audioLength(m_format, BufferDurationUs);
- m_buffer.resize(bufferLength);
- m_buffer.fill(0);
- emit bufferDurationChanged(BufferDurationUs);
-
- if (m_generateTone) {
- if (0 == m_tone.endFreq) {
- const qreal nyquist = nyquistFrequency(m_format);
- m_tone.endFreq = qMin(qreal(SpectrumHighFreq), nyquist);
- }
-
- // Call function defined in utils.h, at global scope
- ::generateTone(m_tone, m_format, m_buffer);
- m_dataLength = m_buffer.size();
- emit dataDurationChanged(bufferDuration());
- setRecordPosition(bufferDuration());
- result = true;
- } else if (m_file) {
- const qint64 length = m_wavFile.readData(*m_file, m_buffer, m_format);
- if (length) {
- m_dataLength = length;
- emit dataDurationChanged(dataDuration());
- setRecordPosition(dataDuration());
+ if (m_format != format) {
+ resetAudioDevices();
+ if (m_file) {
+ emit bufferLengthChanged(bufferLength());
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, 0, m_buffer);
+ setRecordPosition(bufferLength());
result = true;
+ } else {
+ m_bufferLength = audioLength(m_format, BufferDurationUs);
+ m_buffer.resize(m_bufferLength);
+ m_buffer.fill(0);
+ emit bufferLengthChanged(bufferLength());
+ if (m_generateTone) {
+ if (0 == m_tone.endFreq) {
+ const qreal nyquist = nyquistFrequency(m_format);
+ m_tone.endFreq = qMin(qreal(SpectrumHighFreq), nyquist);
+ }
+ // Call function defined in utils.h, at global scope
+ ::generateTone(m_tone, m_format, m_buffer);
+ m_dataLength = m_bufferLength;
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, m_dataLength, m_buffer);
+ setRecordPosition(m_bufferLength);
+ result = true;
+ } else {
+ emit bufferChanged(0, 0, m_buffer);
+ m_audioInput = new QAudioInput(m_audioInputDevice, m_format, this);
+ m_audioInput->setNotifyInterval(NotifyIntervalMs);
+ result = true;
+ }
}
- } else {
- m_audioInput = new QAudioInput(m_audioInputDevice, m_format, this);
- m_audioInput->setNotifyInterval(NotifyIntervalMs);
- result = true;
+ m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this);
+ m_audioOutput->setNotifyInterval(NotifyIntervalMs);
}
-
- m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this);
- m_audioOutput->setNotifyInterval(NotifyIntervalMs);
- m_spectrumLengthBytes = SpectrumLengthSamples *
- (m_format.sampleSize() / 8) * m_format.channels();
} else {
if (m_file)
emit errorMessage(tr("Audio format not supported"),
@@ -501,6 +517,8 @@ bool Engine::initialize()
emit errorMessage(tr("No common input / output format found"), "");
}
+ ENGINE_DEBUG << "Engine::initialize" << "m_bufferLength" << m_bufferLength;
+ ENGINE_DEBUG << "Engine::initialize" << "m_dataLength" << m_dataLength;
ENGINE_DEBUG << "Engine::initialize" << "format" << m_format;
return result;
@@ -510,21 +528,15 @@ bool Engine::selectFormat()
{
bool foundSupportedFormat = false;
- if (m_file) {
- // Header is read from the WAV file; just need to check whether
- // it is supported by the audio output device
- QAudioFormat format = m_wavFile.format();
- if (m_audioOutputDevice.isFormatSupported(m_wavFile.format())) {
- setFormat(m_wavFile.format());
+ if (m_file || QAudioFormat() != m_format) {
+ QAudioFormat format = m_format;
+ if (m_file)
+ // Header is read from the WAV file; just need to check whether
+ // it is supported by the audio output device
+ format = m_file->fileFormat();
+ if (m_audioOutputDevice.isFormatSupported(format)) {
+ setFormat(format);
foundSupportedFormat = true;
- } else {
- // Try flipping mono <-> stereo
- const int channels = (format.channels() == 1) ? 2 : 1;
- format.setChannels(channels);
- if (m_audioOutputDevice.isFormatSupported(format)) {
- setFormat(format);
- foundSupportedFormat = true;
- }
}
} else {
@@ -648,12 +660,12 @@ void Engine::calculateLevel(qint64 position, qint64 length)
Q_UNUSED(position)
Q_UNUSED(length)
#else
- Q_ASSERT(position + length <= m_dataLength);
+ Q_ASSERT(position + length <= m_bufferPosition + m_dataLength);
qreal peakLevel = 0.0;
qreal sum = 0.0;
- const char *ptr = m_buffer.constData() + position;
+ const char *ptr = m_buffer.constData() + position - m_bufferPosition;
const char *const end = ptr + length;
while (ptr < end) {
const qint16 value = *reinterpret_cast<const qint16*>(ptr);
@@ -679,18 +691,18 @@ void Engine::calculateSpectrum(qint64 position)
#ifdef DISABLE_SPECTRUM
Q_UNUSED(position)
#else
- Q_ASSERT(position + m_spectrumLengthBytes <= m_dataLength);
- Q_ASSERT(0 == m_spectrumLengthBytes % 2); // constraint of FFT algorithm
+ Q_ASSERT(position + m_spectrumBufferLength <= m_bufferPosition + m_dataLength);
+ Q_ASSERT(0 == m_spectrumBufferLength % 2); // constraint of FFT algorithm
// QThread::currentThread is marked 'for internal use only', but
// we're only using it for debug output here, so it's probably OK :)
ENGINE_DEBUG << "Engine::calculateSpectrum" << QThread::currentThread()
- << "count" << m_count << "pos" << position << "len" << m_spectrumLengthBytes
+ << "count" << m_count << "pos" << position << "len" << m_spectrumBufferLength
<< "spectrumAnalyser.isReady" << m_spectrumAnalyser.isReady();
if(m_spectrumAnalyser.isReady()) {
- m_spectrumBuffer = QByteArray::fromRawData(m_buffer.constData() + position,
- m_spectrumLengthBytes);
+ m_spectrumBuffer = QByteArray::fromRawData(m_buffer.constData() + position - m_bufferPosition,
+ m_spectrumBufferLength);
m_spectrumPosition = position;
m_spectrumAnalyser.calculate(m_spectrumBuffer, m_format);
}
@@ -701,6 +713,9 @@ void Engine::setFormat(const QAudioFormat &format)
{
const bool changed = (format != m_format);
m_format = format;
+ m_levelBufferLength = audioLength(m_format, LevelWindowUs);
+ m_spectrumBufferLength = SpectrumLengthSamples *
+ (m_format.sampleSize() / 8) * m_format.channels();
if (changed)
emit formatChanged(m_format);
}
diff --git a/demos/spectrum/app/engine.h b/demos/spectrum/app/engine.h
index e14ac8389d..c97083e9de 100644
--- a/demos/spectrum/app/engine.h
+++ b/demos/spectrum/app/engine.h
@@ -91,12 +91,6 @@ public:
QAudio::State state() const { return m_state; }
/**
- * \return Reference to internal audio buffer
- * \note This reference is valid for the lifetime of the Engine
- */
- const QByteArray& buffer() const { return m_buffer; }
-
- /**
* \return Current audio format
* \note May be QAudioFormat() if engine is not initialized
*/
@@ -129,7 +123,7 @@ public:
/**
* Position of the audio input device.
- * \return Position in microseconds.
+ * \return Position in bytes.
*/
qint64 recordPosition() const { return m_recordPosition; }
@@ -147,27 +141,21 @@ public:
/**
* Position of the audio output device.
- * \return Position in microseconds.
+ * \return Position in bytes.
*/
qint64 playPosition() const { return m_playPosition; }
/**
* Length of the internal engine buffer.
- * \return Buffer length in microseconds.
+ * \return Buffer length in bytes.
*/
- qint64 bufferDuration() const;
+ qint64 bufferLength() const;
/**
* Amount of data held in the buffer.
- * \return Data duration in microseconds.
+ * \return Data length in bytes.
*/
- qint64 dataDuration() const;
-
- /**
- * Returns the size of the underlying audio buffer in bytes.
- * This should be an approximation of the capture latency.
- */
- qint64 audioBufferLength() const;
+ qint64 dataLength() const { return m_dataLength; }
/**
* Set window function applied to audio data before spectral analysis.
@@ -203,23 +191,23 @@ signals:
* Length of buffer has changed.
* \param duration Duration in microseconds
*/
- void bufferDurationChanged(qint64 duration);
+ void bufferLengthChanged(qint64 duration);
/**
* Amount of data in buffer has changed.
- * \param duration Duration of data in microseconds
+ * \param Length of data in bytes
*/
- void dataDurationChanged(qint64 duration);
+ void dataLengthChanged(qint64 duration);
/**
* Position of the audio input device has changed.
- * \param position Position in microseconds
+ * \param position Position in bytes
*/
void recordPositionChanged(qint64 position);
/**
* Position of the audio output device has changed.
- * \param position Position in microseconds
+ * \param position Position in bytes
*/
void playPositionChanged(qint64 position);
@@ -233,12 +221,19 @@ signals:
/**
* Spectrum has changed.
- * \param position Position of start of window in microseconds
- * \param length Length of window in microseconds
+ * \param position Position of start of window in bytes
+ * \param length Length of window in bytes
* \param spectrum Resulting frequency spectrum
*/
void spectrumChanged(qint64 position, qint64 length, const FrequencySpectrum &spectrum);
+ /**
+ * Buffer containing audio data has changed.
+ * \param position Position of start of buffer in bytes
+ * \param buffer Buffer
+ */
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+
private slots:
void audioNotify();
void audioStateChanged(QAudio::State state);
@@ -246,6 +241,7 @@ private slots:
void spectrumChanged(const FrequencySpectrum &spectrum);
private:
+ void resetAudioDevices();
bool initialize();
bool selectFormat();
void stopRecording();
@@ -275,8 +271,10 @@ private:
bool m_generateTone;
SweptTone m_tone;
- QFile* m_file;
- WavFile m_wavFile;
+ WavFile* m_file;
+ // We need a second file handle via which to read data into m_buffer
+ // for analysis
+ WavFile* m_analysisFile;
QAudioFormat m_format;
@@ -293,12 +291,15 @@ private:
QBuffer m_audioOutputIODevice;
QByteArray m_buffer;
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
qint64 m_dataLength;
+ int m_levelBufferLength;
qreal m_rmsLevel;
qreal m_peakLevel;
- int m_spectrumLengthBytes;
+ int m_spectrumBufferLength;
QByteArray m_spectrumBuffer;
SpectrumAnalyser m_spectrumAnalyser;
qint64 m_spectrumPosition;
diff --git a/demos/spectrum/app/mainwidget.cpp b/demos/spectrum/app/mainwidget.cpp
index dd51a91d14..4b53bbecdb 100644
--- a/demos/spectrum/app/mainwidget.cpp
+++ b/demos/spectrum/app/mainwidget.cpp
@@ -65,7 +65,7 @@ MainWidget::MainWidget(QWidget *parent)
, m_mode(NoMode)
, m_engine(new Engine(this))
#ifndef DISABLE_WAVEFORM
- , m_waveform(new Waveform(m_engine->buffer(), this))
+ , m_waveform(new Waveform(this))
#endif
, m_progressBar(new ProgressBar(this))
, m_spectrograph(new Spectrograph(this))
@@ -166,19 +166,18 @@ void MainWidget::timerEvent(QTimerEvent *event)
m_infoMessage->setText("");
}
-void MainWidget::positionChanged(qint64 positionUs)
+void MainWidget::audioPositionChanged(qint64 position)
{
#ifndef DISABLE_WAVEFORM
- qint64 positionBytes = audioLength(m_engine->format(), positionUs);
- m_waveform->positionChanged(positionBytes);
+ m_waveform->audioPositionChanged(position);
#else
- Q_UNUSED(positionUs)
+ Q_UNUSED(position)
#endif
}
-void MainWidget::bufferDurationChanged(qint64 durationUs)
+void MainWidget::bufferLengthChanged(qint64 length)
{
- m_progressBar->bufferDurationChanged(durationUs);
+ m_progressBar->bufferLengthChanged(length);
}
@@ -186,33 +185,22 @@ void MainWidget::bufferDurationChanged(qint64 durationUs)
// Private slots
//-----------------------------------------------------------------------------
-void MainWidget::dataDurationChanged(qint64 duration)
-{
-#ifndef DISABLE_WAVEFORM
- const qint64 dataLength = audioLength(m_engine->format(), duration);
- m_waveform->dataLengthChanged(dataLength);
-#else
- Q_UNUSED(duration)
-#endif
-
- updateButtonStates();
-}
-
void MainWidget::showFileDialog()
{
- reset();
const QString dir;
const QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open WAV file"), dir, "*.wav");
if (fileNames.count()) {
+ reset();
setMode(LoadFileMode);
m_engine->loadFile(fileNames.front());
updateButtonStates();
+ } else {
+ updateModeMenu();
}
}
void MainWidget::showSettingsDialog()
{
- reset();
m_settingsDialog->exec();
if (m_settingsDialog->result() == QDialog::Accepted) {
m_engine->setAudioInputDevice(m_settingsDialog->inputDevice());
@@ -223,9 +211,9 @@ void MainWidget::showSettingsDialog()
void MainWidget::showToneGeneratorDialog()
{
- reset();
m_toneGeneratorDialog->exec();
if (m_toneGeneratorDialog->result() == QDialog::Accepted) {
+ reset();
setMode(GenerateToneMode);
const qreal amplitude = m_toneGeneratorDialog->amplitude();
if (m_toneGeneratorDialog->isFrequencySweepEnabled()) {
@@ -236,6 +224,8 @@ void MainWidget::showToneGeneratorDialog()
m_engine->generateTone(tone);
updateButtonStates();
}
+ } else {
+ updateModeMenu();
}
}
@@ -360,13 +350,13 @@ void MainWidget::connectUi()
CHECKED_CONNECT(m_engine, SIGNAL(formatChanged(const QAudioFormat &)),
this, SLOT(formatChanged(const QAudioFormat &)));
- m_progressBar->bufferDurationChanged(m_engine->bufferDuration());
+ m_progressBar->bufferLengthChanged(m_engine->bufferLength());
- CHECKED_CONNECT(m_engine, SIGNAL(bufferDurationChanged(qint64)),
- this, SLOT(bufferDurationChanged(qint64)));
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferLengthChanged(qint64)),
+ this, SLOT(bufferLengthChanged(qint64)));
- CHECKED_CONNECT(m_engine, SIGNAL(dataDurationChanged(qint64)),
- this, SLOT(dataDurationChanged(qint64)));
+ CHECKED_CONNECT(m_engine, SIGNAL(dataLengthChanged(qint64)),
+ this, SLOT(updateButtonStates()));
CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
m_progressBar, SLOT(recordPositionChanged(qint64)));
@@ -375,10 +365,10 @@ void MainWidget::connectUi()
m_progressBar, SLOT(playPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
- this, SLOT(positionChanged(qint64)));
+ this, SLOT(audioPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)),
- this, SLOT(positionChanged(qint64)));
+ this, SLOT(audioPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(levelChanged(qreal, qreal, int)),
m_levelMeter, SLOT(levelChanged(qreal, qreal, int)));
@@ -394,6 +384,11 @@ void MainWidget::connectUi()
CHECKED_CONNECT(m_spectrograph, SIGNAL(infoMessage(QString, int)),
this, SLOT(infoMessage(QString, int)));
+
+#ifndef DISABLE_WAVEFORM
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferChanged(qint64, qint64, const QByteArray &)),
+ m_waveform, SLOT(bufferChanged(qint64, qint64, const QByteArray &)));
+#endif
}
void MainWidget::createMenus()
@@ -425,7 +420,7 @@ void MainWidget::updateButtonStates()
QAudio::IdleState == m_engine->state());
m_pauseButton->setEnabled(pauseEnabled);
- const bool playEnabled = (m_engine->dataDuration() &&
+ const bool playEnabled = (/*m_engine->dataLength() &&*/
(QAudio::AudioOutput != m_engine->mode() ||
(QAudio::ActiveState != m_engine->state() &&
QAudio::IdleState != m_engine->state())));
@@ -445,10 +440,14 @@ void MainWidget::reset()
void MainWidget::setMode(Mode mode)
{
-
m_mode = mode;
- m_loadFileAction->setChecked(LoadFileMode == mode);
- m_generateToneAction->setChecked(GenerateToneMode == mode);
- m_recordAction->setChecked(RecordMode == mode);
+ updateModeMenu();
+}
+
+void MainWidget::updateModeMenu()
+{
+ m_loadFileAction->setChecked(LoadFileMode == m_mode);
+ m_generateToneAction->setChecked(GenerateToneMode == m_mode);
+ m_recordAction->setChecked(RecordMode == m_mode);
}
diff --git a/demos/spectrum/app/mainwidget.h b/demos/spectrum/app/mainwidget.h
index ddab8b7cfe..13131c0403 100644
--- a/demos/spectrum/app/mainwidget.h
+++ b/demos/spectrum/app/mainwidget.h
@@ -80,21 +80,21 @@ public slots:
const FrequencySpectrum &spectrum);
void infoMessage(const QString &message, int timeoutMs);
void errorMessage(const QString &heading, const QString &detail);
- void positionChanged(qint64 position);
- void bufferDurationChanged(qint64 duration);
+ void audioPositionChanged(qint64 position);
+ void bufferLengthChanged(qint64 length);
private slots:
void showFileDialog();
void showSettingsDialog();
void showToneGeneratorDialog();
void initializeRecord();
- void dataDurationChanged(qint64 duration);
+ void updateModeMenu();
+ void updateButtonStates();
private:
void createUi();
void createMenus();
void connectUi();
- void updateButtonStates();
void reset();
enum Mode {
@@ -111,7 +111,9 @@ private:
Engine* m_engine;
+#ifndef DISABLE_WAVEFORM
Waveform* m_waveform;
+#endif
ProgressBar* m_progressBar;
Spectrograph* m_spectrograph;
LevelMeter* m_levelMeter;
diff --git a/demos/spectrum/app/progressbar.cpp b/demos/spectrum/app/progressbar.cpp
index 6bfc69052e..0ac76f1671 100644
--- a/demos/spectrum/app/progressbar.cpp
+++ b/demos/spectrum/app/progressbar.cpp
@@ -44,7 +44,7 @@
ProgressBar::ProgressBar(QWidget *parent)
: QWidget(parent)
- , m_bufferDuration(0)
+ , m_bufferLength(0)
, m_recordPosition(0)
, m_playPosition(0)
, m_windowPosition(0)
@@ -64,7 +64,7 @@ ProgressBar::~ProgressBar()
void ProgressBar::reset()
{
- m_bufferDuration = 0;
+ m_bufferLength = 0;
m_recordPosition = 0;
m_playPosition = 0;
m_windowPosition = 0;
@@ -86,26 +86,26 @@ void ProgressBar::paintEvent(QPaintEvent * /*event*/)
painter.fillRect(rect(), Qt::black);
#endif
- if (m_bufferDuration) {
+ if (m_bufferLength) {
QRect bar = rect();
- const qreal play = qreal(m_playPosition) / m_bufferDuration;
+ const qreal play = qreal(m_playPosition) / m_bufferLength;
bar.setLeft(rect().left() + play * rect().width());
- const qreal record = qreal(m_recordPosition) / m_bufferDuration;
+ const qreal record = qreal(m_recordPosition) / m_bufferLength;
bar.setRight(rect().left() + record * rect().width());
painter.fillRect(bar, bufferColor);
QRect window = rect();
- const qreal windowLeft = qreal(m_windowPosition) / m_bufferDuration;
+ const qreal windowLeft = qreal(m_windowPosition) / m_bufferLength;
window.setLeft(rect().left() + windowLeft * rect().width());
- const qreal windowWidth = qreal(m_windowLength) / m_bufferDuration;
+ const qreal windowWidth = qreal(m_windowLength) / m_bufferLength;
window.setWidth(windowWidth * rect().width());
painter.fillRect(window, windowColor);
}
}
-void ProgressBar::bufferDurationChanged(qint64 bufferSize)
+void ProgressBar::bufferLengthChanged(qint64 bufferSize)
{
- m_bufferDuration = bufferSize;
+ m_bufferLength = bufferSize;
m_recordPosition = 0;
m_playPosition = 0;
m_windowPosition = 0;
@@ -116,7 +116,7 @@ void ProgressBar::bufferDurationChanged(qint64 bufferSize)
void ProgressBar::recordPositionChanged(qint64 recordPosition)
{
Q_ASSERT(recordPosition >= 0);
- Q_ASSERT(recordPosition <= m_bufferDuration);
+ Q_ASSERT(recordPosition <= m_bufferLength);
m_recordPosition = recordPosition;
repaint();
}
@@ -124,7 +124,7 @@ void ProgressBar::recordPositionChanged(qint64 recordPosition)
void ProgressBar::playPositionChanged(qint64 playPosition)
{
Q_ASSERT(playPosition >= 0);
- Q_ASSERT(playPosition <= m_bufferDuration);
+ Q_ASSERT(playPosition <= m_bufferLength);
m_playPosition = playPosition;
repaint();
}
@@ -132,8 +132,8 @@ void ProgressBar::playPositionChanged(qint64 playPosition)
void ProgressBar::windowChanged(qint64 position, qint64 length)
{
Q_ASSERT(position >= 0);
- Q_ASSERT(position <= m_bufferDuration);
- Q_ASSERT(position + length <= m_bufferDuration);
+ Q_ASSERT(position <= m_bufferLength);
+ Q_ASSERT(position + length <= m_bufferLength);
m_windowPosition = position;
m_windowLength = length;
repaint();
diff --git a/demos/spectrum/app/progressbar.h b/demos/spectrum/app/progressbar.h
index 8514adb2f9..e715cf52f3 100644
--- a/demos/spectrum/app/progressbar.h
+++ b/demos/spectrum/app/progressbar.h
@@ -57,13 +57,13 @@ public:
void paintEvent(QPaintEvent *event);
public slots:
- void bufferDurationChanged(qint64 bufferSize);
+ void bufferLengthChanged(qint64 length);
void recordPositionChanged(qint64 recordPosition);
void playPositionChanged(qint64 playPosition);
void windowChanged(qint64 position, qint64 length);
private:
- qint64 m_bufferDuration;
+ qint64 m_bufferLength;
qint64 m_recordPosition;
qint64 m_playPosition;
qint64 m_windowPosition;
diff --git a/demos/spectrum/app/spectrumanalyser.cpp b/demos/spectrum/app/spectrumanalyser.cpp
index 1cc47a6661..2fa17b1433 100644
--- a/demos/spectrum/app/spectrumanalyser.cpp
+++ b/demos/spectrum/app/spectrumanalyser.cpp
@@ -64,6 +64,8 @@ SpectrumAnalyserThread::SpectrumAnalyserThread(QObject *parent)
#endif
{
#ifdef SPECTRUM_ANALYSER_SEPARATE_THREAD
+ // moveToThread() cannot be called on a QObject with a parent
+ setParent(0);
moveToThread(m_thread);
m_thread->start();
#endif
diff --git a/demos/spectrum/app/utils.cpp b/demos/spectrum/app/utils.cpp
index 4ead6c266d..49a762618f 100644
--- a/demos/spectrum/app/utils.cpp
+++ b/demos/spectrum/app/utils.cpp
@@ -49,8 +49,10 @@ qint64 audioDuration(const QAudioFormat &format, qint64 bytes)
qint64 audioLength(const QAudioFormat &format, qint64 microSeconds)
{
- return (format.frequency() * format.channels() * (format.sampleSize() / 8))
+ qint64 result = (format.frequency() * format.channels() * (format.sampleSize() / 8))
* microSeconds / 1000000;
+ result -= result % (format.channelCount() * format.sampleSize());
+ return result;
}
qreal nyquistFrequency(const QAudioFormat &format)
diff --git a/demos/spectrum/app/waveform.cpp b/demos/spectrum/app/waveform.cpp
index 1f7d315efe..bd854c0472 100644
--- a/demos/spectrum/app/waveform.cpp
+++ b/demos/spectrum/app/waveform.cpp
@@ -44,12 +44,18 @@
#include <QResizeEvent>
#include <QDebug>
-
-Waveform::Waveform(const QByteArray &buffer, QWidget *parent)
+//#define PAINT_EVENT_TRACE
+#ifdef PAINT_EVENT_TRACE
+# define WAVEFORM_PAINT_DEBUG qDebug()
+#else
+# define WAVEFORM_PAINT_DEBUG nullDebug()
+#endif
+
+Waveform::Waveform(QWidget *parent)
: QWidget(parent)
- , m_buffer(buffer)
- , m_dataLength(0)
- , m_position(0)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
+ , m_audioPosition(0)
, m_active(false)
, m_tileLength(0)
, m_tileArrayStart(0)
@@ -72,19 +78,19 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
painter.fillRect(rect(), Qt::black);
if (m_active) {
- WAVEFORM_DEBUG << "Waveform::paintEvent"
- << "windowPosition" << m_windowPosition
- << "windowLength" << m_windowLength;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent"
+ << "windowPosition" << m_windowPosition
+ << "windowLength" << m_windowLength;
qint64 pos = m_windowPosition;
const qint64 windowEnd = m_windowPosition + m_windowLength;
int destLeft = 0;
int destRight = 0;
while (pos < windowEnd) {
const TilePoint point = tilePoint(pos);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos" << pos
- << "tileIndex" << point.index
- << "positionOffset" << point.positionOffset
- << "pixelOffset" << point.pixelOffset;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos
+ << "tileIndex" << point.index
+ << "positionOffset" << point.positionOffset
+ << "pixelOffset" << point.pixelOffset;
if (point.index != NullIndex) {
const Tile &tile = m_tiles[point.index];
@@ -104,9 +110,9 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
sourceRect.setLeft(point.pixelOffset);
sourceRect.setRight(sourceRight);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "tileIndex" << point.index
- << "source" << point.pixelOffset << sourceRight
- << "dest" << destLeft << destRight;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tileIndex" << point.index
+ << "source" << point.pixelOffset << sourceRight
+ << "dest" << destLeft << destRight;
painter.drawPixmap(destRect, *tile.pixmap, sourceRect);
@@ -114,25 +120,25 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
if (point.index < m_tiles.count()) {
pos = tilePosition(point.index + 1);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos ->" << pos;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos ->" << pos;
} else {
// Reached end of tile array
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "reached end of tile array";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "reached end of tile array";
break;
}
} else {
// Passed last tile which is painted
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "tile" << point.index << "not painted";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tile" << point.index << "not painted";
break;
}
} else {
// pos is past end of tile array
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos" << pos << "past end of tile array";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos << "past end of tile array";
break;
}
}
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "final pos" << pos << "final x" << destRight;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "final pos" << pos << "final x" << destRight;
}
}
@@ -146,7 +152,6 @@ void Waveform::initialize(const QAudioFormat &format, qint64 audioBufferSize, qi
{
WAVEFORM_DEBUG << "Waveform::initialize"
<< "audioBufferSize" << audioBufferSize
- << "m_buffer.size()" << m_buffer.size()
<< "windowDurationUs" << windowDurationUs;
reset();
@@ -186,8 +191,9 @@ void Waveform::reset()
{
WAVEFORM_DEBUG << "Waveform::reset";
- m_dataLength = 0;
- m_position = 0;
+ m_bufferPosition = 0;
+ m_buffer = QByteArray();
+ m_audioPosition = 0;
m_format = QAudioFormat();
m_active = false;
deletePixmaps();
@@ -198,30 +204,31 @@ void Waveform::reset()
m_windowLength = 0;
}
-void Waveform::dataLengthChanged(qint64 length)
+void Waveform::bufferChanged(qint64 position, qint64 length, const QByteArray &buffer)
{
- WAVEFORM_DEBUG << "Waveform::dataLengthChanged" << length;
- const qint64 oldLength = m_dataLength;
- m_dataLength = length;
-
- if (m_active) {
- if (m_dataLength < oldLength)
- positionChanged(m_dataLength);
- else
- paintTiles();
- }
+ WAVEFORM_DEBUG << "Waveform::bufferChanged"
+ << "audioPosition" << m_audioPosition
+ << "bufferPosition" << position
+ << "bufferLength" << length;
+ m_bufferPosition = position;
+ m_bufferLength = length;
+ m_buffer = buffer;
+ paintTiles();
}
-void Waveform::positionChanged(qint64 position)
+void Waveform::audioPositionChanged(qint64 position)
{
- WAVEFORM_DEBUG << "Waveform::positionChanged" << position;
-
- if (position + m_windowLength > m_dataLength)
- position = m_dataLength - m_windowLength;
-
- m_position = position;
-
- setWindowPosition(position);
+ WAVEFORM_DEBUG << "Waveform::audioPositionChanged"
+ << "audioPosition" << position
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength;
+
+ if (position >= m_bufferPosition) {
+ if (position + m_windowLength > m_bufferPosition + m_bufferLength)
+ position = qMax(qint64(0), m_bufferPosition + m_bufferLength - m_windowLength);
+ m_audioPosition = position;
+ setWindowPosition(position);
+ }
}
void Waveform::deletePixmaps()
@@ -255,8 +262,6 @@ void Waveform::createPixmaps(const QSize &widgetSize)
m_tiles[i].pixmap = m_pixmaps[i];
m_tiles[i].painted = false;
}
-
- paintTiles();
}
void Waveform::setWindowPosition(qint64 position)
@@ -327,8 +332,9 @@ bool Waveform::paintTiles()
for (int i=0; i<m_tiles.count(); ++i) {
const Tile &tile = m_tiles[i];
if (!tile.painted) {
- const qint64 tileEnd = m_tileArrayStart + (i + 1) * m_tileLength;
- if (m_dataLength >= tileEnd) {
+ const qint64 tileStart = m_tileArrayStart + i * m_tileLength;
+ const qint64 tileEnd = tileStart + m_tileLength;
+ if (m_bufferPosition <= tileStart && m_bufferPosition + m_bufferLength >= tileEnd) {
paintTile(i);
updateRequired = true;
}
@@ -343,16 +349,23 @@ bool Waveform::paintTiles()
void Waveform::paintTile(int index)
{
- WAVEFORM_DEBUG << "Waveform::paintTile" << "index" << index;
-
const qint64 tileStart = m_tileArrayStart + index * m_tileLength;
- Q_ASSERT(m_dataLength >= tileStart + m_tileLength);
+
+ WAVEFORM_DEBUG << "Waveform::paintTile"
+ << "index" << index
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength
+ << "start" << tileStart
+ << "end" << tileStart + m_tileLength;
+
+ Q_ASSERT(m_bufferPosition <= tileStart);
+ Q_ASSERT(m_bufferPosition + m_bufferLength >= tileStart + m_tileLength);
Tile &tile = m_tiles[index];
Q_ASSERT(!tile.painted);
const qint16* base = reinterpret_cast<const qint16*>(m_buffer.constData());
- const qint16* buffer = base + (tileStart / 2);
+ const qint16* buffer = base + ((tileStart - m_bufferPosition) / 2);
const int numSamples = m_tileLength / (2 * m_format.channels());
QPainter painter(tile.pixmap);
@@ -376,6 +389,11 @@ void Waveform::paintTile(int index)
for (int i=0; i<numSamples; ++i) {
const qint16* ptr = buffer + i * m_format.channels();
+
+ const int offset = reinterpret_cast<const char*>(ptr) - m_buffer.constData();
+ Q_ASSERT(offset >= 0);
+ Q_ASSERT(offset < m_bufferLength);
+
const qint16 pcmValue = *ptr;
const qreal realValue = pcmToReal(pcmValue);
diff --git a/demos/spectrum/app/waveform.h b/demos/spectrum/app/waveform.h
index 57c9eec2d7..1c54c86739 100644
--- a/demos/spectrum/app/waveform.h
+++ b/demos/spectrum/app/waveform.h
@@ -60,7 +60,7 @@ QT_FORWARD_DECLARE_CLASS(QByteArray)
class Waveform : public QWidget {
Q_OBJECT
public:
- Waveform(const QByteArray &buffer, QWidget *parent = 0);
+ Waveform(QWidget *parent = 0);
~Waveform();
// QWidget
@@ -73,8 +73,8 @@ public:
void setAutoUpdatePosition(bool enabled);
public slots:
- void dataLengthChanged(qint64 length);
- void positionChanged(qint64 position);
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+ void audioPositionChanged(qint64 position);
private:
static const int NullIndex = -1;
@@ -167,9 +167,11 @@ private:
void resetTiles(qint64 newStartPos);
private:
- const QByteArray& m_buffer;
- qint64 m_dataLength;
- qint64 m_position;
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
+ QByteArray m_buffer;
+
+ qint64 m_audioPosition;
QAudioFormat m_format;
bool m_active;
diff --git a/demos/spectrum/app/wavfile.cpp b/demos/spectrum/app/wavfile.cpp
index 74d5918ace..44c3ac5c02 100644
--- a/demos/spectrum/app/wavfile.cpp
+++ b/demos/spectrum/app/wavfile.cpp
@@ -78,179 +78,74 @@ struct CombinedHeader
WAVEHeader wave;
};
-
-
-WavFile::WavFile(const QAudioFormat &format, qint64 dataLength)
- : m_format(format)
- , m_dataLength(dataLength)
- , m_dataPosition(0)
-{
-}
-
-bool WavFile::readHeader(QIODevice &device)
-{
- if (!device.isSequential()) {
- if (!device.seek(0))
- return false;
- // XXX: else, assume that current position is the start of the header
- }
-
- CombinedHeader header;
- if (device.read(reinterpret_cast<char *>(&header), sizeof(CombinedHeader)) != sizeof(CombinedHeader))
- return false;
-
- if ((memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0
- || memcmp(&header.riff.descriptor.id, "RIFX", 4) == 0)
- && memcmp(&header.riff.type, "WAVE", 4) == 0
- && memcmp(&header.wave.descriptor.id, "fmt ", 4) == 0
- && (header.wave.audioFormat == 1 || header.wave.audioFormat == 0)) {
-
- // Read off remaining header information
- DATAHeader dataHeader;
-
- if (qFromLittleEndian<quint32>(header.wave.descriptor.size) > sizeof(WAVEHeader)) {
- // Extended data available
- quint16 extraFormatBytes;
- if (device.peek((char*)&extraFormatBytes, sizeof(quint16)) != sizeof(quint16))
- return false;
- const qint64 throwAwayBytes = sizeof(quint16) + qFromLittleEndian<quint16>(extraFormatBytes);
- if (device.read(throwAwayBytes).size() != throwAwayBytes)
- return false;
- }
-
- if (device.read((char*)&dataHeader, sizeof(DATAHeader)) != sizeof(DATAHeader))
- return false;
-
- // Establish format
- if (memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0)
- m_format.setByteOrder(QAudioFormat::LittleEndian);
- else
- m_format.setByteOrder(QAudioFormat::BigEndian);
-
- int bps = qFromLittleEndian<quint16>(header.wave.bitsPerSample);
- m_format.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
- m_format.setCodec("audio/pcm");
- m_format.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
- m_format.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
- m_format.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
-
- m_dataLength = qFromLittleEndian<quint32>(dataHeader.descriptor.size);
- m_dataPosition = 0;
- }
-
- return true;
-}
-
-bool WavFile::writeHeader(QIODevice &device)
+WavFile::WavFile(QObject *parent)
+ : QFile(parent)
+ , m_headerLength(0)
{
- CombinedHeader header;
- DATAHeader dataHeader;
-
- memset(&header, 0, sizeof(CombinedHeader));
-
- // RIFF header
- if (m_format.byteOrder() == QAudioFormat::LittleEndian)
- strncpy(&header.riff.descriptor.id[0], "RIFF", 4);
- else
- strncpy(&header.riff.descriptor.id[0], "RIFX", 4);
- qToLittleEndian<quint32>(quint32(m_dataLength + sizeof(CombinedHeader) + sizeof(DATAHeader) - sizeof(chunk)),
- reinterpret_cast<unsigned char*>(&header.riff.descriptor.size));
- strncpy(&header.riff.type[0], "WAVE", 4);
-
- // WAVE header
- strncpy(&header.wave.descriptor.id[0], "fmt ", 4);
- qToLittleEndian<quint32>(quint32(16),
- reinterpret_cast<unsigned char*>(&header.wave.descriptor.size));
- qToLittleEndian<quint16>(quint16(1),
- reinterpret_cast<unsigned char*>(&header.wave.audioFormat));
- qToLittleEndian<quint16>(quint16(m_format.channels()),
- reinterpret_cast<unsigned char*>(&header.wave.numChannels));
- qToLittleEndian<quint32>(quint32(m_format.frequency()),
- reinterpret_cast<unsigned char*>(&header.wave.sampleRate));
- qToLittleEndian<quint32>(quint32(m_format.frequency() * m_format.channels() * m_format.sampleSize() / 8),
- reinterpret_cast<unsigned char*>(&header.wave.byteRate));
- qToLittleEndian<quint16>(quint16(m_format.channels() * m_format.sampleSize() / 8),
- reinterpret_cast<unsigned char*>(&header.wave.blockAlign));
- qToLittleEndian<quint16>(quint16(m_format.sampleSize()),
- reinterpret_cast<unsigned char*>(&header.wave.bitsPerSample));
-
- // DATA header
- strncpy(dataHeader.descriptor.id, "data", 4);
- qToLittleEndian<quint32>(quint32(m_dataLength),
- reinterpret_cast<unsigned char*>(&dataHeader.descriptor.size));
- return device.write(reinterpret_cast<const char *>(&header), sizeof(CombinedHeader)) == sizeof(CombinedHeader)
- && device.write(reinterpret_cast<const char*>(&dataHeader), sizeof(DATAHeader)) == sizeof(DATAHeader);
}
-const QAudioFormat& WavFile::format() const
+bool WavFile::open(const QString &fileName)
{
- return m_format;
+ close();
+ setFileName(fileName);
+ return QFile::open(QIODevice::ReadOnly) && readHeader();
}
-qint64 WavFile::dataLength() const
+const QAudioFormat &WavFile::fileFormat() const
{
- return m_dataLength;
+ return m_fileFormat;
}
-qint64 WavFile::headerLength()
+qint64 WavFile::headerLength() const
{
- return sizeof(CombinedHeader);
-}
-
-bool WavFile::writeDataLength(QIODevice &device, qint64 dataLength)
-{
- bool result = false;
- if (!device.isSequential()) {
- device.seek(40);
- unsigned char dataLengthLE[4];
- qToLittleEndian<quint32>(quint32(dataLength), dataLengthLE);
- result = (device.write(reinterpret_cast<const char *>(dataLengthLE), 4) == 4);
- }
- return result;
+return m_headerLength;
}
-qint64 WavFile::readData(QIODevice &device, QByteArray &buffer,
- QAudioFormat outputFormat)
+bool WavFile::readHeader()
{
- // Sanity checks
- if (!outputFormat.isValid())
- outputFormat = m_format;
-
- if (!isPCMS16LE(outputFormat) || !isPCMS16LE(m_format))
- return 0;
-
- if (m_dataPosition == m_dataLength)
- return 0;
-
- // Process
- qint64 result = 0;
-
- const int frameSize = 2 * m_format.channels(); // 16 bit samples
- QVector<char> inputSample(frameSize);
-
- qint16 *output = reinterpret_cast<qint16*>(buffer.data());
+ seek(0);
+ CombinedHeader header;
+ bool result = read(reinterpret_cast<char *>(&header), sizeof(CombinedHeader)) == sizeof(CombinedHeader);
+ if (result) {
+ if ((memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0
+ || memcmp(&header.riff.descriptor.id, "RIFX", 4) == 0)
+ && memcmp(&header.riff.type, "WAVE", 4) == 0
+ && memcmp(&header.wave.descriptor.id, "fmt ", 4) == 0
+ && (header.wave.audioFormat == 1 || header.wave.audioFormat == 0)) {
+
+ // Read off remaining header information
+ DATAHeader dataHeader;
+
+ if (qFromLittleEndian<quint32>(header.wave.descriptor.size) > sizeof(WAVEHeader)) {
+ // Extended data available
+ quint16 extraFormatBytes;
+ if (peek((char*)&extraFormatBytes, sizeof(quint16)) != sizeof(quint16))
+ return false;
+ const qint64 throwAwayBytes = sizeof(quint16) + qFromLittleEndian<quint16>(extraFormatBytes);
+ if (read(throwAwayBytes).size() != throwAwayBytes)
+ return false;
+ }
- while (result < buffer.size()) {
- if (m_dataPosition == m_dataLength)
- break;
+ if (read((char*)&dataHeader, sizeof(DATAHeader)) != sizeof(DATAHeader))
+ return false;
- // XXX only working with particular alignments
- if (device.read(inputSample.data(), inputSample.count())) {
- int inputIdx = 0;
- for (int outputIdx = 0; outputIdx < outputFormat.channels(); ++outputIdx) {
- const qint16* input = reinterpret_cast<const qint16*>(inputSample.data() + 2 * inputIdx);
- *output++ = qFromLittleEndian<qint16>(*input);
- result += 2;
- if (inputIdx < m_format.channels())
- ++inputIdx;
- }
- m_dataPosition += frameSize;
+ // Establish format
+ if (memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0)
+ m_fileFormat.setByteOrder(QAudioFormat::LittleEndian);
+ else
+ m_fileFormat.setByteOrder(QAudioFormat::BigEndian);
+
+ int bps = qFromLittleEndian<quint16>(header.wave.bitsPerSample);
+ m_fileFormat.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
+ m_fileFormat.setCodec("audio/pcm");
+ m_fileFormat.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
+ m_fileFormat.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
+ m_fileFormat.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
} else {
- break;
+ result = false;
}
}
-
+ m_headerLength = pos();
return result;
}
-
diff --git a/demos/spectrum/app/wavfile.h b/demos/spectrum/app/wavfile.h
index fc14b08780..935e935fd0 100644
--- a/demos/spectrum/app/wavfile.h
+++ b/demos/spectrum/app/wavfile.h
@@ -46,38 +46,22 @@
#include <QtCore/qfile.h>
#include <QtMultimedia/qaudioformat.h>
-/**
- * Helper class for reading WAV files
- *
- * See https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
- */
-class WavFile
+class WavFile : public QFile
{
public:
- WavFile(const QAudioFormat &format = QAudioFormat(),
- qint64 dataLength = 0);
+ WavFile(QObject *parent = 0);
- // Reads WAV header and seeks to start of data
- bool readHeader(QIODevice &device);
+ bool open(const QString &fileName);
+ const QAudioFormat &fileFormat() const;
+ qint64 headerLength() const;
- // Writes WAV header
- bool writeHeader(QIODevice &device);
-
- // Read PCM data
- qint64 readData(QIODevice &device, QByteArray &buffer,
- QAudioFormat outputFormat = QAudioFormat());
-
- const QAudioFormat& format() const;
- qint64 dataLength() const;
-
- static qint64 headerLength();
-
- static bool writeDataLength(QIODevice &device, qint64 dataLength);
+private:
+ bool readHeader();
private:
- QAudioFormat m_format;
- qint64 m_dataLength;
- qint64 m_dataPosition;
+ QAudioFormat m_fileFormat;
+ qint64 m_headerLength;
+
};
#endif
diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri
index d42f188cc3..c9cc492bce 100644
--- a/demos/symbianpkgrules.pri
+++ b/demos/symbianpkgrules.pri
@@ -13,4 +13,6 @@ vendorinfo = \
demos_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += demos_deployment
-contains(TEMPLATE,app):isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index 6abe96fa73..8ab06abaa9 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.qdoc
@@ -355,9 +355,11 @@
\brief A list of objects.
- A list of objects. While not technically a basic type, QML also
- supports lists of object types. When used from QML, the engine
- automatically appends each value to the list.
+ A list type contains a list of objects. While not technically
+ a basic type, QML supports lists of object types. When used
+ from QML, the engine automatically appends each value to the list.
+ Items in the list can be accessed by index using the usual
+ \c listName[index] syntax.
For example, the \l Item class contains a list property named
children that can be used like this:
@@ -366,14 +368,87 @@
Item {
children: [
Item { id: child1 },
- Rectangle { id: child2 },
+ Rectangle { id: child2; width: 200 },
Text { id: child3 }
]
+
+ Component.onCompleted: {
+ console.log("Width of child rectangle:", children[1].width)
+ }
}
\endqml
- \c child1, \c child2 and \c child3 will all be added to the children list
+ \c child1, \c child2 and \c child3 will be added to the children list
in the order in which they appear.
+ List \l {Adding new properties}{properties} can be created as a
+ \c variant type, or as a \c list<Type> type, where \c Type is the
+ type of the object in the list:
+
+ \qml
+ Item {
+ property variant values: [ 10, 20, 'abc', 'xyz' ]
+
+ property list<Rectangle> rects: [
+ Rectangle { width: 100; height: 100},
+ Rectangle { width: 200; height: 200}
+ ]
+ }
+ \endqml
+
+ A \c variant list can contain values of any of the \l {QML Basic Types}{basic QML types}
+ such as numbers, strings, etc. while a \c list<Type> list can only contain values
+ that match (or are derived from) the specified \c Type.
+
+ A list property can be cleared by setting it to an empty list:
+
+ \qml
+ Item {
+ children: []
+ }
+ \endqml
+
+ A list property cannot be modified in any other way. Items cannot be dynamically added to
+ or removed from the list through JavaScript operations; any \c push() operations on the
+ list only modify a \e copy of the list and not the actual list. (These current limitations
+ are due to restrictions on \l {Property Binding} where lists are involved.)
+
+ To create a modifiable list, create an array object from within a \c .js JavaScript file,
+ or implement a custom list element in C++. Here is a QML element that modifies the list in a
+ JavaScript file:
+
+ \table
+ \row
+ \o
+ \qml
+ // QML
+ import "script.js" as Script
+
+ Item {
+ Component.onCompleted: {
+ Script.addItem('abc')
+ console.log("Added:", Script.getList()[0])
+ }
+ }
+ \endqml
+
+ \o
+ \code
+ // script.js
+ var myArray = new Array()
+
+ function getList() {
+ return myArray
+ }
+
+ function addItem(item) {
+ myArray.push(item)
+ }
+ \endcode
+ \endtable
+
+ However, note that a JavaScript list should not be used as a QML \c property value,
+ as the property is not updated when the list changes.
+
\sa {QML Basic Types}
*/
diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc
index 3921d3e0e9..daf2ae10c7 100644
--- a/doc/src/declarative/dynamicobjects.qdoc
+++ b/doc/src/declarative/dynamicobjects.qdoc
@@ -173,7 +173,11 @@ component. Each instance runs a NumberAnimation, and when the animation has fini
Alternatively, the \c application.qml could have destroyed the created object
by calling \c object.destroy().
-Notice that if a \c SelfDestroyingRect instance was created statically like this:
+Note that it is safe to call destroy() on an object within that object. Objects are not destroyed the
+instant destroy() is called, but are cleaned up sometime between the end of that script block and the next frame
+(unless you specified a non-zero delay).
+
+Note also that if a \c SelfDestroyingRect instance was created statically like this:
\qml
Item {
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index a0eb95d0da..54f07a219f 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -37,8 +37,110 @@
To see the QML elements listed by functional area, see the
\l{Groups Of Related QML Elements} page.
- \generatelist qmlclasses
-
+ \table
+ \header \o {2,1} \bold {Basic Visual Items}
+ \row \o \l {Item} \o Basic item element inherited by all visual items in QML
+ \row \o \l {Rectangle} \o Basic visual rectangle element
+ \row \o \l {Gradient} \o Defines a gradient between two or more colors
+ \row \o \l {GradientStop} \o Defines a color used in a \l {Gradient}
+ \row \o \l {Image} \o Allows the use of bitmaps to a scene
+ \row \o \l {BorderImage} (Item-specific) \o Defines an image as a border
+ \row \o \l {AnimatedImage} \o For playing animations stored as a series of frames
+ \row \o \l {Text} \o Allows the use of formatted text in a scene
+ \row \o \l {TextInput} \o Displays an editable line of text
+ \row \o \l {IntValidator} \o Validator for integer values
+ \row \o \l {DoubleValidator} \o Validator for non-integer values
+ \row \o \l {RegExpValidator} \o Validator for string regular expressions
+ \row \o \l {TextEdit} \o Displays multiple lines of editable formatted text
+
+ \header \o {2,1} \bold {Basic Interaction Items}
+ \row \o \l {MouseArea} \o Handles mouse interactions
+ \row \o \l {FocusScope} \o For keyboard focus handling
+ \row \o \l {Flickable} \o Provides a surface that can be "flicked"
+ \row \o \l {Flipable} \o Provides a surface that produces flipping effects
+ \row \o \l {GestureArea} (experimental) \o Enables simple gesture handling
+
+ \header \o {2,1} \bold {States}
+ \row \o \l {State} \o Defines sets of configurations of objects and properties
+ \row \o \l {PropertyChanges} \o Describes property changes within a state
+ \row \o \l {StateGroup} \o Contains a set of states and state transitions
+ \row \o \l {StateChangeScript} \o Allows script binding in a state
+ \row \o \l {ParentChange} (Item-specific) \o Re-parent an Item in a state change
+ \row \o \l {AnchorChanges} \o Change the anchors of an item in a state
+
+ \header \o {2,1} \bold {Animation and Transitions}
+ \row \o \l {Behavior} \o Specifies a default animation for property changes
+ \row \o \l {SequentialAnimation} \o Runs animations sequentially
+ \row \o \l {ParallelAnimation} \o Runs animations in parallel
+ \row \o \l {PropertyAnimation} \o Animates property changes
+ \row \o \l {NumberAnimation} \o Animates properties of type qreal
+ \row \o \l {Vector3dAnimation} \o Animates properties of type QVector3d
+ \row \o \l {ColorAnimation} \o Animates color changes
+ \row \o \l {RotationAnimation} \o Animates rotations
+ \row \o \l {ParentAnimation} \o Animates parent changes
+ \row \o \l {AnchorAnimation} \o Animates anchor changes
+ \row \o \l {PauseAnimation} \o Pauses an animation
+ \row \o \l {SmoothedAnimation} \o Allows a property to smoothly track a value
+ \row \o \l {SpringAnimation} \o Allows a property to track a value in a spring-like motion
+ \row \o \l {PropertyAction} \o Sets immediate property changes during animation
+ \row \o \l {ScriptAction} \o Runs scripts during an animation
+ \row \o \l {Transition} \o Animates transitions during state changes
+
+ \header \o {2,1} \bold {Working with Data}
+ \row \o \l {Binding} \o Binds any value to any property
+ \row \o \l {ListModel} \o Defines a list of data
+ \row \o \l {ListElement} \o Defines a data item in a \l {ListModel}
+ \row \o \l {VisualItemModel} \o Contains items that already defines its own visual delegate
+ \row \o \l {VisualDataModel} \o Encapsulates a model and a delegate
+ \row \o \l {Package} \o Collection that enables sharing of items within different views
+ \row \o \l {XmlListModel} \o Specifies a model using XPath expressions
+ \row \o \l {XmlRole} \o Specifies a role for an \l {XmlListModel}
+
+ \header \o {2,1} \bold {Views}
+ \row \o \l {ListView} \o Provides a list visualization of a model
+ \row \o \l {GridView} \o Provides a grid visualization of a model
+ \row \o \l {PathView} \o Visualizes a model's contents along a path
+ \row \o \l {Path} \o Defines a path used by \l {PathView}
+ \row \o \l {PathLine} \o Defines a line in \l {Path}
+ \row \o \l {PathQuad} \o Defines a quadratic Bezier curve in a \l {Path}
+ \row \o \l {PathCubic} \o Defines a cubic Bezier curve in a \l {Path}
+ \row \o \l {PathAttribute} \o Allows the setting of attributes along a \l {Path}
+ \row \o \l {PathPercent} \o Modifies the item distribution along a \l {Path}
+ \row \o \l {WebView} \o Allows the addition of web content to a canvas
+
+ \header \o {2,1} \bold {Positioners}
+ \row \o \l {Column} \o Arranges its children vertically
+ \row \o \l {Row} \o Arranges its children horizontally
+ \row \o \l {Grid} \o Positions its children in a grid
+ \row \o \l {Flow} \o Positions its children with wrapping support
+
+ \header \o {2,1} \bold {Utility}
+ \row \o \l {Connections} \o Explicitly connects signals and signal handlers
+ \row \o \l {Component} \o Encapsulate QML items as a component
+ \row \o \l {Timer} \o Provides timed triggers
+ \row \o \l {QML:QtObject} {QtObject} \o Basic element containing only the objectName property
+ \row \o \l {QML:Qt} {Qt} \o The QML global Qt object provides useful enums and functions from Qt.
+ \row \o \l {WorkerScript} \o Enables the use of threads in QML
+ \row \o \l {Loader} \o Controls the loading of items or components
+ \row \o \l {Repeater} \o Uses a model to create multiples of components
+ \row \o \l {SystemPalette} \o Provides access to the Qt palettes
+ \row \o \l {FontLoader} \o Loads fonts by name or URL
+ \row \o \l {LayoutItem} \o Allows declarative UI elements inside Qt's Graphics View layouts
+
+ \header \o {2,1} \bold {Transforms}
+ \row \o \l {Scale} \o Assigns item scaling behaviors
+ \row \o \l {Rotation} \o Assigns item rotation behaviors
+ \row \o \l {Translate} \o Assigns item translation behaviors
+
+ \header \o {2,1} \bold {Effects}
+ \row \o \l {Particles} (experimental) \o Generates and animates particles
+ \row \o \l {ParticleMotionLinear} \o Adds linear motion behavior to \l {Particles}
+ \row \o \l {ParticleMotionGravity} \o Adds gravitational motion to \l {Particles}
+ \row \o \l {ParticleMotionWander} \o Adds varied motions to \l {Particles}
+ \endtable
+
+
+
*/
diff --git a/doc/src/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc
index 3b2fe3b4d4..2bfe62ec07 100644
--- a/doc/src/declarative/extending-tutorial.qdoc
+++ b/doc/src/declarative/extending-tutorial.qdoc
@@ -260,32 +260,28 @@ custom QML types may see unexpected behavior if bindings are not implemented.
The \c PieChart type currently has a string-type property and a color-type property.
It could have many other types of properties. For example, it could have an
-enum-type property to store a display mode for each chart:
+int-type property to store an identifier for each chart:
\code
// C++
class PieChart : public QDeclarativeItem
{
- Q_ENUMS(DisplayMode)
- Q_PROPERTY(DisplayMode displayMode READ displayMode WRITE setDisplayMode)
+ Q_PROPERTY(int chartId READ chartId WRITE setChartId NOTIFY chartIdChanged)
...
public:
- enum DisplayMode {
- MultiLevel,
- Exploded,
- ThreeDimensional
- };
-
- void setDisplayMode(DisplayMode mode);
- DisplayMode displayMode() const;
+ void setChartId(int chartId);
+ int chartId() const;
...
+
+ signals:
+ void chartIdChanged();
};
// QML
PieChart {
...
- displayMode: PieChart.Exploded
+ chartId: 100
}
\endcode
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index 9f3e2d2b59..19e9ffcf16 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.qdoc
@@ -647,7 +647,8 @@ language.
\section1 Adding new properties
-New properties can be added to an existing type. These new properties are
+New properties can be added to an existing type using the \c property keyword.
+These new properties are
available for use within QML, and also appear as regular Qt properties on the
C++ object, accessible through the regular property access mechanisms.
@@ -679,8 +680,12 @@ like this:
property list<Item> listOfItemsProperty
\endcode
+Custom types must be registered with qmlRegisterType() to be usable as a property
+type. Also note that list properties cannot be modified like ordinary JavaScript
+arrays; see the \l {list}{list type documentation} for details.
+
QML supports two methods for adding a new property to a type: a new property
-definition, and a property alias.
+definition, and a property alias. These are shown below.
\section2 Property definitions
diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc
index 58d53de79f..8a969eb8e5 100644
--- a/doc/src/declarative/qtbinding.qdoc
+++ b/doc/src/declarative/qtbinding.qdoc
@@ -30,126 +30,389 @@
\target qtbinding
\title Using QML in C++ Applications
-\tableofcontents
+QML is designed to be easily extensible from C++. The classes in the
+QtDeclarative module allow QML components to be loaded and manipulated from C++, and through
+Qt's \l{The Meta-Object System}{meta-object system}, QML and C++ objects can easily
+communicate through Qt signals and slots. In addition, QML plugins can be written to create
+reusable QML components for distribution.
-The QML API is split into three main classes - QDeclarativeEngine, QDeclarativeComponent and QDeclarativeContext.
-QDeclarativeEngine provides the environment in which QML is run, QDeclarativeComponent encapsulates
-\l {QML Documents}, and QDeclarativeContext allows applications to expose data to QML component instances.
+You may want to mix QML and C++ for a number of reasons. For example:
-QML also includes a convenience API, QDeclarativeView, for applications that simply want to embed QML
-components into a new QGraphicsView. QDeclarativeView covers up many of the details discussed below.
-While QDeclarativeView is mainly intended for rapid prototyping it can have uses in production applications.
+\list
+\o To use functionality defined in a C++ source (for example, when using a C++ Qt-based data model, or
+calling functions in a third-party C++ library)
+\o To access functionality in the QtDeclarative module (for example, to dynamically generate
+images using QDeclarativeImageProvider)
+\o To write your own QML elements (whether for your applications, or for distribution to others)
+\endlist
+
+To use the QtDeclarative module, you must include and link to the module appropriately, as shown on
+the \l {QtDeclarative}{module index page}. The \l {Qt Declarative UI Runtime} documentation
+shows how to build a basic C++ application that uses this module.
+
+
+\section1 Core module classes
-If you are looking at retrofitting an existing Qt application with QML,
-read \l{Integrating QML with existing Qt UI code}.
-\section1 Basic Usage
+The QtDeclarative module provides a set of C++ APIs for extending your QML applications from C++ and
+embedding QML into C++ applications. There are several core classes in the QtDeclarative module
+that provide the essential capabilities for doing this. These are:
-Every application requires at least one QDeclarativeEngine. A QDeclarativeEngine allows the configuration of
-global settings that apply to all the QML component instances - such as the QNetworkAccessManager
-that is used for network communications, and the path used for persistent storage.
-Multiple QDeclarativeEngine's are only needed if the application requires these settings to differ
-between QML component instances.
+\list
+\o QDeclarativeEngine: A QML engine provides the environment for executing QML code. Every
+application requires at least one engine instance.
+\o QDeclarativeComponent: A component encapsulates a \l{QML Documents}{QML document}.
+\o QDeclarativeContext: A context allows an application to expose data to the QML components
+created by an engine.
+\endlist
-\l {QML Documents} are loaded using the QDeclarativeComponent class. Each QDeclarativeComponent instance
-represents a single QML document. A QDeclarativeComponent can be passed a document URL, or raw text
-representing the content of the document. The document URL can be a local filesystem URL, or
-any network URL supported by QNetworkAccessManager.
+A QDeclarativeEngine allows the configuration of global settings that apply to all of its QML
+component instances: for example, the QNetworkAccessManager to be used for network communications,
+and the file path to be used for persistent storage.
-QML component instances can then be created by calling the QDeclarativeComponent::create() method. Here's
-an example of loading a QML document, and creating an object from it.
+QDeclarativeComponent is used to load QML documents. Each QDeclarativeComponent instance represents
+a single document. A component can be created from the URL or file path of a QML document, or the raw
+QML code of the document. Component instances are instatiated through the
+QDeclarativeComponent::create() method, like this:
\code
- QDeclarativeEngine *engine = new QDeclarativeEngine(parent);
- QDeclarativeComponent component(engine, QUrl::fromLocalFile("main.qml"));
- QObject *myObject = component.create();
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, QUrl::fromLocalFile("MyRectangle.qml"));
+QObject *rectangleInstance = component.create();
+
+// ...
+delete rectangleInstance;
\endcode
-\section1 Exposing Data
+QML documents can also be loaded using QDeclarativeView. This class provides a convenient
+QWidget-based view for embedding QML components into QGraphicsView-based applications. (For other
+methods of integrating QML into QWidget-based applications, see \l {Integrating QML with existing Qt
+UI code}.)
+
+
+\section1 Approaches to using QML with C++
+
+There are a number of ways to extend your QML application through C++. For example, you could:
+
+\list
+\o Load a QML component and manipulate it (or its children) from C++
+\o Embed a C++ object and its properties directly into a QML component (for example, to make a
+particular C++ object callable from QML, or to replace a dummy list model data with a real data set)
+\o Define new QML elements (through QObject-based C++ classes) and create them directly from your
+QML code
+\endlist
+
+These methods are shown below. Naturally these approaches are not exclusive; you can mix any of
+these methods throughout your application as appropriate.
+
+
+\section2 Loading QML components from C++
+
+A QML document can be loaded with QDeclarativeComponent or QDeclarativeView. QDeclarativeComponent
+loads a QML component as a C++ object; QDeclarativeView also does this,
+but additionally loads the QML component directly into a QGraphicsView. It is convenient for loading
+a displayable QML component into a QWidget-based application.
+
+For example, suppose there is a \c MyItem.qml file that looks like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+This QML document can be loaded with QDeclarativeComponent or QDeclarativeView with the following
+C++ code. Using a QDeclarativeComponent requires calling QDeclarativeComponent::create() to create
+a new instance of the component, while a QDeclarativeView automatically creates an instance of the
+component, which is accessible via QDeclarativeView::rootObject():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-a
+\dots 0
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-b
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeView
+\endtable
+
+This \c object is the instance of the \c MyItem.qml component that has been created. You can now
+modify the item's properties using QObject::setProperty() or QDeclarativeProperty:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp properties
+
+Alternatively, you can cast the object to its actual type and call functions with compile-time
+safety. In this case the base object of \c MyItem.qml is an \l Item, which is defined by the
+QDeclarativeItem class:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp cast
+
+You can also connect to any signals or call functions defined in the component using
+QMetaObject::invokeMethod() and QObject::connect(). See \l {Exchanging data between QML and C++}
+below for further details.
+
+\section3 Locating child objects
+
+QML components are essentially object trees with children that have siblings and their own children.
+Child objects of QML components can be located using the QObject::objectName property with
+QObject::findChild(). For example, if the root item in \c MyItem.qml had a child \l Rectangle item:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml child
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+The child could be located like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp findChild
+
+If \c objectName is used inside a delegate of a ListView, \l Repeater or some other
+element that creates multiple instances of its delegates, there will be multiple children with
+the same \c objectName. In this case, QObject::findChildren() can be used to find all children
+with a matching \c objectName.
+
+\warning While it is possible to use C++ to access and manipulate QML objects deep into the
+object tree, we recommend that you do not take this approach outside of application
+testing and prototyping. One strength of QML and C++ integration is the ability to implement the
+QML user interface separately from the C++ logic and dataset backend, and this strategy breaks if the
+C++ side reaches deep into the QML components to manipulate them directly. This would make it difficult
+to, for example, swap a QML view component for another view, if the new component was missing a
+required \c objectName. It is better for the C++ implementation to know as little as possible about
+the QML user interface implementation and the composition of the QML object tree.
+
+
+\section2 Embedding C++ objects into QML components
+
+When loading a QML scene into a C++ application, it can be useful to directly embed C++ data into
+the QML object. QDeclarativeContext enables this by exposing data to the context of a QML
+component, allowing data to be injected from C++ into QML.
+
+For example, here is a QML item that refers to a \c currentDateTime value that does not exist in
+the current scope:
+
+\snippet doc/src/snippets/declarative/qtbinding/context/MyItem.qml 0
+
+This \c currentDateTime value can be set directly by the C++ application that loads the QML
+component, using QDeclarativeContext::setContextProperty():
+
+\snippet doc/src/snippets/declarative/qtbinding/context/main.cpp 0
+
+Context properties can hold either QVariant or QObject* values. This means custom C++ objects can
+also be injected using this approach, and these objects can be modified and read directly in QML.
+Here, we modify the above example to embed a QObject instance instead of a QDateTime value, and the QML code
+invokes a method on the object instance:
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml 0
+\endtable
+
+(Note that date/time values returned from C++ to QML can be formatted through
+\l{QML:Qt::formatDateTime}{Qt.formatDateTime()} and associated functions.)
+
+If the QML item needs to receive signals from the context property, it can connect to them using the
+\l Connections element. For example, if \c ApplicationData has a signal named \c
+dataChanged(), this signal can be connected to using an \c onDataChanged handler within
+a \l Connections object:
+
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml 0
+
+Context properties can be useful for using C++ based data models in a QML view. See the
+\l {declarative/modelviews/stringlistmodel}{String ListModel},
+\l {declarative/modelviews/objectlistmodel}{Object ListModel} and
+\l {declarative/modelviews/abstractitemmodel}{AbstractItemModel} models for
+respective examples on using QStringListModel, QObjectList-based models and QAbstractItemModel
+in QML views.
+
+Also see the QDeclarativeContext documentation for more information.
+
+
+\section2 Defining new QML elements
+
+While new QML elements can be \l {Defining new Components}{defined in QML}, they can also be
+defined by C++ classes; in fact, many of the core \l {QML Elements} are implemented through
+C++ classes. When you create a QML object using one of these elements, you are simply creating an
+instance of a QObject-based C++ class and setting its properties.
+
+For example, here is an \c ImageViewer class with an \c image URL property:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h 0
+
+Aside from the fact that it inherits QDeclarativeItem, this is an ordinary class that could
+exist outside of QML. However, once it is registered with the QML engine using qmlRegisterType():
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/main.cpp register
+
+Then, any QML code loaded by your C++ application or \l{QDeclarativeExtensionPlugin}{plugin} can create and manipulate
+\c ImageViewer objects:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/standalone.qml 0
+
+Note that custom C++ types do not have to inherit from QDeclarativeItem; this is only necessary if it is
+a displayable item. If the item is not displayable, it can simply inherit from QObject.
+
+For more information on defining new QML elements, see the \l {Tutorial: Writing QML extensions with C++}
+{Writing QML extensions with C++} tutorial and the \l {Extending QML in C++} reference
+documentation.
+
+
+
+\section1 Exchanging data between QML and C++
+
+QML and C++ objects can communicate with one another through signals, slots and property
+modifications. For a C++ object, any data that is exposed to Qt's \l{The Meta-Object System}{Meta-Object System}
+- that is, properties, signals, slots and Q_INVOKABLE methods - become available to QML. On
+the QML side, all QML object data is automatically made available to the meta-object system and can
+be accessed from C++.
+
+
+\section2 Calling functions
-QML components are instantiated in a QDeclarativeContext. A context allows the application to expose data
-to the QML component instance. A single QDeclarativeContext can be used to instantiate all the objects
-used by an application, or several QDeclarativeContext can be created for more fine grained control over
-the data exposed to each instance. If a context is not passed to the QDeclarativeComponent::create()
-method, the QDeclarativeEngine's \l {QDeclarativeEngine::rootContext()}{root context} is used. Data exposed through
-the root context is available to all object instances.
+QML functions can be called from C++ and vice-versa.
-\section1 Simple Data
+All QML functions are exposed to the meta-object system and can be called using
+QMetaObject::invokeMethod(). Here is a C++ application that uses this to call a QML function:
-To expose data to a QML component instance, applications set \l {QDeclarativeContext::setContextProperty()}
-{context properties} which are then accessible by name from QML \l {Property Binding}s and JavaScript.
-The following example shows how to expose a background color to a QML file through QDeclarativeView:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml 0
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp 0
+\endtable
+
+Notice the Q_RETURN_ARG() and Q_ARG() arguments for QMetaObject::invokeMethod() must be specified as
+QVariant types, as this is the generic data type used for QML functions and return values.
+
+To call a C++ function from QML, the function must be either a Qt slot, or a function marked with
+the Q_INVOKABLE macro, to be available to QML. In the following example, the QML code invokes
+methods on the \c myObject object, which has been set using QDeclarativeContext::setContextProperty():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp 0
+\endtable
+
+Note that QML does not support overloaded functions. If a C++ has more than one function with the
+same name, there is no guarantee which overloaded function will be called from QML.
+
+
+\section2 Receiving signals
+
+All QML signals are automatically available to C++, and can be connected to using QObject::connect()
+like any ordinary Qt C++ signal.
+
+Here is a QML component with a signal named \c qmlSignal. This signal is connected to a C++ object's
+slot using QObject::connect():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp 0
+\endtable
+
+To connect to Qt C++ signals from within QML, use a signal handler with the \c on<SignalName> syntax.
+If the C++ object is directly creatable from within QML (see \l {Defining new QML elements} above)
+then the signal handler can be defined within the object declaration. In the following example, the
+QML code creates a \c ImageViewer object, and the \c imageChanged and \c loadingError signals of the
+C++ object are connected to through \c onImagedChanged and \c onLoadingError signal handlers in QML:
\table
\row
\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 0
+
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h start
+\dots 4
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h end
\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.qml 0
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml 0
+\endtable
+
+(Note that if a signal has been declared as the NOTIFY signal for a property, QML allows it to be
+received with an \c on<Property>Changed handler even if the signal's name does not follow the \c
+<Property>Changed naming convention. In the above example, if the "imageChanged" signal was named
+"imageModified" instead, the \c onImageChanged signal handler would still be called.)
+
+If, however, the object with the signal is not created from within the QML code, and the QML item only has a
+reference to the created object - for example, if the object was set using
+QDeclarativeContext::setContextProperty() - then the \l Connections element can be used
+instead to create the signal handler:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp connections
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml 0
\endtable
-Or, if you want \c main.cpp to create the component without showing it in a QDeclarativeView, you could create an instance of QDeclarativeContext using QDeclarativeEngine::rootContext() instead:
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 1
+\section2 Modifying properties
-Context properties work just like normal properties in QML bindings - if the \c backgroundColor
-context property in this example was changed to red, the component object instances would
-all be automatically updated. Note that it is the responsibility of the creator to delete any
-QDeclarativeContext it constructs. If the \c windowContext is no longer needed when
-the \c window component instantiation is destroyed, the \c windowContext must be destroyed
-explicitly. The simplest way to ensure this is to set \c window as \c windowContext's parent.
+Any properties declared in a QML object are automatically accessible from C++. Given a QML item
+like this:
-QDeclarativeContexts form a tree - each QDeclarativeContext except for the root context has a parent. Child
-QDeclarativeContexts effectively inherit the context properties present in their parents. This gives
-applications more freedom in partitioning the data exposed to different QML object instances.
-If a QDeclarativeContext sets a context property that is also set in one of its parents, the new context
-property shadows that in the parent. In The following example, the \c background context property
-in \c {Context 1} shadows the \c background context property in the root context.
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml 0
-\image qml-context-tree.png
+The value of the \c someNumber property can be set and read using QDeclarativeProperty, or
+QObject::setProperty() and QObject::property():
-\section2 Structured Data
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp 0
-Context properties can also be used to expose structured and writable data to QML objects. In
-addition to all the types already supported by QVariant, QObject derived types can be assigned to
-context properties. QObject context properties allow the data exposed to be more structured, and
-allow QML to set values.
+You should always use QObject::setProperty(), QDeclarativeProperty or QMetaProperty::write() to
+change a QML property value, to ensure the QML engine is made aware of the property change. For example,
+say you have a custom element \c PushButton with a \c buttonText property that internally reflects
+the value of a \c m_buttonText member variable. Modifying the member variable directly like this is
+not a good idea:
-The following example creates a \c CustomPalette object, and sets it as the \c palette context
-property.
+\badcode
+// BAD!
+QDeclarativeComponent component(engine, "MyButton.qml");
+PushButton *button = qobject_cast<PushButton*>(component.create());
+button->m_buttonText = "Click me";
+\endcode
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h 0
+Since the value is changed directly, this bypasses Qt's \l{The Meta-Object System}{meta-object system}
+and the QML engine is not made aware of the property change. This means property bindings to
+\c buttonText would not be updated, and any \c onButtonTextChanged handlers would not be called.
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.cpp 0
-The QML that follows references the palette object, and its properties, to set the appropriate
-background and text colors. When the window is clicked, the palette's text color is changed, and
-the window text will update accordingly.
+\target properties-cpp
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.qml 0
+Any \l {The Property System}{Qt properties} - that is, those declared with the Q_PROPERTY()
+macro - are accessible from QML. Here is a modified version of the \l {Embedding C++ objects into
+QML components}{earlier example} on this page; here, the \c ApplicationData class has a \c backgroundColor
+property. This property can be written to and read from QML:
-To detect when a C++ property value - in this case the \c CustomPalette's \c text property -
-changes, the property must have a corresponding NOTIFY signal. The NOTIFY signal specifies a signal
-that is emitted whenever the property changes value. Implementers should take care to only emit the
-signal if the value \e changes to prevent loops from occurring. Accessing a property from a
-binding that does not have a NOTIFY signal will cause QML to issue a warning at runtime.
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h 0
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml 0
+\endtable
-\section2 Dynamic Structured Data
+Notice the \c backgroundColorChanged signal is declared as the NOTIFY signal for the
+\c backgroundColor property. If a Qt property does not have an associated NOTIFY signal,
+the property cannot be used for \l {Property Binding} in QML, as the QML engine would not be
+notified when the value changes. If you are using custom types in QML, make sure their
+properties have NOTIFY signals so that they can be used in property bindings.
-If an application is too dynamic to structure data as compile-time QObject types, dynamically
-structured data can be constructed at runtime using the QDeclarativePropertyMap class.
+See \l {Tutorial: Writing QML extensions with C++} for further details and examples
+on using Qt properties with QML.
-\section1 Calling C++ methods from QML
+\section1 Supported data types
-It is possible to call methods of QObject derived types by either exposing the
-methods as public slots, or by marking the methods Q_INVOKABLE.
+Any C++ data that is used from QML - whether as custom properties, or parameters for signals or
+functions - must be of a type that is recognizable by QML.
-The C++ methods can also have parameters and return values. QML has support for
-the following types:
+By default, QML recognizes the following data types:
\list
\o bool
@@ -163,102 +426,168 @@ the following types:
\o QSize, QSizeF
\o QRect, QRectF
\o QVariant
+\o QObject*
+\o Enumerations declared with Q_ENUMS()
\endlist
-This example toggles the "Stopwatch" object on/off when the MouseArea is clicked:
+To allow a custom C++ type to be created or used in QML, the C++ class must be registered as a QML
+type using qmlRegisterType(), as shown in the \l {Defining new QML elements} section above.
-\table
-\row
-\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h 0
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp 0
-\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.qml 0
+\section2 Using enumerations of a custom type
-\endtable
+To use an enumeration from a custom C++ component, the enumeration must be declared with Q_ENUMS() to
+register it with Qt's meta object system. For example, the following C++ type has a \c Status enum:
-Note that in this particular example a better way to achieve the same result
-is to have a "running" property in \c main.qml. This leads to much nicer QML code:
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h start
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h end
+
+Providing the \c ImageViewer class has been registered using qmlRegisterType(), its \c Status enum can
+now be used from QML:
+
+\snippet doc/src/snippets/declarative/qtbinding/enums/standalone.qml 0
+
+The C++ type must be registered with QML to use its enums. If your C++ type is not instantiable, it
+can be registered using qmlRegisterUncreatableType().
+
+See the \l {Tutorial: Writing QML extensions with C++}{Writing QML extensions with C++} tutorial and
+the \l {Extending QML in C++} reference documentation for more information.
+
+
+\section2 Automatic type conversion
+
+As a convenience, some basic types can be specified in QML using format strings to make it easier to
+pass simple values from QML to C++.
\table
+\header
+\o Type
+\o String format
+\o Example
\row
-\o
-\code
-// main.qml
-import QtQuick 1.0
-
-Rectangle {
- MouseArea {
- anchors.fill: parent
- onClicked: stopwatch.running = !stopwatch.running
- }
-}
-\endcode
+\o QColor
+\o Color name, "#RRGGBB", "#RRGGBBAA"
+\o "red", "#ff0000", "#ff000000"
+\row
+\o QDate
+\o "YYYY-MM-DD"
+\o "2010-05-31"
+\row
+\o QPoint
+\o "x,y"
+\o "10,20"
+\row
+\o QRect
+\o "x,y,WidthxHeight"
+\o "50,50,100x100"
+\row
+\o QSize
+\o "WidthxHeight"
+\o "100x200"
+\row
+\o QTime
+\o "hh:mm:ss"
+\o "14:22:55"
+\row
+\o QUrl
+\o URL string
+\o "http://www.example.com"
+\row
+\o QVector3D
+\o "x,y,z"
+\o "0,1,0"
+\row
+\o Enumeration value
+\o Enum value name
+\o "AlignRight"
\endtable
-Of course, it is also possible to call \l {Adding new methods}{functions declared in QML from C++}.
+(More details on these string formats and types can be found in the
+\l {QML Basic Types}{basic type documentation}.)
+
+These string formats can be used to set QML \c property values and pass arguments to C++
+functions. This is demonstrated by various examples on this page; in the above
+\l{#properties-cpp}{Qt properties example}, the \c ApplicationData class has a \c backgroundColor
+property of a QColor type, which is set from the QML code with the string "red" rather rather
+than an actual QColor object.
+
+If it is preferred to pass an explicitly-typed value rather than a string, the global
+\l{QmlGlobalQtObject}{Qt object} provides convenience functions for creating some of the object
+types listed above. For example, \l{QML:Qt::rgba()}{Qt.rgba()} creates a QColor value from four
+RGBA values. The QColor returned from this function could be used instead of a string to set
+a QColor-type property or to call a C++ function that requires a QColor parameter.
+
+
+\section1 Writing QML plugins
+
+The QtDeclarative module includes the QDeclarativeExtensionPlugin class, which is an abstract
+class for writing QML plugins. This allows QML extension types to be dynamically loaded into
+QML applications.
+
+See the QDeclarativeExtensionPlugin documentation and \l {How to Create Qt Plugins} for more
+details.
+
+
+\section1 Managing resource files with the Qt resource system
+The \l {The Qt Resource System}{Qt resource system} allows resource files to be stored as
+binary files in an application executable. This can be useful when building a mixed
+QML/C++ application as it enables QML files (as well as other resources such as images
+and sound files) to be referred to through the resource system URI scheme rather than
+relative or absolute paths to filesystem resources. Note, however, that if you use the resource
+system, the application executable must be re-compiled whenever a QML source file is changed
+in order to update the resources in the package.
-\section1 Network Components
+To use the resource system in a mixed QML/C++ application:
-If the URL passed to QDeclarativeComponent is a network resource, or if the QML document references a
-network resource, the QDeclarativeComponent has to fetch the network data before it is able to create
-objects. In this case, the QDeclarativeComponent will have a \l {QDeclarativeComponent::Loading}{Loading}
-\l {QDeclarativeComponent::status()}{status}. An application will have to wait until the component
-is \l {QDeclarativeComponent::Ready}{Ready} before calling \l {QDeclarativeComponent::create()}.
+\list
+\o Create a \c .qrc \l {The Qt Resource System}{resource collection file} that lists resource
+ files in XML format
+\o From C++, load the main QML file as a resource using the \c :/ prefix or as a URL with the
+ \c qrc scheme
+\endlist
+
+Once this is done, all files specified by relative paths in QML will be loaded from
+the resource system instead. Use of the resource system is completely transparent to
+the QML layer; this means all QML code should refer to resource files using relative
+paths and should \e not use the \c qrc scheme. This scheme should only be used from
+C++ code for referring to resource files.
-The following example shows how to load a QML file from a network resource. After creating
-the QDeclarativeComponent, it tests whether the component is loading. If it is, it connects to the
-QDeclarativeComponent::statusChanged() signal and otherwise calls the \c {continueLoading()} method
-directly. This test is necessary, even for URLs that are known to be remote, just in case
-the component has been cached and is ready immediately.
+Here is a application packaged using the \l {The Qt Resource System}{Qt resource system}.
+The directory structure looks like this:
\code
-MyApplication::MyApplication()
-{
- // ...
- component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml"));
- if (component->isLoading())
- QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)),
- this, SLOT(continueLoading()));
- else
- continueLoading();
-}
-
-void MyApplication::continueLoading()
-{
- if (component->isError()) {
- qWarning() << component->errors();
- } else {
- QObject *myObject = component->create();
- }
-}
+project
+ |- example.qrc
+ |- main.qml
+ |- images
+ |- background.png
+ |- main.cpp
+ |- project.pro
\endcode
-\section1 Qt Resources
+The \c main.qml and \c background.png files will be packaged as resource files. This is
+done in the \c example.qrc resource collection file:
-QML content can be loaded from \l {The Qt Resource System} using the \e qrc: URL scheme.
-For example:
+\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
-\c [project/example.qrc]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
+Since \c background.png is a resource file, \c main.qml can refer to it using the relative
+path specified in \c example.qrc:
+
+\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
-\c [project/project.pro]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+To allow QML to locate resource files correctly, the \c main.cpp loads the main QML
+file, \c main.qml, as a resource file using the \c qrc scheme:
-\c [project/main.cpp]
\snippet doc/src/snippets/declarative/qtbinding/resources/main.cpp 0
-\c [project/main.qml]
-\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
+Finally \c project.pro uses the RESOURCES variable to indicate that \c example.qrc should
+be used to build the application resources:
+
+\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+
+See \l {The Qt Resource System} for more information.
-Note that the resource system cannot be accessed from QML directly. If the main QML file is
-loaded as a resource, all files specified as relative paths in QML will also be loaded from
-the resource system. Using the resource system is completely transparent to the QML layer.
-This also means that if the main QML file is not loaded as a resource then files in the resource
-system cannot be accessed from QML.
*/
+
diff --git a/doc/src/development/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc
index b30a700e0a..df82fba489 100644
--- a/doc/src/development/designer-manual.qdoc
+++ b/doc/src/development/designer-manual.qdoc
@@ -1769,37 +1769,54 @@ pixmap property in the property editor.
\title Using a Designer UI File in Your Application
- With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the
- code for user interface components created with \QD is automatically
- generated when the rest of your application is built. Forms can be included
- and used directly from your application. Alternatively, you can use them to
- extend subclasses of standard widgets. These forms can be processed at
- compile time or at run time, depending on the approach used.
+ Qt Designer UI files represent the widget tree of the form in XML format. The
+ forms can be processed:
+ \list
+ \o \l{Compile Time Form Processing}{At compile time}, which means that forms
+ are converted to C++ code that can be compiled.
+ \o \l{Run Time Form Processing}{At runtime}, which means that forms are processed
+ by the QUiLoader class that dynamically constructs the widget tree while
+ parsing the XML file.
+ \endlist
\tableofcontents
\section1 Compile Time Form Processing
+ You create user interface components with \QD and use Qt's integrated build tools,
+ \l{qmake Manual}{qmake} and \l{User Interface Compiler (uic)}{uic}, to generate code
+ for them when the application is built. The generated code contains the form's user
+ interface object. It is a C++ struct that contains:
+
+ \list
+ \o Pointers to the form's widgets, layouts, layout items,
+ button groups, and actions.
+ \o A member function called \c setupUi() to build the widget tree
+ on the parent widget.
+ \o A member function called \c retranslateUi() that handles the
+ translation of the string properties of the form. For more information,
+ see \l{Reacting to Language Changes}.
+ \endlist
+
+ The generated code can be included in your application and used directly from
+ it. Alternatively, you can use it to extend subclasses of standard widgets.
+
A compile time processed form can be used in your application with one of
the following approaches:
\list
- \o The Direct Approach: you construct a widget to use as a placeholder
+ \o \l{The Direct Approach}: you construct a widget to use as a placeholder
for the component, and set up the user interface inside it.
- \o The Single Inheritance Approach: you subclass the form's base class
+ \o \l{The Single Inheritance Approach}: you subclass the form's base class
(QWidget or QDialog, for example), and include a private instance
of the form's user interface object.
- \o The MultipleInheritance Approach: you subclass both the form's base
+ \o \l{The Multiple Inheritance Approach}: you subclass both the form's base
class and the form's user interface object. This allows the widgets
defined in the form to be used directly from within the scope of
the subclass.
\endlist
-
- \section2 The Direct Approach
-
- To demonstrate how to use user interface (UI) files straight from
- \QD, we create a simple Calculator Form application. This is based on the
+ To demonstrate, we create a simple Calculator Form application. It is based on the
original \l{Calculator Form Example}{Calculator Form} example.
The application consists of one source file, \c main.cpp and a UI
@@ -1817,15 +1834,18 @@ pixmap property in the property editor.
The special feature of this file is the \c FORMS declaration that tells
\c qmake which files to process with \c uic. In this case, the
\c calculatorform.ui file is used to create a \c ui_calculatorform.h file
- that can be used by any file listed in the \c SOURCES declaration. To
- ensure that \c qmake generates the \c ui_calculatorform.h file, we need to
- include it in a file listed in \c SOURCES. Since we only have \c main.cpp,
- we include it there:
+ that can be used by any file listed in the \c SOURCES declaration.
- \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
+ \note You can use Qt Creator to create the Calculator Form project. It
+ automatically generates the main.cpp, UI, and .pro files, which you can
+ then modify.
+
+ \section2 The Direct Approach
- This include is an additional check to ensure that we do not generate code
- for UI files that are not used.
+ To use the direct approach, we include the \c ui_calculatorform.h file
+ directly in \c main.cpp:
+
+ \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
The \c main function creates the calculator widget by constructing a
standard QWidget that we use to host the user interface described by the
@@ -1837,23 +1857,33 @@ pixmap property in the property editor.
from the \c ui_calculatorform.h file that sets up all the dialog's widgets
and the connections between its signals and slots.
- This approach provides a quick and easy way to use simple, self-contained
- components in your applications, but many componens created with \QD will
+ The direct approach provides a quick and easy way to use simple, self-contained
+ components in your applications. However, componens created with \QD often
require close integration with the rest of the application code. For
instance, the \c CalculatorForm code provided above will compile and run,
but the QSpinBox objects will not interact with the QLabel as we need a
custom slot to carry out the add operation and display the result in the
- QLabel. To achieve this, we need to subclass a standard Qt widget (known as
- the single inheritance approach).
-
+ QLabel. To achieve this, we need to use the single inheritance approach.
\section2 The Single Inheritance Approach
+ To use the single inheritance approach, we subclass a standard Qt widget and
+ include a private instance of the form's user interface object. This can take
+ the form of:
+
+ \list
+ \o A member variable
+ \o A pointer member variable
+ \endlist
+
+ \section3 Using a Member Variable
+
In this approach, we subclass a Qt widget and set up the user interface
from within the constructor. Components used in this way expose the widgets
and layouts used in the form to the Qt widget subclass, and provide a
standard system for making signal and slot connections between the user
interface and other objects in your application.
+ The generated \c{Ui::CalculatorForm} structure is a member of the class.
This approach is used in the \l{Calculator Form Example}{Calculator Form}
example.
@@ -1893,6 +1923,52 @@ pixmap property in the property editor.
them. This approach can be used to create individual tabs from existing
forms, for example.
+ \section3 Using a Pointer Member Variable
+
+ Alternatively, the \c{Ui::CalculatorForm} structure can be made a pointer
+ member of the class. The header then looks as follows:
+
+ \code
+
+ namespace Ui {
+ class CalculatorForm;
+ }
+
+ class CalculatorForm : public QWidget
+ ...
+ virtual ~CalculatorForm();
+ ...
+ private:
+ Ui::CalculatorForm *ui;
+ ...
+
+ \endcode
+
+ The corresponding source file looks as follows:
+
+ \code
+ #include "ui_calculatorform.h"
+
+ CalculatorForm::CalculatorForm(QWidget *parent) :
+ QWidget(parent), ui(new Ui::CalculatorForm)
+ {
+ ui->setupUi(this);
+ }
+
+ CalculatorForm::~CalculatorForm()
+ {
+ delete ui;
+ }
+ \endcode
+
+ The advantage of this approach is that the user interface object can be
+ forward-declared, which means that we do not have to include the generated
+ \c ui_calculatorform.h file in the header. The form can then be changed without
+ recompiling the dependent source files. This is particularly important if the
+ class is subject to binary compatibility restrictions.
+
+ We generally recommend this approach for libraries and large applications.
+ For more information, see \l{Creating Shared Libraries}.
\section2 The Multiple Inheritance Approach
@@ -1906,13 +1982,14 @@ pixmap property in the property editor.
{Multiple Inheritance} example.
We need to include the header file that \c uic generates from the
- \c calculatorform.ui file:
+ \c calculatorform.ui file, as follows:
\snippet examples/uitools/multipleinheritance/calculatorform.h 0
The class is defined in a similar way to the one used in the
\l{The Single Inheritance Approach}{single inheritance approach}, except that
- this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}:
+ this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm},
+ as follows:
\snippet examples/uitools/multipleinheritance/calculatorform.h 1
@@ -1931,11 +2008,26 @@ pixmap property in the property editor.
same say as a widget created in code by hand. We no longer require the
\c{ui} prefix to access them.
- Subclassing using multiple inheritance gives us more direct access to the
- contents of the form, is slightly cleaner than the single inheritance
- approach, but does not conveniently support composition of multiple user
- interfaces.
+ \section2 Reacting to Language Changes
+
+ Qt notifies applications if the user interface language changes by sending an
+ event of the type QEvent::LanguageChange. To call the member function
+ \c retranslateUi() of the user interface object, we reimplement
+ \c QWidget::changeEvent() in the form class, as follows:
+ \code
+ void CalculatorForm::changeEvent(QEvent *e)
+ {
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+ }
+ \endcode
\section1 Run Time Form Processing
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 8f6f16af8a..a68310c908 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -697,187 +697,224 @@ the Symbian platform from scratch, using Linux as the build host.
Qt for Symbian binaries can be downloaded directly so development of
applications using Qt for Symbian can start right away.
-\section1 Step 1: Setup the development environment
+\section1 Step 1: Setup the Development Environment
+
+Qt for the Symbian platform has some requirements on the development
+platform. The Symbian SDK for Linux as well as a cross compiler for the ARM
+processor used on Symbian devices should be present on the development
+machine.
+
+See \l{http://qt.gitorious.org/qt/pages/QtCreatorSymbianLinux} for more details.
+
- Qt for the Symbian platform has some requirements on the development
- platform. The Symbian SDK for Linux as well as a cross compiler for the ARM
- processor used on Symbian devices should be present on the development
- machine.
-
- See \l{http://qt.gitorious.org/qt/pages/QtCreatorSymbianLinux} for more details.
\section1 Step 2: Unpack the Archive
- Uncompress the \l{http://qt.nokia.com/downloads}{downloaded} source package into the
- directory you want Qt installed, e.g. \c{/home/user/qt/%VERSION%}.
+Uncompress the \l{http://qt.nokia.com/downloads}{downloaded} source package into the
+directory you want Qt installed, e.g. \c{/home/user/qt/%VERSION%}.
+
\section1 Step 3: Set the Environment Variables
- In order to build and use Qt, the \c PATH environment variable needs
- to be extended to fine Qt tools and also to find the Symbian platform tools:
+In order to build and use Qt, the \c PATH environment variable needs
+to be extended to fine Qt tools and also to find the Symbian platform tools:
- First you need to set the \c EPOCROOT environment variable to point to the
- location of your S60 SDK:
+First you need to set the \c EPOCROOT environment variable to point to the
+location of your S60 SDK:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 36
- Then you can update the PATH variable;
+Then you can update the PATH variable;
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 37
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 37
\section1 Step 4: Configure Qt
- To configure Qt for the Symbian platform, do:
+To configure Qt for the Symbian platform, do:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 38
- to build the libraries using RVCT or
+
+to build the libraries using RVCT or
\snippet doc/src/snippets/code/doc_src_installation.qdoc 39
- to build the libraries using GCCE.
+
+to build the libraries using GCCE.
+
\section1 Step 5: Build Qt
- To build Qt for the device, type:
+To build Qt for the device, type:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 40
- Congratulations, Qt is now ready to use.
+Congratulations, Qt is now ready to use.
-\section1 Step 6: Building Qt packages for the Device
- To run any application or demo on a real device, you need to install it
- on the device. To do this you first have to create a a package for the
- device, containing the libraries:
+\section1 Step 6: Building Qt Packages for the Device
- \bold{Building a Qt package without a certificate}
+To run any application or demo on a real device, you need to install it
+on the device. To do this you first have to create a a package for the
+device, containing the libraries:
- If you have no certificate, build a self signed Qt:
+\bold{Building a Qt package without a certificate}
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 41
+If you have no certificate, build a self signed Qt:
- The Qt libraries are built with "All -Tcb" capability, so that
- they can support all types of applications. However, these
- capabilities are automatically lowered if you make a self-signed
- package.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 41
- \bold{Building a Qt package with a Symbian developer certificate}
+The Qt libraries are built with "All -Tcb" capability, so that
+they can support all types of applications. However, these
+capabilities are automatically lowered if you make a self-signed
+package.
- If you have a symbian-signed developer certificate, specify the
- capabilities you can sign for, for example:
+\bold{Building a Qt package with a Symbian developer certificate}
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 42
-
- \section2 Installing Qt packages to the device.
+If you have a Symbian-signed developer certificate, specify the
+capabilities you can sign for, for example:
- It is possible to install packages to a phone in Linux by putting
- the package on the phone memory card and then installing manually
- from the phone menu. However, this is tedious and will not work
- on phones without a memory card, so the method recommended by Qt is
- to use the App TRK tool.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 42
- \section3 Obtaining the App TRK package.
+\section2 Installing Qt Packages to the Device.
- Download the package from the following location.
+It is possible to install packages to a phone in Linux by putting
+the package on the phone memory card and then installing manually
+from the phone menu. However, this is tedious and will not work
+on phones without a memory card, so the method recommended by Qt is
+to use the App TRK tool.
- \list
- \o \l{http://tools.ext.nokia.com/trk/}{Application TRK}.
- Choose the correct installation package based on the
- S60 version of your device
- (\c{S60_<S60-version>_app_trk_<TRK-version>.sisx}).
- \endlist
+\section3 Obtaining the App TRK package.
- This package currently has to be installed by putting the
- package on the memory card and installing from the phone
- menu, or using a Windows PC for doing the install. However,
- the installation only has to be done once.
+Download the package from the following location.
- \section3 Configuring App TRK on the phone.
+\list
+\o \l{http://tools.ext.nokia.com/trk/}{Application TRK}.
+ Choose the correct installation package based on the
+ S60 version of your device
+ (\c{S60_<S60-version>_app_trk_<TRK-version>.sisx}).
+\endlist
- When App TRK is installed, connect the phone to the PC using
- the USB cable. Select "PCSuite" as connection type. Then run
- App TRK on the phone, and make sure that the connection type is
- USB. This can be changed under
- the \c Settings menu entry. If necessary, choose \c Connect
- from the menu.
+This package currently has to be installed by putting the
+package on the memory card and installing from the phone
+menu, or using a Windows PC for doing the install. However,
+the installation only has to be done once.
- \section3 Configuring the USB serial driver on the Linux system.
+\section3 Configuring App TRK on the Phone
- On Linux, phone should appear as the \c /dev/ttyUSB1 device,
- however if you are running an old kernel, you may need to
- force the USB module to be loaded correctly before the device
- will appear:
+When App TRK is installed, connect the phone to the PC using
+the USB cable. Select "PCSuite" as connection type. Then run
+App TRK on the phone, and make sure that the connection type is
+USB. This can be changed under the \c Settings menu entry.
+If necessary, choose \c Connect from the menu.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 43
+\section3 Configuring the USB Serial Driver on the Linux System
- Note the identifier on the line where your Symbian device
- appears. Then execute the following, using the first and
- second part of the identifier in place of \c XXX,
- respectively.
+On Linux, phone should appear as the \c /dev/ttyUSB1 device,
+however if you are running an old kernel, you may need to
+force the USB module to be loaded correctly before the device
+will appear:
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 44
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 43
- The \c rmmod step may fail if the module is not already
- loaded, but that is harmless.
+Note the identifier on the line where your Symbian device
+appears. Then execute the following, using the first and
+second part of the identifier in place of \c XXX,
+respectively.
- \section3 Building the \c runonphone tool.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 44
- Note that building the \c runonphone tool requires a separate
- installation of Qt for Linux. If there is a version of Qt
- installed by your distribution's package mechanism, that that
- should do fine. Some distributions separate the libraries from
- the development setup which includes qmake. Make sure you have
- both installed.
+The \c rmmod step may fail if the module is not already
+loaded, but that is harmless.
- First make sure that the \c qmake you use is taken from the
- Linux installation of Qt. The easiest way to make sure of this
- is to open a new shell and run the following command:
+\section3 Building the runonphone Tool.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 45
+Note that building the \c runonphone tool requires a separate
+installation of Qt for Linux. If there is a version of Qt
+installed by your distribution's package mechanism, that that
+should do fine. Some distributions separate the libraries from
+the development setup which includes \c qmake. Make sure you
+have both installed.
- \c qmake will tell you where it is installed.
+You will also need the \l{libusb} libraries and header files
+installed. Usually, installing a development package such as
+\c{libusb-dev} will ensure that you have all the necessary
+dependencies installed.
- Copy the \c{%QTDIR%/tools/runonphone} folder to a place outside
- of the Qt tree. Then go to the folder in a shell and build it:
+First, make sure that the \c qmake you use is taken from the
+Linux installation of Qt. The easiest way to make sure of this
+is to open a new shell and run the following command:
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 46
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 45
- Copy the resulting executable to a folder which is in your
- \c PATH environment variable.
+\c qmake will tell you where it is installed.
- \section3 Installing the built package onto the phone.
+Copy the \c{%QTDIR%/tools/runonphone} folder to a place outside
+of the Qt tree. Then go to the folder in a shell and build it:
- Return to the root of the Qt tree configured for Symbian. Then
- install the Qt libraries by running the following:
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 46
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 47
+Copy the resulting executable to a folder which is in your
+\c PATH environment variable.
- \note If the installation fails, please make sure that there is
- no previously installed version of Qt on the phone.
+\section3 Installing the Built Package onto the Phone
- Qt requires some dependent packages to be installed on the device,
- they are shipped in the Symbian SDK and can be installed using the
- runonphone tool as well.
- The packages can be found in the EPOCROOT at the following locations;
+\note Before starting, please make sure that there is no previously
+installed version of Qt on the phone.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 50
+Return to the root of the Qt tree configured for Symbian. Then
+install the Qt libraries by running the following:
-\section1 Running Qt demos
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 47
- We've included a subset of the Qt demos in this package for you
- to try out. An excellent starting point is the "fluidlauncher"
- demo.
+You may need to supply the path of the serial device file using
+the \c{-p} option:
- Install and run the demo by using the following commands:
+\snippet doc/src/snippets/code/doc_src_installation.qdoc runonphone with device file path
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 48
+If the installation fails, please make sure that there is
+no previously installed version of Qt on the phone.
- The same command can be used for other applications:
+Qt requires some dependent packages to be installed on the device,
+they are shipped in the Symbian SDK and can be installed using the
+runonphone tool as well.
+The packages can be found in the EPOCROOT at the following locations;
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 49
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 50
- For more information about building and running Qt programs on the
- Symbian platform, see \l{The Symbian platform - Introduction to Qt}.
+It is also possible to install packages onto the device using the
+\c runonphone build rule that \c qmake automatically generates for
+each Qt project. Options can be supplied to the \c runonphone tool
+that is invoked begind the scenes:
- We hope you will enjoy using Qt.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc make runonphone with options
+
+If you are running \c runonphone or invoking the \c runonphone
+build rule often, it is possible to set the \c QT_RUN_ON_PHONE_OPTIONS
+environment variable with the options you normally use:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc make runonphone with preset environment variable
+
+This makes installation of packages onto a device easier and less
+error-prone.
+
+
+\section1 Running Qt Demos
+
+We've included a subset of the Qt demos in this package for you
+to try out. An excellent starting point is the "fluidlauncher"
+demo.
+
+Install and run the demo by using the following commands:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 48
+
+The same command can be used for other applications:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 49
+
+For more information about building and running Qt programs on the
+Symbian platform, see \l{The Symbian platform - Introduction to Qt}.
+
+We hope you will enjoy using Qt.
*/
/*!
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index e42dfca59f..57fc18aa50 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -45,7 +45,7 @@
<li><a href="how-to-learn-qt.html">How to learn Qt</a></li>
<li><a href="tutorials.html">Tutorials</a></li>
<li><a href="all-examples.html">Examples</a></li>
- <li><a href="qt4-7-intro.html">Whats new in Qt 4.7</a></li>
+ <li><a href="qt4-7-intro.html">What's new in Qt 4.7</a></li>
</ul>
</div>
</div>
diff --git a/doc/src/legal/trademarks.qdoc b/doc/src/legal/trademarks.qdoc
index 42cb7a9dc3..3bf783fe1f 100644
--- a/doc/src/legal/trademarks.qdoc
+++ b/doc/src/legal/trademarks.qdoc
@@ -33,20 +33,20 @@
\brief Information about trademarks owned by Nokia and other organisations.
Nokia, the Nokia logo, Qt, and the Qt logo are trademarks of Nokia
-  Corporation and/or its subsidiaries in Finland and other countries.
+ Corporation and/or its subsidiaries in Finland and other countries.
\list
\o Intel, Intel Inside (logos), MMX and Pentium are \reg trademarks of
Intel Corporation in the United States, other countries, or both.
- \o Java and all Java-based trademarks are trademarks of Sun Microsystems,
- Inc. in the United States, other countries, or both.
+ \o Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
\o Linux is a \reg trademark of Linus Torvalds in the United States, other
countries or both.
\o Mac, Mac OS and Macintosh are \reg trademarks of Apple Computer, Inc.,
registered in the U.S. and other countries.
- \o Microsoft, Windows, Windows NT, XP, Visual Studio and the Windows logo
- are \reg trademarks of Microsoft Corporation in the United States, other
- countries, or both.
+ \o Microsoft, Windows, Windows NT, XP, Windows Vista, Visual Studio and the
+ Windows logo are \reg trademarks of Microsoft Corporation in the United
+ States, other countries, or both.
\o Motif is a registered trademark of The Open Group in the United States,
other countries, or both.
\o OpenGL is a \reg trademark of Silicon Graphics, Inc. in the United States
diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
index 22935b43d4..81e532f5a0 100644
--- a/doc/src/platforms/emb-pointer.qdoc
+++ b/doc/src/platforms/emb-pointer.qdoc
@@ -186,8 +186,11 @@
device file. Some drivers also require write access to the device file.
For instance, if you have specified the mouse driver with
\snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 11
- then examine the permissions of the device file by entering the following
- command in a console:
+ then examine the permissions of the device file by entering the
+ following command in a console:
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc show permissions
+ Change the permissions of the device file, if necessary, in the following
+ way:
\snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 12
If the device file is actually a symbolic link to another file, you must
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index dbedc1d0f1..9c5f3c8418 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -739,6 +739,9 @@
\o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
\row \o QtNetwork
\o \c NetworkServices is basically always required for this module.
+ \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list
+ (for example those added by the user or stored in the SIM card),
+ without this capability only the CA certs built into the phone are used.
\row \o QtMultiMedia
\o \c UserEnvironment if QAudioInput is used.
\endtable
diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
index d333c90136..b051a98e2e 100644
--- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
@@ -104,6 +104,10 @@ QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0
//! [11]
+//! [show permissions]
+ls -l /dev/input/mouse0
+//! [show permissions]
+
//! [12]
chmod a+rw /dev/input/mouse0
//! [12]
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index 432d08f7ad..bd23462cc9 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -301,11 +301,24 @@ make
runonphone -s lib/Qt.sis
//! [47]
+//! [runonphone with device file path]
+runonphone -s lib/Qt.sis -p /dev/ttyUSB1
+//! [runonphone with device file path]
+
//! [48]
cd demos/embedded/fluidlauncher
runonphone -s fluidlauncher.sis fluidlauncher.exe
//! [48]
+//! [make runonphone with options]
+make runonphone "QT_RUN_ON_PHONE_OPTIONS=-p /dev/ttyUSB1"
+//! [make runonphone with options]
+
+//! [make runonphone with preset environment variable]
+export QT_RUN_ON_PHONE_OPTIONS="-p /dev/ttyUSB1"
+make runonphone
+//! [make runonphone with preset environment variable]
+
//! [49]
cd myapp
qmake
diff --git a/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml b/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml
new file mode 100644
index 0000000000..1888f4eb82
--- /dev/null
+++ b/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+ id: page
+ color: "white"
+ width: 180; height: 180
+
+//! [tiled border image]
+BorderImage {
+ width: 180; height: 180
+ border { left: 30; top: 30; right: 30; bottom: 30 }
+ source: "pics/borderframe.png"
+}
+//! [tiled border image]
+}
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml b/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml
new file mode 100644
index 0000000000..607651a7f3
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Text { text: applicationData.getCurrentDateTime() }
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h b/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h
new file mode 100644
index 0000000000..930e381284
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QObject>
+#include <QDateTime>
+
+//![0]
+class ApplicationData : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE QDateTime getCurrentDateTime() const {
+ return QDateTime::currentDateTime();
+ }
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
index 124422ff9b..749bea3d1e 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
@@ -37,26 +37,16 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+import QtQuick 1.0
-#include "stopwatch.h"
+//![0]
+Text {
+ text: applicationData.getCurrentDateTime()
-Stopwatch::Stopwatch()
- : m_running(false)
-{
-}
-
-bool Stopwatch::isRunning() const
-{
- return m_running;
-}
-
-void Stopwatch::start()
-{
- m_running = true;
-}
-
-void Stopwatch::stop()
-{
- m_running = false;
+ Connections {
+ target: applicationData
+ onDataChanged: console.log("The application data changed!")
+ }
}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro b/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro
new file mode 100644
index 0000000000..188a9fb9f5
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += applicationdata.h
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
index 7481b759c4..b92215b34e 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
@@ -37,22 +37,21 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-
-#include "custompalette.h"
+#include "applicationdata.h"
//![0]
-int main(int argc, char *argv[])
-{
+int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view;
- view.rootContext()->setContextProperty("palette", new CustomPalette);
- view.setSource(QUrl::fromLocalFile("main.qml"));
+ ApplicationData data;
+ view.rootContext()->setContextProperty("applicationData", &data);
+
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
return app.exec();
diff --git a/doc/src/snippets/declarative/qtbinding/context/MyItem.qml b/doc/src/snippets/declarative/qtbinding/context/MyItem.qml
new file mode 100644
index 0000000000..faa42dcf90
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context/MyItem.qml
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Text { text: currentDateTime }
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro b/doc/src/snippets/declarative/qtbinding/context/context.pro
index 68eeaf211b..68eeaf211b 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro
+++ b/doc/src/snippets/declarative/qtbinding/context/context.pro
diff --git a/doc/src/snippets/declarative/qtbinding/context/main.cpp b/doc/src/snippets/declarative/qtbinding/context/main.cpp
new file mode 100644
index 0000000000..bbe9956c37
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+QDeclarativeView view;
+view.rootContext()->setContextProperty("currentDateTime", QDateTime::currentDateTime());
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+//![0]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h b/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
deleted file mode 100644
index 7e84bd4d6b..0000000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QObject>
-#include <QColor>
-
-//![0]
-class CustomPalette : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QColor background READ background WRITE setBackground NOTIFY backgroundChanged)
- Q_PROPERTY(QColor text READ text WRITE setText NOTIFY textChanged)
-
-public:
- CustomPalette() : m_background(Qt::white), m_text(Qt::black) {}
-
- QColor background() const { return m_background; }
- void setBackground(const QColor &c) {
- if (c != m_background) {
- m_background = c;
- emit backgroundChanged();
- }
- }
-
- QColor text() const { return m_text; }
- void setText(const QColor &c) {
- if (c != m_text) {
- m_text = c;
- emit textChanged();
- }
- }
-
-signals:
- void textChanged();
- void backgroundChanged();
-
-private:
- QColor m_background;
- QColor m_text;
-};
-
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
index e6af0d033e..82bc123461 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro
+++ b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
@@ -1,3 +1,3 @@
QT += declarative
-HEADERS += custompalette.h
SOURCES += main.cpp
+HEADERS += imageviewer.h
diff --git a/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h b/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h
new file mode 100644
index 0000000000..8aaddeed4a
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![start]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_ENUMS(Status)
+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
+public:
+ enum Status {
+ Ready,
+ Loading,
+ Error
+ };
+
+ Status status() const;
+//![start]
+
+ ImageViewer(QDeclarativeItem *parent = 0);
+
+public slots:
+ void emitSignals();
+
+//![end]
+signals:
+ void statusChanged();
+};
+//![end]
diff --git a/doc/src/snippets/declarative/qtbinding/enums/main.cpp b/doc/src/snippets/declarative/qtbinding/enums/main.cpp
new file mode 100644
index 0000000000..9243f4bbce
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/main.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "imageviewer.h"
+
+ImageViewer::ImageViewer(QDeclarativeItem *parent)
+ : QDeclarativeItem(parent)
+{
+ QTimer::singleShot(0, this, SLOT(emitSignals()));
+}
+
+ImageViewer::Status ImageViewer::status() const
+{
+ return Ready;
+}
+
+void ImageViewer::emitSignals()
+{
+ emit statusChanged();
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
+
+ QDeclarativeView view;
+ view.setSource(QUrl::fromLocalFile("standalone.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/enums/standalone.qml b/doc/src/snippets/declarative/qtbinding/enums/standalone.qml
new file mode 100644
index 0000000000..ad6c14ce9d
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/standalone.qml
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import MyLibrary 1.0
+
+//![0]
+ImageViewer {
+ onStatusChanged: {
+ if (status == ImageViewer.Ready)
+ console.log("Image viewer is ready!")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml b/doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml
index f894f716f8..8d8cd563a5 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml
@@ -37,21 +37,18 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
//![0]
+// MyItem.qml
import QtQuick 1.0
-Rectangle {
- width: 300
- height: 300
+Item {
+ width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: {
- if (stopwatch.isRunning())
- stopwatch.stop()
- else
- stopwatch.start();
+ myObject.cppMethod("Hello from QML")
+ myObject.cppSlot(12345)
}
}
}
diff --git a/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro b/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro
new file mode 100644
index 0000000000..01066c1bc4
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += myclass.h
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp b/doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp
index 12481dacf0..91d6aec545 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp
@@ -37,23 +37,20 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include "stopwatch.h"
-
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-#include <QApplication>
+#include "myclass.h"
//![0]
-int main(int argc, char *argv[])
-{
+int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view;
- view.rootContext()->setContextProperty("stopwatch",
- new Stopwatch);
+ MyClass myClass;
+ view.rootContext()->setContextProperty("myObject", &myClass);
- view.setSource(QUrl::fromLocalFile("main.qml"));
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
return app.exec();
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
index a20d9e0e68..76c628ecf1 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
@@ -37,26 +37,21 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QObject>
+#include <QDebug>
//![0]
-import QtQuick 1.0
-
-Rectangle {
- width: 240
- height: 320
- color: palette.background
-
- Text {
- anchors.centerIn: parent
- color: palette.text
- text: "Click me to change color!"
+class MyClass : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE void cppMethod(const QString &msg) {
+ qDebug() << "Called the C++ method with" << msg;
}
- MouseArea {
- anchors.fill: parent
- onClicked: {
- palette.text = "blue";
- }
+public slots:
+ void cppSlot(int number) {
+ qDebug() << "Called the C++ slot with" << number;
}
-}
+};
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml b/doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml
index 425346d8c9..6161d6e028 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml
@@ -37,19 +37,14 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
//![0]
+// MyItem.qml
import QtQuick 1.0
-Rectangle {
- width: 300
- height: 300
-
- color: backgroundColor
-
- Text {
- anchors.centerIn: parent
- text: "Hello Yellow World!"
+Item {
+ function myQmlFunction(msg) {
+ console.log("Got message:", msg)
+ return "some return value"
}
}
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro b/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro
new file mode 100644
index 0000000000..68eeaf211b
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp
new file mode 100644
index 0000000000..3e9e51e38a
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+// main.cpp
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, "MyItem.qml");
+QObject *object = component.create();
+
+QVariant returnedValue;
+QVariant msg = "Hello from C++";
+QMetaObject::invokeMethod(object, "myQmlFunction",
+ Q_RETURN_ARG(QVariant, returnedValue),
+ Q_ARG(QVariant, msg));
+
+qDebug() << "QML function returned:" << returnedValue.toString();
+delete object;
+//![0]
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml b/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml
new file mode 100644
index 0000000000..40138f6bd7
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![start]
+import QtQuick 1.0
+
+Item {
+ width: 100; height: 100
+//![start]
+
+//![child]
+ Rectangle {
+ anchors.fill: parent
+ objectName: "rect"
+ }
+//![child]
+
+//![end]
+}
+//![end]
diff --git a/doc/src/snippets/declarative/qtbinding/loading/loading.pro b/doc/src/snippets/declarative/qtbinding/loading/loading.pro
new file mode 100644
index 0000000000..68eeaf211b
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/loading.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/loading/main.cpp b/doc/src/snippets/declarative/qtbinding/loading/main.cpp
new file mode 100644
index 0000000000..bd400b0a9c
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/main.cpp
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+static void withComponent()
+{
+//![QDeclarativeComponent-a]
+// Using QDeclarativeComponent
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine,
+ QUrl::fromLocalFile("MyItem.qml"));
+QObject *object = component.create();
+//![QDeclarativeComponent-a]
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![QDeclarativeView]
+// Using QDeclarativeView
+QDeclarativeView view;
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+QObject *object = view.rootObject();
+//![QDeclarativeView]
+
+//![properties]
+object->setProperty("width", 500);
+QDeclarativeProperty(object, "width").write(500);
+//![properties]
+
+//![cast]
+QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(object);
+item->setWidth(500);
+//![cast]
+
+//![findChild]
+QObject *rect = object->findChild<QObject*>("rect");
+if (rect)
+ rect->setProperty("color", "red");
+//![findChild]
+
+//![QDeclarativeComponent-b]
+delete object;
+//![QDeclarativeComponent-b]
+
+withComponent();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h
new file mode 100644
index 0000000000..fd9db5eb7d
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![0]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_PROPERTY(QUrl image READ image WRITE setImage NOTIFY imageChanged)
+
+public:
+ void setImage(const QUrl &url);
+ QUrl image() const;
+
+signals:
+ void imageChanged();
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/main.cpp b/doc/src/snippets/declarative/qtbinding/newelements/main.cpp
new file mode 100644
index 0000000000..57994ca31d
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/main.cpp
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "imageviewer.h"
+
+void ImageViewer::setImage(const QUrl &url) {}
+QUrl ImageViewer::image() const { return QUrl(); }
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ //![register]
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
+ //![register]
+
+ QDeclarativeView view;
+ view.setSource(QUrl::fromLocalFile("standalone.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro b/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro
new file mode 100644
index 0000000000..82bc123461
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += imageviewer.h
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml b/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml
new file mode 100644
index 0000000000..7345f21881
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import MyLibrary 1.0
+
+ImageViewer { image: "smile.png" }
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml b/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml
new file mode 100644
index 0000000000..9db4b93e2e
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Rectangle {
+ width: 100; height: 100
+ color: applicationData.backgroundColor
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: applicationData.backgroundColor = "red"
+ }
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h b/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h
new file mode 100644
index 0000000000..763a451646
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QColor>
+
+//![0]
+class ApplicationData : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QColor backgroundColor
+ READ backgroundColor
+ WRITE setBackgroundColor
+ NOTIFY backgroundColorChanged)
+
+public:
+ void setBackgroundColor(const QColor &c) {
+ if (c != m_color) {
+ m_color = c;
+ emit backgroundColorChanged();
+ }
+ }
+
+ QColor backgroundColor() const {
+ return m_color;
+ }
+
+signals:
+ void backgroundColorChanged();
+
+private:
+ QColor m_color;
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp b/doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp
new file mode 100644
index 0000000000..36b508d30c
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "applicationdata.h"
+
+int main(int argc, char *argv[]) {
+ QApplication app(argc, argv);
+
+ QDeclarativeView view;
+
+ ApplicationData data;
+ view.rootContext()->setContextProperty("applicationData", &data);
+
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro b/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro
new file mode 100644
index 0000000000..188a9fb9f5
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += applicationdata.h
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml b/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml
new file mode 100644
index 0000000000..a43ded8d40
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ property int someNumber: 100
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp
new file mode 100644
index 0000000000..d8daff8be7
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, "MyItem.qml");
+QObject *object = component.create();
+
+qDebug() << "Property value:" << QDeclarativeProperty::read(object, "someNumber").toInt();
+QDeclarativeProperty::write(object, "someNumber", 5000);
+
+qDebug() << "Property value:" << object->property("someNumber").toInt();
+object->setProperty("someNumber", 100);
+//![0]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro b/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro
new file mode 100644
index 0000000000..68eeaf211b
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/resources/main.qml b/doc/src/snippets/declarative/qtbinding/resources/main.qml
index 644d96388e..43029cf6bd 100644
--- a/doc/src/snippets/declarative/qtbinding/resources/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/resources/main.qml
@@ -39,9 +39,8 @@
****************************************************************************/
//![0]
+// main.qml
import QtQuick 1.0
-Image {
- source: "images/background.png"
-}
+Image { source: "images/background.png" }
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml b/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml
new file mode 100644
index 0000000000..d900830ab0
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ Connections {
+ target: imageViewer
+ onImageChanged: console.log("Image has changed!")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h b/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h
new file mode 100644
index 0000000000..7288d119c9
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![start]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_PROPERTY(QUrl image READ image WRITE setImage NOTIFY imageChanged)
+public:
+//![start]
+ ImageViewer(QDeclarativeItem *item = 0);
+
+ void setImage(const QUrl &url) {}
+ QUrl image() const { return QUrl(); }
+
+public slots:
+ void emitSignals();
+
+//![end]
+signals:
+ void imageChanged();
+ void loadingError(const QString &errorMsg);
+};
+//![end]
+
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
index 6887e8fe7a..e5dd33c314 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
@@ -37,42 +37,45 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include <QDeclarativeComponent>
-#include <QDeclarativeEngine>
+#include "imageviewer.h"
-//![0]
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
+
+ImageViewer::ImageViewer(QDeclarativeItem *item)
+ : QDeclarativeItem(item)
+{
+ QTimer::singleShot(0, this, SLOT(emitSignals()));
+}
+
+void ImageViewer::emitSignals()
+{
+ emit imageChanged();
+ emit loadingError("some error message");
+}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- QDeclarativeView view;
- QDeclarativeContext *context = view.rootContext();
- context->setContextProperty("backgroundColor",
- QColor(Qt::yellow));
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
- view.setSource(QUrl::fromLocalFile("main.qml"));
- view.show();
+ QDeclarativeView standalone;
+ standalone.setSource(QUrl::fromLocalFile("standalone.qml"));
+ standalone.show();
- return app.exec();
-}
-//![0]
+//![connections]
+ImageViewer viewer;
-static void alternative()
-{
- // Alternatively, if we don't actually want to display main.qml:
-//![1]
- QDeclarativeEngine engine;
- QDeclarativeContext *windowContext = new QDeclarativeContext(engine.rootContext());
- windowContext->setContextProperty("backgroundColor", QColor(Qt::yellow));
+QDeclarativeView view;
+view.rootContext()->setContextProperty("imageViewer", &viewer);
- QDeclarativeComponent component(&engine, "main.qml");
- QObject *window = component.create(windowContext);
-//![1]
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+//![connections]
+
+ return app.exec();
}
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro b/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro
new file mode 100644
index 0000000000..9aa8702432
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += "imageviewer.h"
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml b/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml
new file mode 100644
index 0000000000..4027b19a86
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import MyLibrary 1.0
+
+//![0]
+ImageViewer {
+ onImageChanged: console.log("Image changed!")
+ onLoadingError: console.log("Image failed to load:", errorMsg)
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml b/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml
new file mode 100644
index 0000000000..e4b6cedb7d
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ id: item
+ width: 100; height: 100
+
+ signal qmlSignal(string msg)
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: item.qmlSignal("Hello from QML")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp
new file mode 100644
index 0000000000..f1d03c4bb1
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![0]
+int main(int argc, char *argv[]) {
+ QApplication app(argc, argv);
+
+ QDeclarativeView view(QUrl::fromLocalFile("MyItem.qml"));
+ QObject *item = view.rootObject();
+
+ MyClass myClass;
+ QObject::connect(item, SIGNAL(qmlSignal(QString)),
+ &myClass, SLOT(cppSlot(QString)));
+
+ view.show();
+ return app.exec();
+}
+//![0]
+
+#include "moc_main.cpp"
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
index fd65916fe1..c326a54498 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
@@ -37,25 +37,15 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
#include <QObject>
-
+#include <QDebug>
//![0]
-class Stopwatch : public QObject
+class MyClass : public QObject
{
Q_OBJECT
-public:
- Stopwatch();
-
- Q_INVOKABLE bool isRunning() const;
-
public slots:
- void start();
- void stop();
-
-private:
- bool m_running;
+ void cppSlot(const QString &msg) {
+ qDebug() << "Called the C++ slot with message:" << msg;
+ }
};
-
//![0]
-
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro b/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro
new file mode 100644
index 0000000000..01066c1bc4
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += myclass.h
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro b/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro
deleted file mode 100644
index d803e6a351..0000000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-QT += declarative
-HEADERS += stopwatch.h
-SOURCES += main.cpp stopwatch.cpp
diff --git a/doc/src/template/scripts/functions.js b/doc/src/template/scripts/functions.js
index 47539d2def..62bc53508e 100755
--- a/doc/src/template/scripts/functions.js
+++ b/doc/src/template/scripts/functions.js
@@ -105,17 +105,17 @@ function processNokiaData(response){
/* start a new list element */
full_li_element = '<li';
/* if the pageType element reads APIPage, add class name api */
- if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
+ if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
full_li_element += ' class="api"';
apiCount++;
}
/* if the pageType element reads Article, add class name article */
- else if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
full_li_element += ' class="article"';
articleCount++;
}
/* if the pageType element reads Example, add class name example */
- else if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
full_li_element += ' class="example"';
exampleCount++;
}
diff --git a/doc/src/template/style/narrow.css b/doc/src/template/style/narrow.css
index c1e3f61970..fbb0752203 100644
--- a/doc/src/template/style/narrow.css
+++ b/doc/src/template/style/narrow.css
@@ -223,6 +223,7 @@
float: right;
margin: 15px 40px 0 0;
font-size: 11px;
+ position: relative;
}
.narrow #narrowmenu {
diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css
index 536b3c8ab8..16bc9ed062 100755
--- a/doc/src/template/style/style.css
+++ b/doc/src/template/style/style.css
@@ -101,7 +101,7 @@
}
a
{
- color: #00732f;
+ color: #00732F;
text-decoration: none;
}
hr
@@ -660,13 +660,31 @@
-webkit-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
-moz-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
+ font-size: 11px;
+ }
+
+ #resultdialog a
+ {
+ color: #00732f;
}
#resultdialog.active {
display: block;
- width:30%;
}
+ .narrow #resultdialog {
+ width: 60%;
+ _width: 360px;
+ }
+
+ .narrow #resultdialog.active {
+ right: 10px;
+ *left: auto;
+ _left: auto;
+ _right: -20px;
+ }
+
+
#resultdialog #resultclose {
float: right;
}
@@ -779,6 +797,7 @@
margin-right: 15px;
font-weight: bold;
color: #B0ADAB;
+ font: bold 10px/1.2 Verdana;
}
.toolbuttons #print
@@ -892,7 +911,6 @@
}
.wrap .content h2
{
- border-bottom:1px solid #DDDDDD;
font:600 16px/1.2 Arial;
margin-top:15px;
width:100%;
@@ -990,7 +1008,7 @@
/*display:inline-block;*/
margin-left:10px;
min-width:250px;
- line-height: 1.2;
+ line-height: 1.5;
min-width:100%;
min-height:15px;
}
@@ -1279,6 +1297,10 @@
background-color: #E6E7E8;
margin: 0;
}
+ .small
+ {
+ font: normal 9px/1 Verdana;
+ }
/* end footer elements */
@@ -1453,7 +1475,7 @@
}
- .creator .header, .footer, .wrapper
+ .creator .header, .creator .footer, .creator .wrapper
{
max-width: 1500px;
margin: 0px;
@@ -1658,6 +1680,58 @@
}
/* end of creator spec*/
+ .item {
+ float: left;
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+ }
+
+
+ .item .primary {
+ margin-right: 220px;
+ position: relative;
+ }
+
+ .item hr {
+ margin-left: -220px;
+ }
+
+ .item .secondary {
+ float: right;
+ width: 200px;
+ position: relative;
+ }
+
+ .item .cols {
+ clear: both;
+ display: block;
+ }
+
+ .item .cols .col {
+ float: left;
+ margin-left: 1.5%;
+ }
+
+ .item .cols .col.first {
+ margin-left: 0;
+ }
+
+ .item .cols.two .col {
+ width: 45%;
+ }
+
+ .item .box {
+ margin: 0 0 10px 0;
+ }
+
+ .item .box h3 {
+ margin: 0 0 10px 0;
+ }
+
+ .cols.unclear {
+ clear:none;
+ }
}
/* end of screen media */
diff --git a/examples/declarative/cppextensions/plugins/README b/examples/declarative/cppextensions/plugins/README
index fe519f83bd..95e0eea849 100644
--- a/examples/declarative/cppextensions/plugins/README
+++ b/examples/declarative/cppextensions/plugins/README
@@ -5,5 +5,5 @@ by a C++ plugin (providing the "Time" type), and by QML files (providing the
To run:
make install
- qml -I . plugins.qml
+ qmlviewer -I . plugins.qml
diff --git a/examples/declarative/modelviews/listview/highlightranges.qml b/examples/declarative/modelviews/listview/highlightranges.qml
index 2716ee555c..58d37a3787 100644
--- a/examples/declarative/modelviews/listview/highlightranges.qml
+++ b/examples/declarative/modelviews/listview/highlightranges.qml
@@ -42,15 +42,14 @@ import QtQuick 1.0
import "content"
Rectangle {
+ id: root
+ property int current: 0
width: 600; height: 300
// This example shows the same model in three different ListView items,
// with different highlight ranges. The highlight ranges are set by the
// preferredHighlightBegin and preferredHighlightEnd properties in ListView.
//
- // The second and third ListViews set their currentIndex to be the
- // same as the first. The first ListView is given keyboard focus.
- //
// The first ListView does not set a highlight range, so its currentItem
// can move freely within the visible area. If it moves outside the
// visible area, the view is automatically scrolled to keep the current
@@ -66,9 +65,10 @@ Rectangle {
// forces the current item to change when the view is flicked,
// since the highlight is unable to move.
//
- // Note that the first ListView sets its currentIndex to be equal to
- // the third ListView's currentIndex. By flicking the third ListView with
- // the mouse, the current index of the first ListView will be changed.
+ // All ListViews bind their currentIndex to the root.current property.
+ // The first ListView sets root.current whenever its currentIndex changes
+ // due to keyboard interaction.
+ // Flicking the third ListView with the mouse also changes root.current.
ListView {
id: list1
@@ -77,7 +77,8 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "lightsteelblue" }
- currentIndex: list3.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
focus: true
}
@@ -89,7 +90,7 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "yellow" }
- currentIndex: list1.currentIndex
+ currentIndex: root.current
preferredHighlightBegin: 80; preferredHighlightEnd: 220
highlightRangeMode: ListView.ApplyRange
}
@@ -102,7 +103,8 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "yellow" }
- currentIndex: list1.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
preferredHighlightBegin: 125; preferredHighlightEnd: 125
highlightRangeMode: ListView.StrictlyEnforceRange
}
diff --git a/examples/network/bearermonitor/bearermonitor.cpp b/examples/network/bearermonitor/bearermonitor.cpp
index 2c976ffc37..75ffb01608 100644
--- a/examples/network/bearermonitor/bearermonitor.cpp
+++ b/examples/network/bearermonitor/bearermonitor.cpp
@@ -41,8 +41,8 @@
#include "bearermonitor.h"
#include "sessionwidget.h"
-#include <QDebug>
-#include <QMessageBox>
+#include <QtCore/QDebug>
+
#ifdef Q_OS_WIN
#include <winsock2.h>
#undef interface
@@ -56,20 +56,18 @@ BearerMonitor::BearerMonitor(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
newSessionButton->hide();
deleteSessionButton->hide();
#else
delete tabWidget->currentWidget();
sessionGroup->hide();
#endif
-#if defined (Q_OS_SYMBIAN) || defined(Q_OS_WINCE) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE) || defined(MAEMO_UI)
setWindowState(Qt::WindowMaximized);
#endif
updateConfigurations();
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
onlineStateChanged(!manager.allConfigurations(QNetworkConfiguration::Active).isEmpty());
-#endif
QNetworkConfiguration defaultConfiguration = manager.defaultConfiguration();
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = treeWidget->topLevelItem(i);
@@ -104,7 +102,7 @@ BearerMonitor::BearerMonitor(QWidget *parent)
connect(newSessionButton, SIGNAL(clicked()),
this, SLOT(createNewSession()));
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
connect(deleteSessionButton, SIGNAL(clicked()),
this, SLOT(deleteSession()));
#endif
@@ -257,15 +255,9 @@ void BearerMonitor::updateConfigurations()
void BearerMonitor::onlineStateChanged(bool isOnline)
{
if (isOnline)
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
- QMessageBox::information(this, "Connection state changed", "Online", QMessageBox::Close);
- else
- QMessageBox::information(this, "Connection state changed", "Offline", QMessageBox::Close);
-#else
onlineState->setText(tr("Online"));
else
onlineState->setText(tr("Offline"));
-#endif
}
#ifdef Q_OS_WIN
@@ -393,7 +385,7 @@ void BearerMonitor::createSessionFor(QTreeWidgetItem *item)
tabWidget->addTab(session, conf.name());
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
sessionGroup->show();
#endif
@@ -408,7 +400,7 @@ void BearerMonitor::createNewSession()
createSessionFor(item);
}
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
void BearerMonitor::deleteSession()
{
SessionWidget *session = qobject_cast<SessionWidget *>(tabWidget->currentWidget());
diff --git a/examples/network/bearermonitor/bearermonitor.h b/examples/network/bearermonitor/bearermonitor.h
index 45e7275345..df1c78bb6b 100644
--- a/examples/network/bearermonitor/bearermonitor.h
+++ b/examples/network/bearermonitor/bearermonitor.h
@@ -45,7 +45,7 @@
#include <qnetworksession.h>
#if defined (Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
#include "ui_bearermonitor_240_320.h"
-#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#elif defined(MAEMO_UI)
#include "ui_bearermonitor_maemo.h"
#else
#include "ui_bearermonitor_640_480.h"
@@ -81,7 +81,7 @@ private slots:
void createSessionFor(QTreeWidgetItem *item);
void createNewSession();
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
void deleteSession();
#endif
void performScan();
diff --git a/examples/network/bearermonitor/bearermonitor.pro b/examples/network/bearermonitor/bearermonitor.pro
index 4b2c35b972..bd9bd68e5c 100644
--- a/examples/network/bearermonitor/bearermonitor.pro
+++ b/examples/network/bearermonitor/bearermonitor.pro
@@ -8,7 +8,8 @@ SOURCES = main.cpp \
bearermonitor.cpp \
sessionwidget.cpp
-maemo5|maemo6 {
+maemo5|maemo6|linux-g++-maemo {
+ DEFINES += MAEMO_UI
FORMS = bearermonitor_maemo.ui \
sessionwidget_maemo.ui
} else {
diff --git a/examples/network/bearermonitor/bearermonitor_maemo.ui b/examples/network/bearermonitor/bearermonitor_maemo.ui
index a7940c6fe9..9c72bfd5b1 100644
--- a/examples/network/bearermonitor/bearermonitor_maemo.ui
+++ b/examples/network/bearermonitor/bearermonitor_maemo.ui
@@ -7,300 +7,359 @@
<x>0</x>
<y>0</y>
<width>612</width>
- <height>495</height>
+ <height>555</height>
</rect>
</property>
<property name="windowTitle">
<string>BearerMonitor</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
<item>
- <widget class="QTabWidget" name="tabWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <widget class="QGroupBox" name="systemState">
+ <property name="title">
+ <string>System State</string>
</property>
- <property name="currentIndex">
- <number>0</number>
+ <property name="flat">
+ <bool>true</bool>
</property>
- <property name="usesScrollButtons">
- <bool>false</bool>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="onlineStateLabel">
+ <property name="text">
+ <string>Online State:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="onlineState">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="configurations">
+ <property name="title">
+ <string>Configurations &amp;&amp; Sessions</string>
</property>
- <widget class="QWidget" name="tab">
- <attribute name="title">
- <string>Configurations</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QTreeWidget" name="treeWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <attribute name="headerVisible">
- <bool>false</bool>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <property name="usesScrollButtons">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Configurations</string>
</attribute>
- <column>
- <property name="text">
- <string>1</string>
- </property>
- </column>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <layout class="QHBoxLayout" name="configurationNameLayout">
- <item>
- <widget class="QLabel" name="configurationNameLabel">
- <property name="text">
- <string>Name:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationName">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationStateLayout">
- <item>
- <widget class="QLabel" name="configurationStateLabel">
- <property name="text">
- <string>State:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationState">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationTypeLayout">
- <item>
- <widget class="QLabel" name="configurationTypeLabel">
- <property name="text">
- <string>Type:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationType">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Invalid</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationPurposeLayout">
- <item>
- <widget class="QLabel" name="configurationPurposeLabel">
- <property name="text">
- <string>Purpose:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationPurpose">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Unknown</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationIdentifierLayout">
- <item>
- <widget class="QLabel" name="configurationIdentifierLabel">
- <property name="text">
- <string>Identifier:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationIdentifier">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationRoamingLayout">
- <item>
- <widget class="QLabel" name="configurationRoamingLabel">
- <property name="text">
- <string>Roaming:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationRoaming">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationChildrenLayout">
- <item>
- <widget class="QLabel" name="configurationChildrenLabel">
- <property name="text">
- <string>Children:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationChildren">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <attribute name="headerVisible">
+ <bool>false</bool>
+ </attribute>
+ <column>
<property name="text">
- <string/>
+ <string>1</string>
</property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="nlaGroup">
- <property name="title">
- <string>Network Location Awareness</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout">
+ </column>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="configurationNameLayout">
+ <item>
+ <widget class="QLabel" name="configurationNameLabel">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationStateLayout">
+ <item>
+ <widget class="QLabel" name="configurationStateLabel">
+ <property name="text">
+ <string>State:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationState">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationTypeLayout">
+ <item>
+ <widget class="QLabel" name="configurationTypeLabel">
+ <property name="text">
+ <string>Type:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationType">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Invalid</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationPurposeLayout">
+ <item>
+ <widget class="QLabel" name="configurationPurposeLabel">
+ <property name="text">
+ <string>Purpose:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationPurpose">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Unknown</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationIdentifierLayout">
+ <item>
+ <widget class="QLabel" name="configurationIdentifierLabel">
+ <property name="text">
+ <string>Identifier:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationIdentifier">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationRoamingLayout">
+ <item>
+ <widget class="QLabel" name="configurationRoamingLabel">
+ <property name="text">
+ <string>Roaming:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationRoaming">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationChildrenLayout">
+ <item>
+ <widget class="QLabel" name="configurationChildrenLabel">
+ <property name="text">
+ <string>Children:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationChildren">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="nlaGroup">
+ <property name="title">
+ <string>Network Location Awareness</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="registerButton">
+ <property name="text">
+ <string>Register</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="unregisterButton">
+ <property name="text">
+ <string>Unregister</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
<item>
- <widget class="QPushButton" name="registerButton">
+ <widget class="QPushButton" name="newSessionButton">
<property name="text">
- <string>Register</string>
+ <string>New Session</string>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="unregisterButton">
+ <widget class="QPushButton" name="deleteSessionButton">
<property name="text">
- <string>Unregister</string>
+ <string>Delete Session</string>
</property>
</widget>
</item>
+ <item>
+ <widget class="QPushButton" name="scanButton">
+ <property name="text">
+ <string>Scan</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="maximum">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>23280</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="invertedAppearance">
+ <bool>false</bool>
+ </property>
+ <property name="format">
+ <string>%p%</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="newSessionButton">
- <property name="text">
- <string>New Session</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="deleteSessionButton">
- <property name="text">
- <string>Delete Session</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="scanButton">
- <property name="text">
- <string>Scan</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="progressBar">
- <property name="maximum">
- <number>0</number>
- </property>
- <property name="value">
- <number>23280</number>
- </property>
- <property name="textVisible">
- <bool>false</bool>
- </property>
- <property name="invertedAppearance">
- <bool>false</bool>
- </property>
- <property name="format">
- <string>%p%</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
</layout>
diff --git a/examples/network/bearermonitor/main.cpp b/examples/network/bearermonitor/main.cpp
index 1a22c1341e..11399e410e 100644
--- a/examples/network/bearermonitor/main.cpp
+++ b/examples/network/bearermonitor/main.cpp
@@ -38,7 +38,8 @@
**
****************************************************************************/
-#include <QApplication>
+#include <QtGui/QApplication>
+#include <QtGui/QMainWindow>
#include "bearermonitor.h"
@@ -46,8 +47,12 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
+ QMainWindow mainWindow;
+
BearerMonitor monitor;
- monitor.show();
+
+ mainWindow.setCentralWidget(&monitor);
+ mainWindow.show();
return app.exec();
}
diff --git a/examples/network/bearermonitor/sessionwidget.cpp b/examples/network/bearermonitor/sessionwidget.cpp
index 5ec9d53b1b..51de0f2f17 100644
--- a/examples/network/bearermonitor/sessionwidget.cpp
+++ b/examples/network/bearermonitor/sessionwidget.cpp
@@ -74,7 +74,7 @@ SessionWidget::SessionWidget(const QNetworkConfiguration &config, QWidget *paren
this, SLOT(closeSession()));
connect(stopSessionButton, SIGNAL(clicked()),
this, SLOT(stopSession()));
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
connect(deleteSessionButton, SIGNAL(clicked()),
this, SLOT(deleteSession()));
#endif
@@ -94,7 +94,7 @@ void SessionWidget::timerEvent(QTimerEvent *e)
}
}
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
void SessionWidget::deleteSession()
{
delete this;
diff --git a/examples/network/bearermonitor/sessionwidget.h b/examples/network/bearermonitor/sessionwidget.h
index c92db4417c..846a1afcc9 100644
--- a/examples/network/bearermonitor/sessionwidget.h
+++ b/examples/network/bearermonitor/sessionwidget.h
@@ -42,7 +42,8 @@
#define SESSIONWIDGET_H
#include <qnetworksession.h>
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+
+#ifdef MAEMO_UI
#include "ui_sessionwidget_maemo.h"
#else
#include "ui_sessionwidget.h"
@@ -71,7 +72,7 @@ private Q_SLOTS:
void stopSession();
void updateSession();
void updateSessionError(QNetworkSession::SessionError error);
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
void deleteSession();
#endif
diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri
index b22ca856e8..0f615c70eb 100644
--- a/examples/symbianpkgrules.pri
+++ b/examples/symbianpkgrules.pri
@@ -13,4 +13,7 @@ vendorinfo = \
examples_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += examples_deployment
-contains(TEMPLATE,app):isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
+
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.h b/examples/webkit/imageanalyzer/imageanalyzer.h
index 1bb25dc163..5a969098da 100644
--- a/examples/webkit/imageanalyzer/imageanalyzer.h
+++ b/examples/webkit/imageanalyzer/imageanalyzer.h
@@ -38,15 +38,17 @@
**
****************************************************************************/
-
#ifndef IMAGEANALYZER_H
#define IMAGEANALYZER_H
+
#include <QFutureWatcher>
#include <QtGui>
+QT_BEGIN_NAMESPACE
class QNetworkAccessManager;
class QNetworkReply;
class QNetworkDiskCache;
+QT_END_NAMESPACE
//! [ ImageAnalyzer - public interface ]
class ImageAnalyzer : public QObject
diff --git a/examples/webkit/imageanalyzer/mainwindow.h b/examples/webkit/imageanalyzer/mainwindow.h
index 076e58661d..3c943dc5e3 100644
--- a/examples/webkit/imageanalyzer/mainwindow.h
+++ b/examples/webkit/imageanalyzer/mainwindow.h
@@ -45,7 +45,9 @@
#include <QWebView>
class ImageAnalyzer;
+QT_BEGIN_NAMESPACE
class QNetworkDiskCache;
+QT_END_NAMESPACE
class MainWin : public QWebView
{
diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf
index f8ab0fee38..069cdfafec 100644
--- a/mkspecs/common/clang.conf
+++ b/mkspecs/common/clang.conf
@@ -5,6 +5,9 @@
QMAKE_CC = clang
QMAKE_CXX = clang++
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
CONFIG += clang_pch_style
QMAKE_PCH_OUTPUT_EXT = .pch
diff --git a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf
new file mode 100644
index 0000000000..eb5b7d6188
--- /dev/null
+++ b/mkspecs/common/g++-base.conf
@@ -0,0 +1,30 @@
+#
+# Qmake configuration for the GNU C++ compiler
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+QMAKE_CC = gcc
+
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
+
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
+
+QMAKE_CXX = g++
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE}
+QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/g++-mac.conf b/mkspecs/common/g++-macx.conf
index bcfd9aa64c..22511573c1 100644
--- a/mkspecs/common/g++-mac.conf
+++ b/mkspecs/common/g++-macx.conf
@@ -8,7 +8,7 @@
# you can use the manual test in tests/manual/mkspecs.
#
-include(g++.conf)
+include(g++-base.conf)
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_DWARF2
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_DWARF2
diff --git a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf
index 09b3e903ba..96e301e8fa 100644
--- a/mkspecs/common/g++-unix.conf
+++ b/mkspecs/common/g++-unix.conf
@@ -8,7 +8,7 @@
# you can use the manual test in tests/manual/mkspecs.
#
-include(g++.conf)
+include(g++-base.conf)
QMAKE_LFLAGS_RELEASE += -Wl,-O1
QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
index d73b38f9b7..c5a34a9db3 100644
--- a/mkspecs/common/g++.conf
+++ b/mkspecs/common/g++.conf
@@ -1,23 +1,12 @@
#
-# Qmake configuration for the GNU C++ compiler
+# Notice: g++.conf has been split into g++-base.conf and g++-unix.conf
#
-# Before making changes to this file, please read the comment in
-# gcc-base.conf, to make sure the change goes in the right place.
+# This file will make sure that anyone who's still including g++.conf
+# directly will get a warning and an explanation of how to fix their mkspec
#
-# To verify that your change has the desired effect on the final configuration
-# you can use the manual test in tests/manual/mkspecs.
-#
-
-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
-
-QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
-
-QMAKE_LINK_C = $$QMAKE_CC
-QMAKE_LINK_C_SHLIB = $$QMAKE_CC
-QMAKE_PCH_OUTPUT_EXT = .gch
+warning($$escape_expand("Your mkspec is including 'common/g++.conf', but the mkspecs have been refactored\\n\\tTo fix this include 'common/gcc-base-$${TARGET_PLATFORM}.conf and 'common/g++-$${TARGET_PLATFORM}.conf' instead"))
-QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE}
-QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+# We include gcc-base-unix.conf and g++-unix.conf to keep the behavior of the old g++.conf
+include(gcc-base-unix.conf)
+include(g++-unix.conf)
diff --git a/mkspecs/common/gcc-base-mac.conf b/mkspecs/common/gcc-base-macx.conf
index 5c9a8a1d23..5c9a8a1d23 100644
--- a/mkspecs/common/gcc-base-mac.conf
+++ b/mkspecs/common/gcc-base-macx.conf
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
index 41280c6c4f..0e90666350 100644
--- a/mkspecs/common/gcc-base.conf
+++ b/mkspecs/common/gcc-base.conf
@@ -7,21 +7,21 @@
#
# Platform-specific options shared by these compilers are put into:
#
-# - gcc-base-mac.conf
+# - gcc-base-macx.conf
# - gcc-base-unix.conf
#
# These base files are then combined with configurations for each compiler:
#
-# - g++.conf
-# - g++-mac.conf
+# - g++-base.conf
+# - g++-macx.conf
# - g++-unix.conf
# - llvm.conf
# - clang.conf
#
# The combination happens in the top level mkspec, by including a platform-
-# specific version of the base-file, for example gcc-base-mac.conf, and then
+# specific version of the base-file, for example gcc-base-macx.conf, and then
# a (possibly platform-specific) version of the actual compiler configuration,
-# for example g++-mac.conf.
+# for example g++-macx.conf.
#
# If you are making changes to any of these files, please consider the
# possible effect it may have due to these include-rules, and whether it
@@ -31,9 +31,6 @@
# you can use the manual test in tests/manual/mkspecs.
#
-# Allow including configurations to override
-isEmpty(QMAKE_CC): QMAKE_CC = gcc
-
QMAKE_CFLAGS += -pipe
QMAKE_CFLAGS_DEPS += -M
QMAKE_CFLAGS_WARN_ON += -Wall -W
@@ -45,8 +42,6 @@ QMAKE_CFLAGS_STATIC_LIB += -fPIC
QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
-isEmpty(QMAKE_CXX): QMAKE_CXX = g++
-
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
@@ -58,9 +53,6 @@ QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
QMAKE_LFLAGS +=
QMAKE_LFLAGS_DEBUG +=
QMAKE_LFLAGS_APP +=
diff --git a/mkspecs/common/llvm.conf b/mkspecs/common/llvm.conf
index 3d663573fc..86e0ab440f 100644
--- a/mkspecs/common/llvm.conf
+++ b/mkspecs/common/llvm.conf
@@ -5,6 +5,9 @@
QMAKE_CC = llvm-gcc
QMAKE_CXX = llvm-g++
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
QMAKE_PCH_OUTPUT_EXT = .gch
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 2fb799d16e..4d0320dd91 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -27,7 +27,7 @@ QMAKE_CFLAGS_DEBUG =
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
MMP_OPTION_KEYWORDS = CW ARMCC GCCE
-VERSION_FLAGS.ARMCC = ARMCC_4_0
+VERSION_FLAGS.ARMCC = ARMCC_4
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# Symbian build system applies -cwd source on the MWCC command line.
# this causes problems with include paths, -cwd include uses the same
@@ -36,7 +36,7 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# both on the command line and rely on the compiler using the last specified
QMAKE_CXXFLAGS.CW = -cwd include
QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
-QMAKE_CXXFLAGS.ARMCC_4_0 = --import_all_vtbl
+QMAKE_CXXFLAGS.ARMCC_4 = --import_all_vtbl
QMAKE_CXXFLAGS.GCCE = -fvisibility-inlines-hidden
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
@@ -79,7 +79,6 @@ QMAKE_LIBS_OPENGL_ES2_QT = -llibglesv2 -lcone -lws32
QMAKE_LIBS_OPENVG = -llibOpenVG -lfbscli -lbitgdi -lgdi
QMAKE_LIBS_THREAD = -llibpthread
QMAKE_LIBS_COMPAT =
-QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
QMAKE_LIBS_S60 = -lavkon -leikcoctl
exists($${EPOCROOT}epoc32/include/platform/sgresource/sgimage.h) {
@@ -127,6 +126,10 @@ QT_ARCH = symbian
load(qt_config)
+QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib
+QMAKE_LIBS_NO_QT_ENTRY = -llibcrt0.lib
+QMAKE_LIBS_NO_QT_ENTRY_GCCE = -llibcrt0_gcce.lib
+
# These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS
QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins
QT_IMPORTS_BASE_DIR = /resource/qt/imports
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index d1c7c2be93..2ee148b715 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -1,6 +1,9 @@
isEmpty(TEMPLATE):TEMPLATE=app
CONFIG += qt warn_on console depend_includepath testcase
+# x11 is not defined by configure (the following line is copied from gui.pro)
+!win32:!embedded:!mac:!symbian:CONFIG += x11
+
qtAddLibrary(QtTest)
symbian:{
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
index f43ec3dd72..f50e9445bb 100644
--- a/mkspecs/features/symbian/application_icon.prf
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -7,7 +7,8 @@ contains(CONFIG, no_icon) {
symbian:RSS_RULES += "hidden = KAppIsHidden;"
CONFIG -= no_icon
}
-}
+}
+
!contains(CONFIG, no_icon) {
baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
@@ -15,10 +16,12 @@ contains(CONFIG, no_icon) {
resourceZDir = $$EPOCROOT$$HW_ZDIR$$APP_RESOURCE_DIR
regZDir = $$EPOCROOT$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR
} else {
- isEmpty(DESTDIR) {
- resourceZDir = .
- } else {
+ contains(DESTDIR, "/.*") {
resourceZDir = $$DESTDIR
+ } else:isEmpty(DESTDIR) {
+ resourceZDir = $$OUT_PWD
+ } else {
+ resourceZDir = $$OUT_PWD/$$DESTDIR
}
regZDir = $$resourceZDir
}
@@ -68,6 +71,7 @@ contains(CONFIG, no_icon) {
}
# Rules to use generated MIF file from symbian resources
RSS_RULES.number_of_icons = $$size(ICON_backslashed)
+
RSS_RULES.icon_file = $$APP_RESOURCE_DIR/$${baseTarget}.mif
default_resource_deployment.files += $$resourceZDir/$${baseTarget}.mif
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index 548fd5159b..d9ff03d6ee 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -3,16 +3,21 @@ load(default_post)
contains(TEMPLATE, ".*app") {
contains(CONFIG, stdbinary) {
QMAKE_LIBS +=
- } else:contains(QT, gui):contains(CONFIG,qt) {
- S60MAIN_LIBS = -leuser
- QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib $$S60MAIN_LIBS
- } else {
+ } else:contains(CONFIG,qt) {
QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ } else {
+ QMAKE_LIBS += $$QMAKE_LIBS_NO_QT_ENTRY
+ }
+
+ contains(DESTDIR, "/.*") {
+ default_bin_deployment.sources += $$DESTDIR/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
+ } else:isEmpty(DESTDIR) {
+ default_bin_deployment.sources += $$OUT_PWD/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
+ } else {
+ default_bin_deployment.sources += $$OUT_PWD/$$DESTDIR/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
}
-
- default_bin_deployment.files += $$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
default_bin_deployment.path += /sys/bin
-
+
load(application_icon.prf)
}
contains(TEMPLATE, lib): {
diff --git a/mkspecs/features/symbian/qt_config.prf b/mkspecs/features/symbian/qt_config.prf
index 2f446dc830..82c18621b7 100644
--- a/mkspecs/features/symbian/qt_config.prf
+++ b/mkspecs/features/symbian/qt_config.prf
@@ -3,7 +3,7 @@ load(qt_config)
!contains(QMAKE_HOST.os, "Windows") {
# Test for the existence of lower cased headers, a sign of using Gnupoc.
# Note that the qmake "exists" test won't do because it is case insensitive.
- system("test -f $${EPOCROOT}/epoc32/include/akndoc.h") {
+ system("test -f $${EPOCROOT}epoc32/include/akndoc.h") {
CONFIG += is_using_gnupoc
}
}
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index a2791a10c6..9288583c4c 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -155,6 +155,7 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
}
} else :symbian-gcce {
LIBS += \
+ -l:edllstub.lib \
-l:edll.lib \
-l:usrt2_2.lib \
-l:dfpaeabi.dso \
@@ -197,25 +198,28 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
symbian-armcc: {
QMAKE_LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso h_t__uf.l\\(switch8.o\\)
QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\)
- contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore
- QMAKE_LIBS -= -lqtmain$${QT_LIBINFIX}.lib
- QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib
+ contains(CONFIG, "qt") {
+ QMAKE_LIBS -= $$QMAKE_LIBS_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
} else {
- QMAKE_LIBS -= -llibcrt0.lib
- QMAKE_LIBS += -llibcrt0.lib
+ QMAKE_LIBS -= $$QMAKE_LIBS_NO_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_NO_QT_ENTRY
}
} else :symbian-gcce {
# notice that we can't merge these as ordering of arguments is important.
QMAKE_LIBS += \
-l:eexe.lib \
-l:usrt2_2.lib
- contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore
- QMAKE_LIBS -= -l:qtmain$${QT_LIBINFIX}.lib
- QMAKE_LIBS += -l:qtmain$${QT_LIBINFIX}.lib
+ contains(CONFIG, "qt") {
+ modified_entry = $$replace(QMAKE_LIBS_QT_ENTRY, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ QMAKE_LIBS += $$modified_entry
} else {
- QMAKE_LIBS -= -l:libcrt0.lib
- QMAKE_LIBS -= -l:libcrt0_gcce.lib
- QMAKE_LIBS += -l:libcrt0_gcce.lib
+ modified_entry = $$replace(QMAKE_LIBS_NO_QT_ENTRY, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ modified_entry = $$replace(QMAKE_LIBS_NO_QT_ENTRY_GCCE, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ QMAKE_LIBS += $$modified_entry
}
QMAKE_LIBS += \
-l:dfpaeabi.dso \
diff --git a/mkspecs/linux-llvm/qmake.conf b/mkspecs/linux-llvm/qmake.conf
index 17db1bbe80..46ea2aacbf 100644
--- a/mkspecs/linux-llvm/qmake.conf
+++ b/mkspecs/linux-llvm/qmake.conf
@@ -10,6 +10,6 @@ QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
-include(../common/llvm.conf)
include(../common/gcc-base-unix.conf)
+include(../common/llvm.conf)
load(qt_config)
diff --git a/mkspecs/macx-g++/qmake.conf b/mkspecs/macx-g++/qmake.conf
index fd36b70929..e402e54582 100644
--- a/mkspecs/macx-g++/qmake.conf
+++ b/mkspecs/macx-g++/qmake.conf
@@ -13,10 +13,7 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-QMAKE_CC = gcc
-QMAKE_CXX = g++
-
include(../common/mac.conf)
-include(../common/gcc-base-mac.conf)
-include(../common/g++-mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
load(qt_config)
diff --git a/mkspecs/macx-g++40/qmake.conf b/mkspecs/macx-g++40/qmake.conf
index cfdd724fd4..07663c6ebc 100644
--- a/mkspecs/macx-g++40/qmake.conf
+++ b/mkspecs/macx-g++40/qmake.conf
@@ -13,11 +13,16 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
+
QMAKE_CC = gcc-4.0
QMAKE_CXX = g++-4.0
-include(../common/mac.conf)
-include(../common/gcc-base-mac.conf)
-include(../common/g++-mac.conf)
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
load(qt_config)
diff --git a/mkspecs/macx-g++42/qmake.conf b/mkspecs/macx-g++42/qmake.conf
index 08305bade0..3d313056f2 100644
--- a/mkspecs/macx-g++42/qmake.conf
+++ b/mkspecs/macx-g++42/qmake.conf
@@ -13,11 +13,16 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
+
QMAKE_CC = gcc-4.2
QMAKE_CXX = g++-4.2
-include(../common/mac.conf)
-include(../common/gcc-base-mac.conf)
-include(../common/g++-mac.conf)
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
load(qt_config)
diff --git a/mkspecs/macx-llvm/qmake.conf b/mkspecs/macx-llvm/qmake.conf
index 95c2b282b6..d794701d5c 100644
--- a/mkspecs/macx-llvm/qmake.conf
+++ b/mkspecs/macx-llvm/qmake.conf
@@ -14,8 +14,8 @@ QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
include(../common/llvm.conf)
-include(../common/gcc-base-mac.conf)
QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/macx-xcode/qmake.conf b/mkspecs/macx-xcode/qmake.conf
index dc79b3d773..4cb462696e 100755
--- a/mkspecs/macx-xcode/qmake.conf
+++ b/mkspecs/macx-xcode/qmake.conf
@@ -10,8 +10,8 @@ CONFIG += qt warn_on release lib_version_first incremental plugin_no_soname li
QT += core gui
include(../common/mac.conf)
-include(../common/gcc-base-mac.conf)
-include(../common/g++-mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
QMAKE_CC =
QMAKE_CXX =
diff --git a/mkspecs/symbian-gcce/qmake.conf b/mkspecs/symbian-gcce/qmake.conf
index f012217a18..a31e6e44c5 100644
--- a/mkspecs/symbian-gcce/qmake.conf
+++ b/mkspecs/symbian-gcce/qmake.conf
@@ -4,7 +4,8 @@
include(../common/symbian/symbian-makefile.conf)
-include(../common/g++.conf)
+include(../common/g++-unix.conf)
+include(../common/gcc-base-unix.conf)
QMAKE_CC = arm-none-symbianelf-gcc
QMAKE_CXX = arm-none-symbianelf-g++
@@ -50,26 +51,25 @@ QMAKE_LFLAGS_SONAME =
QMAKE_LFLAGS_RPATH = --rpath=
DEFINES += __GCCE__ \
- UNICODE \
- _STLP_NO_EXCEPTION_HEADER
+ UNICODE
QMAKE_LFLAGS_APP += --entry=_E32Startup -u _E32Startup
-QMAKE_LFLAGS_SHLIB += --default-symver --entry _E32Dll
+QMAKE_LFLAGS_SHLIB += -shared --default-symver --entry _E32Dll
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-gcceExtraFlags = --include=${EPOCROOT}/epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
+gcceExtraFlags = --include=$${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
QMAKE_CFLAGS += $${gcceExtraFlags}
QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden
#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
isEmpty(QT):contains(TEMPLATE, app) {
- QMAKE_CXXFLAGS += --include=${EPOCROOT}/epoc32/include/stdapis/staticlibinit_gcce.h
+ QMAKE_CXXFLAGS += --include=$${EPOCROOT}epoc32/include/stdapis/staticlibinit_gcce.h
}
QMAKE_LFLAGS += --target1-abs \
--no-undefined \
--nostdlib
-QMAKE_LIBDIR += ${EPOCROOT}/epoc32/release/armv5/udeb/
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/udeb/
# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
QMAKE_GCC_SEARCH_DIRS =$$system($$QMAKE_CXX -print-search-dirs)
@@ -83,13 +83,11 @@ for(line, QMAKE_GCC_SEARCH_DIRS) {
}
}
-QMAKE_LIBDIR += $${EPOCROOT}/epoc32/release/armv5/lib
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
-INCLUDEPATH = ${EPOCROOT}/epoc32/include/ \
- $${EPOCROOT}/epoc32/include/variant \
- $${EPOCROOT}/epoc32/include/stdapis \
- $${EPOCROOT}/epoc32/include/gcce \
- ${EPOCROOT}/epoc32/include/stdapis/sys \
- ${EPOCROOT}/epoc32/include/stdapis/stlport \
+INCLUDEPATH = $${EPOCROOT}epoc32/include/ \
+ $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $${EPOCROOT}epoc32/include/gcce \
$$INCLUDEPATH
diff --git a/mkspecs/unsupported/linux-clang/qmake.conf b/mkspecs/unsupported/linux-clang/qmake.conf
index 65eba7beb5..6b63b7a06e 100644
--- a/mkspecs/unsupported/linux-clang/qmake.conf
+++ b/mkspecs/unsupported/linux-clang/qmake.conf
@@ -11,8 +11,8 @@ QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
include(../../common/linux.conf)
-include(../../common/clang.conf)
include(../../common/gcc-base-unix.conf)
+include(../../common/clang.conf)
QMAKE_LFLAGS += -ccc-gcc-name g++
diff --git a/mkspecs/unsupported/macx-clang/qmake.conf b/mkspecs/unsupported/macx-clang/qmake.conf
index 17892e8cc2..319134421a 100644
--- a/mkspecs/unsupported/macx-clang/qmake.conf
+++ b/mkspecs/unsupported/macx-clang/qmake.conf
@@ -10,8 +10,8 @@ QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
include(../../common/mac.conf)
+include(../../common/gcc-base-macx.conf)
include(../../common/clang.conf)
-include(../../common/gcc-base-mac.conf)
QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf
index 36ad503849..b891c5ea38 100644
--- a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf
@@ -2,7 +2,8 @@
# qmake configuration for building with linux-g++
#
-include(../../../common/g++.conf)
+include(../../../common/gcc-base-unix.conf)
+include(../../../common/g++-unix.conf)
include(../../../common/linux.conf)
include(../../../common/qws.conf)
diff --git a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
index 26de9b75d7..bb760b24a7 100644
--- a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
@@ -61,7 +61,6 @@ QMAKE_PCH_OUTPUT_EXT = .gch
QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
-#include(../../common/g++.conf)
include(../../common/unix.conf)
QMAKE_CFLAGS_THREAD = -D_REENTRANT
diff --git a/mkspecs/win32-msvc2003/qmake.conf b/mkspecs/win32-msvc2003/qmake.conf
index 63d1ffda90..a573a4dd8c 100644
--- a/mkspecs/win32-msvc2003/qmake.conf
+++ b/mkspecs/win32-msvc2003/qmake.conf
@@ -53,7 +53,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
diff --git a/mkspecs/win32-msvc2005/qmake.conf b/mkspecs/win32-msvc2005/qmake.conf
index 265d0287b5..aa58e3044c 100644
--- a/mkspecs/win32-msvc2005/qmake.conf
+++ b/mkspecs/win32-msvc2005/qmake.conf
@@ -55,7 +55,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/mkspecs/win32-msvc2008/qmake.conf b/mkspecs/win32-msvc2008/qmake.conf
index 1432645a9e..ee7b99ad74 100644
--- a/mkspecs/win32-msvc2008/qmake.conf
+++ b/mkspecs/win32-msvc2008/qmake.conf
@@ -57,7 +57,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/mkspecs/win32-msvc2010/qmake.conf b/mkspecs/win32-msvc2010/qmake.conf
index 84086e299c..44e460e6af 100644
--- a/mkspecs/win32-msvc2010/qmake.conf
+++ b/mkspecs/win32-msvc2010/qmake.conf
@@ -57,7 +57,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index 0938b58972..9d4f27e124 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -699,7 +699,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
newValues << itemList.join("\n");
}
}
- // Verify thet there is exactly one value in RSS_TAG_NBROFICONS
+ // Verify that there is exactly one value in RSS_TAG_NBROFICONS
if (newKey == RSS_TAG_NBROFICONS) {
if (newValues.count() == 1) {
numberOfIcons = newValues[0];
@@ -708,7 +708,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
RSS_RULES_BASE, RSS_TAG_NBROFICONS);
continue;
}
- // Verify thet there is exactly one value in RSS_TAG_ICONFILE
+ // Verify that there is exactly one value in RSS_TAG_ICONFILE
} else if (newKey == RSS_TAG_ICONFILE) {
if (newValues.count() == 1) {
iconFile = newValues[0];
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 7351d1a91e..5f5745ac04 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -677,7 +677,23 @@ QMakeProject::reset()
bool
QMakeProject::parse(const QString &t, QMap<QString, QStringList> &place, int numLines)
{
- QString s = t.simplified();
+ // To preserve the integrity of any UTF-8 characters in .pro file, temporarily replace the
+ // non-breaking space (0xA0) characters with another non-space character, so that
+ // QString::simplified() call will not replace it with space.
+ // Note: There won't be any two byte characters in .pro files, so 0x10A0 should be a safe
+ // replacement character.
+ static QChar nbsp(0xA0);
+ static QChar nbspFix(0x01A0);
+ QString s;
+ if (t.indexOf(nbsp) != -1) {
+ s = t;
+ s.replace(nbsp, nbspFix);
+ s = s.simplified();
+ s.replace(nbspFix, nbsp);
+ } else {
+ s = t.simplified();
+ }
+
int hash_mark = s.indexOf("#");
if(hash_mark != -1) //good bye comments
s = s.left(hash_mark);
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
index 817fb0d0f8..4a618da35b 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
@@ -833,7 +833,7 @@ static const unsigned char indicPosition[0xe00-0x900] = {
None, None, None, None,
None, None, None, Post,
- Post, None, Below, None,
+ Pre, None, Below, None,
None, Post, None, None,
None, None, None, None,
None, None, Post, Post,
diff --git a/src/3rdparty/phonon/mmf/videowidget.cpp b/src/3rdparty/phonon/mmf/videowidget.cpp
index 122094edf1..d59e82aec6 100644
--- a/src/3rdparty/phonon/mmf/videowidget.cpp
+++ b/src/3rdparty/phonon/mmf/videowidget.cpp
@@ -65,6 +65,8 @@ MMF::VideoWidget::VideoWidget(QWidget *parent)
TRACE_CONTEXT(VideoWidget::VideoWidget, EVideoApi);
TRACE_ENTRY_0();
+ parent->setProperty("_q_DummyWindowSurface", true);
+
TRACE_EXIT_0();
}
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 641b42bdb9..9add36e14b 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -166,11 +166,12 @@ Q_GLOBAL_STATIC(QThreadStorage<QUnifiedTimer *>, unifiedTimer)
#endif
QUnifiedTimer::QUnifiedTimer() :
- QObject(), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
+ QObject(), defaultDriver(this), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
currentAnimationIdx(0), consistentTiming(false), slowMode(false),
slowdownFactor(5.0f), isPauseTimerActive(false), runningLeafAnimations(0)
{
time.invalidate();
+ driver = &defaultDriver;
}
@@ -247,14 +248,27 @@ void QUnifiedTimer::restartAnimationTimer()
qDebug() << runningPauseAnimations;
qDebug() << closestPauseAnimationTimeToFinish();
}
+ driver->stop();
animationTimer.start(closestTimeToFinish, this);
isPauseTimerActive = true;
- } else if (!animationTimer.isActive() || isPauseTimerActive) {
- animationTimer.start(timingInterval, this);
+ } else if (!driver->isRunning() || isPauseTimerActive) {
+ driver->start();
isPauseTimerActive = false;
}
}
+void QUnifiedTimer::setTimingInterval(int interval)
+{
+ timingInterval = interval;
+
+ if (driver->isRunning() && !isPauseTimerActive) {
+ //we changed the timing interval
+ driver->stop();
+ driver->start();
+ }
+}
+
+
void QUnifiedTimer::timerEvent(QTimerEvent *event)
{
//in the case of consistent timing we make sure the orders in which events come is always the same
@@ -369,6 +383,129 @@ int QUnifiedTimer::closestPauseAnimationTimeToFinish()
return closestTimeToFinish;
}
+void QUnifiedTimer::installAnimationDriver(QAnimationDriver *d)
+{
+ if (driver->isRunning()) {
+ qWarning("QUnifiedTimer: Cannot change animation driver while animations are running");
+ return;
+ }
+
+ if (driver && driver != &defaultDriver)
+ delete driver;
+
+ driver = d;
+}
+
+/*!
+ \class QAnimationDriver
+
+ \brief The QAnimationDriver class is used to exchange the mechanism that drives animations.
+
+ The default animation system is driven by a timer that fires at regular intervals.
+ In some scenarios, it is better to drive the animation based on other synchronization
+ mechanisms, such as the vertical refresh rate of the screen.
+ */
+
+QAnimationDriver::QAnimationDriver(QObject *parent)
+ : QObject(*(new QAnimationDriverPrivate), parent)
+{
+}
+
+QAnimationDriver::QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+}
+
+
+/*!
+ Advances the animation based on the current time. This function should
+ be continuously called by the driver while the animation is running.
+ */
+void QAnimationDriver::advance()
+{
+ QUnifiedTimer *instance = QUnifiedTimer::instance();
+
+ // update current time on all top level animations
+ instance->updateAnimationsTime();
+ instance->restartAnimationTimer();
+}
+
+
+/*!
+ Installs this animation driver. The animation driver is thread local and
+ will only apply for the thread its installed in.
+ */
+void QAnimationDriver::install()
+{
+ QUnifiedTimer *timer = QUnifiedTimer::instance(true);
+ timer->installAnimationDriver(this);
+}
+
+bool QAnimationDriver::isRunning() const
+{
+ return d_func()->running;
+}
+
+
+void QAnimationDriver::start()
+{
+ Q_D(QAnimationDriver);
+ if (!d->running) {
+ started();
+ d->running = true;
+ }
+}
+
+
+void QAnimationDriver::stop()
+{
+ Q_D(QAnimationDriver);
+ if (d->running) {
+ stopped();
+ d->running = false;
+ }
+}
+
+/*!
+ \fn QAnimationDriver::started()
+
+ This function is called by the animation framework to notify the driver
+ that it should start running.
+ */
+
+/*!
+ \fn QAnimationDriver::stopped()
+
+ This function is called by the animation framework to notify the driver
+ that it should stop running.
+ */
+
+/*!
+ The default animation driver just spins the timer...
+ */
+QDefaultAnimationDriver::QDefaultAnimationDriver(QUnifiedTimer *timer)
+ : QAnimationDriver(0), m_unified_timer(timer)
+{
+}
+
+void QDefaultAnimationDriver::timerEvent(QTimerEvent *e)
+{
+ Q_ASSERT(e->timerId() == m_timer.timerId());
+ advance();
+}
+
+void QDefaultAnimationDriver::started()
+{
+ m_timer.start(m_unified_timer->timingInterval, this);
+}
+
+void QDefaultAnimationDriver::stopped()
+{
+ m_timer.stop();
+}
+
+
+
void QAbstractAnimationPrivate::setState(QAbstractAnimation::State newState)
{
Q_Q(QAbstractAnimation);
@@ -794,6 +931,9 @@ void QAbstractAnimation::stop()
{
Q_D(QAbstractAnimation);
+ if (d->state == Stopped)
+ return;
+
d->setState(Stopped);
}
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index d3c0d0dcec..6abe8c197d 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.h
@@ -54,6 +54,7 @@ QT_MODULE(Core)
class QAnimationGroup;
class QSequentialAnimationGroup;
+class QAnimationDriver;
class QAbstractAnimationPrivate;
class Q_CORE_EXPORT QAbstractAnimation : public QObject
@@ -132,6 +133,36 @@ private:
Q_DECLARE_PRIVATE(QAbstractAnimation)
};
+class QAnimationDriverPrivate;
+class Q_CORE_EXPORT QAnimationDriver : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QAnimationDriver)
+
+public:
+ QAnimationDriver(QObject *parent);
+
+ void advance();
+ void install();
+
+ bool isRunning() const;
+
+protected:
+ virtual void started() = 0;
+ virtual void stopped() = 0;
+
+ QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent = 0);
+
+private:
+ friend class QUnifiedTimer;
+
+ void start();
+ void stop();
+};
+
+
+
+
#endif //QT_NO_ANIMATION
QT_END_NAMESPACE
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index d3d4098252..d56c130d12 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -58,6 +58,7 @@
#include <QtCore/qtimer.h>
#include <QtCore/qelapsedtimer.h>
#include <private/qobject_p.h>
+#include <qabstractanimation.h>
#ifdef Q_OS_WIN
#include <qt_windows.h>
@@ -114,30 +115,47 @@ private:
Q_DECLARE_PUBLIC(QAbstractAnimation)
};
+
+class QUnifiedTimer;
+class QDefaultAnimationDriver : public QAnimationDriver
+{
+ Q_OBJECT
+public:
+ QDefaultAnimationDriver(QUnifiedTimer *timer);
+ void timerEvent(QTimerEvent *e);
+
+ void started();
+ void stopped();
+
+private:
+ QBasicTimer m_timer;
+ QUnifiedTimer *m_unified_timer;
+};
+
+class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
+{
+public:
+ QAnimationDriverPrivate() : running(false) {}
+ bool running;
+};
+
typedef QElapsedTimer ElapsedTimer;
-class QUnifiedTimer : public QObject
+class Q_CORE_EXPORT QUnifiedTimer : public QObject
{
private:
QUnifiedTimer();
public:
//XXX this is needed by dui
- static Q_CORE_EXPORT QUnifiedTimer *instance();
+ static QUnifiedTimer *instance();
static QUnifiedTimer *instance(bool create);
static void registerAnimation(QAbstractAnimation *animation, bool isTopLevel);
static void unregisterAnimation(QAbstractAnimation *animation);
//defines the timing interval. Default is DEFAULT_TIMER_INTERVAL
- void setTimingInterval(int interval)
- {
- timingInterval = interval;
- if (animationTimer.isActive() && !isPauseTimerActive) {
- //we changed the timing interval
- animationTimer.start(timingInterval, this);
- }
- }
+ void setTimingInterval(int interval);
/*
this allows to have a consistent timer interval at each tick from the timer
@@ -161,11 +179,20 @@ public:
*/
static void updateAnimationTimer();
+ void installAnimationDriver(QAnimationDriver *driver);
+
+ void restartAnimationTimer();
+ void updateAnimationsTime();
+
protected:
void timerEvent(QTimerEvent *);
private:
- // timer used for all active (running) animations
+ friend class QDefaultAnimationDriver;
+
+ QAnimationDriver *driver;
+ QDefaultAnimationDriver defaultDriver;
+
QBasicTimer animationTimer;
// timer used to delay the check if we should start/stop the animation timer
QBasicTimer startStopAnimationTimer;
@@ -195,9 +222,6 @@ private:
void registerRunningAnimation(QAbstractAnimation *animation);
void unregisterRunningAnimation(QAbstractAnimation *animation);
- void restartAnimationTimer();
-
- void updateAnimationsTime();
int closestPauseAnimationTimeToFinish();
};
diff --git a/src/corelib/arch/qatomic_arm.h b/src/corelib/arch/qatomic_arm.h
index 1c1c8a54b1..0513af2a2a 100644
--- a/src/corelib/arch/qatomic_arm.h
+++ b/src/corelib/arch/qatomic_arm.h
@@ -59,7 +59,7 @@ QT_END_INCLUDE_HEADER
|| defined(__ARM_ARCH_6K__) \
|| defined(__ARM_ARCH_6ZK__) \
|| defined(__ARM_ARCH_6M__) \
- || (__TARGET_ARCH_ARM-0 >= 6)
+ || (defined(__TARGET_ARCH_ARM) && (__TARGET_ARCH_ARM-0 >= 6))
# define QT_ARCH_ARMV6
QT_BEGIN_INCLUDE_HEADER
# include "QtCore/qatomic_armv6.h"
diff --git a/src/corelib/concurrent/qtconcurrentrunbase.h b/src/corelib/concurrent/qtconcurrentrunbase.h
index a6bbe3e0c3..888d3952c6 100644
--- a/src/corelib/concurrent/qtconcurrentrunbase.h
+++ b/src/corelib/concurrent/qtconcurrentrunbase.h
@@ -100,7 +100,18 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<T>::reportException(e);
+ } catch (...) {
+ QFutureInterface<T>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
+
this->reportResult(result);
this->reportFinished();
}
@@ -117,7 +128,17 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<void>::reportException(e);
+ } catch (...) {
+ QFutureInterface<void>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
this->reportFinished();
}
};
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index e71e3b6d44..b75a3d8617 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -64,6 +64,10 @@
#ifdef __cplusplus
+#ifndef QT_NO_STL
+#include <algorithm>
+#endif
+
#ifndef QT_NAMESPACE /* user namespace */
# define QT_PREPEND_NAMESPACE(name) ::name
@@ -2064,9 +2068,14 @@ Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
template <typename T>
inline void qSwap(T &value1, T &value2)
{
+#ifdef QT_NO_STL
const T t = value1;
value1 = value2;
value2 = t;
+#else
+ using std::swap;
+ swap(value1, value2);
+#endif
}
/*
@@ -2078,12 +2087,23 @@ inline void qSwap(T &value1, T &value2)
types must declare a 'bool isDetached(void) const;' member for this
to work.
*/
+#ifdef QT_NO_STL
+#define Q_DECLARE_SHARED_STL(TYPE)
+#else
+#define Q_DECLARE_SHARED_STL(TYPE) \
+QT_END_NAMESPACE \
+namespace std { \
+ template<> inline void swap<QT_PREPEND_NAMESPACE(TYPE)>(QT_PREPEND_NAMESPACE(TYPE) &value1, QT_PREPEND_NAMESPACE(TYPE) &value2) \
+ { swap(value1.data_ptr(), value2.data_ptr()); } \
+} \
+QT_BEGIN_NAMESPACE
+#endif
+
#define Q_DECLARE_SHARED(TYPE) \
template <> inline bool qIsDetached<TYPE>(TYPE &t) { return t.isDetached(); } \
template <> inline void qSwap<TYPE>(TYPE &value1, TYPE &value2) \
-{ \
- qSwap(value1.data_ptr(), value2.data_ptr()); \
-}
+{ qSwap(value1.data_ptr(), value2.data_ptr()); } \
+Q_DECLARE_SHARED_STL(TYPE)
/*
QTypeInfo primitive specializations
diff --git a/src/corelib/global/qmalloc.cpp b/src/corelib/global/qmalloc.cpp
index 090998c0cf..028a0a580d 100644
--- a/src/corelib/global/qmalloc.cpp
+++ b/src/corelib/global/qmalloc.cpp
@@ -90,8 +90,6 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
return newptr + 1;
}
- union { void *ptr; void **pptr; quintptr n; } real, faked;
-
// qMalloc returns pointers aligned at least at sizeof(size_t) boundaries
// but usually more (8- or 16-byte boundaries).
// So we overallocate by alignment-sizeof(size_t) bytes, so we're guaranteed to find a
@@ -100,19 +98,21 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
// However, we need to store the actual pointer, so we need to allocate actually size +
// alignment anyway.
- real.ptr = qRealloc(actualptr, newsize + alignment);
- if (!real.ptr)
+ void *real = qRealloc(actualptr, newsize + alignment);
+ if (!real)
return 0;
- faked.n = real.n + alignment;
- faked.n &= ~(alignment - 1);
+ quintptr faked = reinterpret_cast<quintptr>(real) + alignment;
+ faked &= ~(alignment - 1);
+
+ void **faked_ptr = reinterpret_cast<void **>(faked);
// now save the value of the real pointer at faked-sizeof(void*)
// by construction, alignment > sizeof(void*) and is a power of 2, so
// faked-sizeof(void*) is properly aligned for a pointer
- faked.pptr[-1] = real.ptr;
+ faked_ptr[-1] = real;
- return faked.ptr;
+ return faked_ptr;
}
void qFreeAligned(void *ptr)
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index 4740a8974b..dc18ae77e7 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -353,24 +353,24 @@ void QInotifyFileSystemWatcherEngine::readFromInotify()
ioctl(inotifyFd, FIONREAD, (char *) &buffSize);
QVarLengthArray<char, 4096> buffer(buffSize);
buffSize = read(inotifyFd, buffer.data(), buffSize);
- const char *at = buffer.data();
- const char * const end = at + buffSize;
+ char *at = buffer.data();
+ char * const end = at + buffSize;
- QMap<int, inotify_event> eventForId;
+ QMap<int, inotify_event *> eventForId;
while (at < end) {
- const inotify_event *event = reinterpret_cast<const inotify_event *>(at);
+ inotify_event *event = reinterpret_cast<inotify_event *>(at);
if (eventForId.contains(event->wd))
- eventForId[event->wd].mask |= event->mask;
+ eventForId[event->wd]->mask |= event->mask;
else
- eventForId.insert(event->wd, *event);
+ eventForId.insert(event->wd, event);
at += sizeof(inotify_event) + event->len;
}
- QMap<int, inotify_event>::const_iterator it = eventForId.constBegin();
+ QMap<int, inotify_event *>::const_iterator it = eventForId.constBegin();
while (it != eventForId.constEnd()) {
- inotify_event event = *it;
+ const inotify_event &event = **it;
++it;
// qDebug() << "inotify event, wd" << event.wd << "mask" << hex << event.mask;
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 3f11c3949d..71b10b4cb9 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -73,6 +73,10 @@
#define SPI_GETPLATFORMTYPE 257
#endif
+#ifndef PATH_MAX
+#define PATH_MAX FILENAME_MAX
+#endif
+
#ifndef _INTPTR_T_DEFINED
#ifdef _WIN64
typedef __int64 intptr_t;
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index e4fb295772..7235459126 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -88,6 +88,12 @@
#define CSIDL_APPDATA 0x001a // <username>\Application Data
#endif
+#ifdef Q_AUTOTEST_EXPORT
+# define Q_AUTOTEST_EXPORT_HELPER Q_AUTOTEST_EXPORT
+#else
+# define Q_AUTOTEST_EXPORT_HELPER static
+#endif
+
// ************************************************************************
// QConfFile
@@ -134,7 +140,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
# include <sys/mount.h>
QT_END_INCLUDE_NAMESPACE
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statfs buf;
if (fstatfs(handle, &buf) != 0)
@@ -160,7 +166,7 @@ QT_END_INCLUDE_NAMESPACE
# define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0
# endif
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statfs buf;
if (fstatfs(handle, &buf) != 0)
@@ -177,7 +183,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
# include <sys/statvfs.h>
QT_END_INCLUDE_NAMESPACE
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statvfs buf;
if (fstatvfs(handle, &buf) != 0)
@@ -189,7 +195,7 @@ static bool isLikelyToBeNfs(int handle)
#endif
}
#else
-static inline bool isLikelyToBeNfs(int /* handle */)
+Q_AUTOTEST_EXPORT_HELPER inline bool qIsLikelyToBeNfs(int /* handle */)
{
return true;
}
@@ -203,7 +209,7 @@ static bool unixLock(int handle, int lockType)
now is to disable locking when we detect NFS (or AutoFS or
CacheFS, which are probably wrapping NFS).
*/
- if (isLikelyToBeNfs(handle))
+ if (qIsLikelyToBeNfs(handle))
return false;
struct flock fl;
@@ -1229,16 +1235,21 @@ QConfFileSettingsPrivate::~QConfFileSettingsPrivate()
if (confFiles[i] && !confFiles[i]->ref.deref()) {
if (confFiles[i]->size == 0) {
delete confFiles[i].take();
- } else if (unusedCache) {
+ } else {
if (usedHash)
usedHash->remove(confFiles[i]->name);
- QT_TRY {
- // compute a better size?
- unusedCache->insert(confFiles[i]->name, confFiles[i].data(),
- 10 + (confFiles[i]->originalKeys.size() / 4));
- confFiles[i].take();
- } QT_CATCH(...) {
- // out of memory. Do not cache the file.
+ if (unusedCache) {
+ QT_TRY {
+ // compute a better size?
+ unusedCache->insert(confFiles[i]->name, confFiles[i].data(),
+ 10 + (confFiles[i]->originalKeys.size() / 4));
+ confFiles[i].take();
+ } QT_CATCH(...) {
+ // out of memory. Do not cache the file.
+ delete confFiles[i].take();
+ }
+ } else {
+ // unusedCache is gone - delete the entry to prevent a memory leak
delete confFiles[i].take();
}
}
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 6452c0fc80..6ec556205d 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -6048,6 +6048,14 @@ QUrl &QUrl::operator =(const QString &url)
return *this;
}
+/*!
+ \fn void QUrl::swap(QUrl &other)
+ \since 4.8
+
+ Swaps URL \a other with this URL. This operation is very
+ fast and never fails.
+*/
+
/*! \internal
Forces a detach.
diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h
index 563be5fd19..63fe98dcae 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -100,6 +100,8 @@ public:
#endif
~QUrl();
+ inline void swap(QUrl &other) { qSwap(d, other.d); }
+
void setUrl(const QString &url);
void setUrl(const QString &url, ParsingMode mode);
// ### Qt 5: merge the two setUrl() functions, with mode = TolerantMode
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index e967884241..a8dc491c4e 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -415,11 +415,10 @@ QString qAppName()
operations can call processEvents() to keep the application
responsive.
- Some Qt classes, such as QString, can be used without a
- QCoreApplication object. However, in general, we recommend that
- you create a QCoreApplication or a QApplication object in your \c
- main() function as early as possible. exit() will not return
- until the event loop exits; e.g., when quit() is called.
+ In general, we recommend that you create a QCoreApplication or
+ a QApplication object in your \c main() function as early as
+ possible. exit() will not return until the event loop exits;
+ e.g., when quit() is called.
Several static convenience functions are also provided. The
QCoreApplication object is available from instance(). Events can
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index 8390275bb7..8d257803fa 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -180,6 +180,8 @@ static gboolean timerSourceCheck(GSource *source)
static gboolean timerSourceDispatch(GSource *source, GSourceFunc, gpointer)
{
GTimerSource *timerSource = reinterpret_cast<GTimerSource *>(source);
+ if (timerSource->processEventsFlags & QEventLoop::X11ExcludeTimers)
+ return true;
timerSource->runWithIdlePriority = true;
(void) timerSource->timerList.activateTimers();
return true; // ??? don't remove, right again?
@@ -311,6 +313,10 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
}
}
+#if GLIB_CHECK_VERSION (2, 22, 0)
+ g_main_context_push_thread_default (mainContext);
+#endif
+
// setup post event source
postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
sizeof(GPostEventSource)));
@@ -389,6 +395,9 @@ QEventDispatcherGlib::~QEventDispatcherGlib()
d->postEventSource = 0;
Q_ASSERT(d->mainContext != 0);
+#if GLIB_CHECK_VERSION (2, 22, 0)
+ g_main_context_pop_thread_default (d->mainContext);
+#endif
g_main_context_unref(d->mainContext);
d->mainContext = 0;
}
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 87d6a49775..61541199db 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -975,9 +975,7 @@ bool QEventDispatcherSymbian::sendPostedEvents()
inline void QEventDispatcherSymbian::addDeferredActiveObject(QActiveObject *object)
{
- if (m_deferredActiveObjects.isEmpty()) {
- m_completeDeferredAOs->complete();
- }
+ queueDeferredActiveObjectsCompletion();
m_deferredActiveObjects.append(object);
}
@@ -986,6 +984,11 @@ inline void QEventDispatcherSymbian::removeDeferredActiveObject(QActiveObject *o
m_deferredActiveObjects.removeAll(object);
}
+void QEventDispatcherSymbian::queueDeferredActiveObjectsCompletion()
+{
+ m_completeDeferredAOs->complete();
+}
+
void QEventDispatcherSymbian::reactivateDeferredActiveObjects()
{
while (!m_deferredActiveObjects.isEmpty()) {
diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h
index 1486db504e..3615996f54 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian_p.h
+++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h
@@ -247,7 +247,9 @@ public:
void addDeferredActiveObject(QActiveObject *object);
void removeDeferredActiveObject(QActiveObject *object);
- void reactivateDeferredActiveObjects();
+ void queueDeferredActiveObjectsCompletion();
+ // Can be overridden to activate local active objects too, but do call baseclass!
+ virtual void reactivateDeferredActiveObjects();
inline int iterationCount() const { return m_iterationCount; }
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index bf4001a1fc..899ca7bc9a 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -249,7 +249,7 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Ty
\o We can subclass QMimeData and reimplement hasFormat(),
formats(), and retrieveData().
- \o If the drag and drop operation occurs withing a single
+ \o If the drag and drop operation occurs within a single
application, we can subclass QMimeData and add extra data in
it, and use a qobject_cast() in the receiver's drop event
handler. For example:
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 573bb50bcb..7fe9c52a56 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3508,9 +3508,7 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign
// determine if this connection should be sent immediately or
// put into the event queue
- if ((c->connectionType == Qt::AutoConnection
- && (!receiverInSameThread
- || receiver->d_func()->threadData != sender->d_func()->threadData))
+ if ((c->connectionType == Qt::AutoConnection && !receiverInSameThread)
|| (c->connectionType == Qt::QueuedConnection)) {
queued_activate(sender, signal_absolute_index, c, argv ? argv : empty_argv);
continue;
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index feb85ce714..aa070f118c 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1808,6 +1808,14 @@ QVariant& QVariant::operator=(const QVariant &variant)
}
/*!
+ \fn void QVariant::swap(QVariant &other)
+ \since 4.8
+
+ Swaps variant \a other with this variant. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn void QVariant::detach()
\internal
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index b2679548c8..611db8bd83 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -224,6 +224,8 @@ class Q_CORE_EXPORT QVariant
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QVariant &other) { qSwap(d, other.d); }
+
Type type() const;
int userType() const;
const char *typeName() const;
diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp
index 4ae7f8509f..c60b3d5973 100644
--- a/src/corelib/plugin/qelfparser_p.cpp
+++ b/src/corelib/plugin/qelfparser_p.cpp
@@ -39,8 +39,11 @@
**
****************************************************************************/
-#include "qlibrary_p.h"
#include "qelfparser_p.h"
+
+#if defined (Q_OF_ELF) && defined(Q_CC_GNU)
+
+#include "qlibrary_p.h"
#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -232,3 +235,4 @@ int QElfParser::parse(const char *dataStart, ulong fdlen, const QString &library
QT_END_NAMESPACE
+#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU)
diff --git a/src/corelib/plugin/qelfparser_p.h b/src/corelib/plugin/qelfparser_p.h
index 380d5a1e16..8087da5597 100644
--- a/src/corelib/plugin/qelfparser_p.h
+++ b/src/corelib/plugin/qelfparser_p.h
@@ -56,6 +56,8 @@
#include <qendian.h>
#include <qglobal.h>
+#if defined (Q_OF_ELF) && defined(Q_CC_GNU)
+
QT_BEGIN_NAMESPACE
class QString;
@@ -99,5 +101,6 @@ public:
QT_END_NAMESPACE
-#endif // QELFPARSER_P_H
+#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU)
+#endif // QELFPARSER_P_H
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 09558a9aab..98f7931dcb 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -178,7 +178,7 @@ QT_BEGIN_NAMESPACE
QStateMachinePrivate::QStateMachinePrivate()
{
- QAbstractStatePrivate::isMachine = true;
+ isMachine = true;
state = NotRunning;
_startState = 0;
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index daf1a939ba..f508c0a4c0 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -345,6 +345,7 @@ void QThreadPrivate::finish(void *arg)
emit thr->terminated();
d->terminated = false;
emit thr->finished();
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
if (d->data->eventDispatcher) {
d->data->eventDispatcher->closingDown();
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index f0cbe8dab3..4a967ed3bc 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -332,6 +332,7 @@ void QThreadPrivate::finish(void *arg, bool lockAnyway)
emit thr->terminated();
d->terminated = false;
emit thr->finished();
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
if (d->data->eventDispatcher) {
d->data->eventDispatcher->closingDown();
diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp
index 04018ba20f..a1ad787e09 100644
--- a/src/corelib/tools/qbitarray.cpp
+++ b/src/corelib/tools/qbitarray.cpp
@@ -418,6 +418,13 @@ void QBitArray::fill(bool value, int begin, int end)
this bit array.
*/
+/*! \fn void QBitArray::swap(QBitArray &other)
+ \since 4.8
+
+ Swaps bit array \a other with this bit array. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QBitArray::operator==(const QBitArray &other) const
Returns true if \a other is equal to this bit array; otherwise
diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h
index bd79904ec6..ddda5e7af0 100644
--- a/src/corelib/tools/qbitarray.h
+++ b/src/corelib/tools/qbitarray.h
@@ -68,6 +68,8 @@ public:
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QBitArray &other) { qSwap(d, other.d); }
+
inline int size() const { return (d.size() << 3) - *d.constData(); }
inline int count() const { return (d.size() << 3) - *d.constData(); }
int count(bool on) const;
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 6ba9fd3e75..f26d8783f6 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -541,6 +541,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
forever {
ulong alloc = len;
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + alloc));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
@@ -556,6 +561,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
switch (res) {
case Z_OK:
if (len != alloc) {
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + len));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
@@ -904,6 +914,13 @@ QByteArray &QByteArray::operator=(const char *str)
return *this;
}
+/*! \fn void QByteArray::swap(QByteArray &other)
+ \since 4.8
+
+ Swaps byte array \a other with this byte array. This operation is very
+ fast and never fails.
+*/
+
/*! \fn int QByteArray::size() const
Returns the number of bytes in this byte array.
diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h
index 3cdcaabd4e..b625f4c5e2 100644
--- a/src/corelib/tools/qbytearray.h
+++ b/src/corelib/tools/qbytearray.h
@@ -149,6 +149,8 @@ public:
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QByteArray &other) { qSwap(d, other.d); }
+
inline int size() const;
bool isEmpty() const;
void resize(int size);
diff --git a/src/corelib/tools/qcontiguouscache.cpp b/src/corelib/tools/qcontiguouscache.cpp
index 3ba5186af9..7880bd3a3d 100644
--- a/src/corelib/tools/qcontiguouscache.cpp
+++ b/src/corelib/tools/qcontiguouscache.cpp
@@ -194,6 +194,13 @@ MyRecord record(int row) const
Assigns \a other to this cache and returns a reference to this cache.
*/
+/*! \fn void QContiguousCache::swap(QContiguousCache<T> &other)
+ \since 4.8
+
+ Swaps cache \a other with this cache. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QContiguousCache::operator==(const QContiguousCache<T> &other) const
Returns true if \a other is equal to this cache; otherwise returns false.
diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h
index 4c1a846633..3d0a1593b5 100644
--- a/src/corelib/tools/qcontiguouscache.h
+++ b/src/corelib/tools/qcontiguouscache.h
@@ -114,6 +114,7 @@ public:
inline QContiguousCache<T> &operator=(QContiguousCache<T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QContiguousCache<T> &other) { qSwap(d, other.d); }
bool operator==(const QContiguousCache<T> &other) const;
inline bool operator!=(const QContiguousCache<T> &other) const { return !(*this == other); }
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 2971c063c1..3dc9c92fff 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -730,6 +730,20 @@ void QHashData::checkSanity()
Assigns \a other to this hash and returns a reference to this hash.
*/
+/*! \fn void QHash::swap(QHash<Key, T> &other)
+ \since 4.8
+
+ Swaps hash \a other with this hash. This operation is very
+ fast and never fails.
+*/
+
+/*! \fn void QMultiHash::swap(QMultiHash<Key, T> &other)
+ \since 4.8
+
+ Swaps hash \a other with this hash. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QHash::operator==(const QHash<Key, T> &other) const
Returns true if \a other is equal to this hash; otherwise returns
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 992ff33b94..21fca2dd05 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -287,6 +287,7 @@ public:
inline QHash<Key, T> &operator=(QHash<Key, T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QHash<Key, T> &other) { qSwap(d, other.d); }
bool operator==(const QHash<Key, T> &other) const;
inline bool operator!=(const QHash<Key, T> &other) const { return !(*this == other); }
@@ -925,6 +926,7 @@ class QMultiHash : public QHash<Key, T>
public:
QMultiHash() {}
QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
+ inline void swap(QMultiHash<Key, T> &other) { QHash<Key, T>::swap(other); } // prevent QMultiHash<->QHash swaps
inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value)
{ return QHash<Key, T>::insert(key, value); }
diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index 7213c6ef31..7b452fc1b8 100644
--- a/src/corelib/tools/qlinkedlist.cpp
+++ b/src/corelib/tools/qlinkedlist.cpp
@@ -147,6 +147,13 @@ QLinkedListData QLinkedListData::shared_null = {
list.
*/
+/*! \fn void QLinkedList::swap(QLinkedList<T> &other)
+ \since 4.8
+
+ Swaps list \a other with this list. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QLinkedList::operator==(const QLinkedList<T> &other) const
Returns true if \a other is equal to this list; otherwise returns
diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h
index c0879441fd..849bfd3a52 100644
--- a/src/corelib/tools/qlinkedlist.h
+++ b/src/corelib/tools/qlinkedlist.h
@@ -89,6 +89,7 @@ public:
inline QLinkedList<T> &operator=(QLinkedList<T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QLinkedList<T> &other) { qSwap(d, other.d); }
bool operator==(const QLinkedList<T> &l) const;
inline bool operator!=(const QLinkedList<T> &l) const { return !(*this == l); }
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index 9ba3768acb..5706171130 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -602,6 +602,13 @@ void **QListData::erase(void **xi)
list.
*/
+/*! \fn void QList::swap(QList<T> &other)
+ \since 4.8
+
+ Swaps list \a other with this list. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QList::operator==(const QList<T> &other) const
Returns true if \a other is equal to this list; otherwise returns
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index 8f988d60a2..b1fcabfa8c 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -126,6 +126,7 @@ public:
inline QList &operator=(QList &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QList<T> &other) { qSwap(d, other.d); }
#ifdef Q_COMPILER_INITIALIZER_LISTS
inline QList(std::initializer_list<T> args) : d(&QListData::shared_null)
{ d->ref.ref(); qCopy(args.begin(), args.end(), std::back_inserter(*this)); }
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 6b1de5ef0e..2fb3616223 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -7308,6 +7308,7 @@ Q_CORE_EXPORT char *qdtoa( double d, int mode, int ndigits, int *decpt, int *sig
Q_CORE_EXPORT double qstrtod(const char *s00, const char **se, bool *ok)
{
+ errno = 0;
double ret = strtod((char*)s00, (char**)se);
if (ok) {
if((ret == 0.0l && errno == ERANGE)
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index 8b424bbc3a..1af2cb476a 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -114,7 +114,7 @@ class Q_CORE_EXPORT QLocale
friend class QString;
friend class QByteArray;
friend class QIntValidator;
- friend class QDoubleValidator;
+ friend class QDoubleValidatorPrivate;
friend class QTextStream;
friend class QTextStreamPrivate;
diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp
index 3143ee4081..5a5fffde8a 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -404,6 +404,20 @@ void QMapData::dump()
Assigns \a other to this map and returns a reference to this map.
*/
+/*! \fn void QMap::swap(QMap<Key, T> &other)
+ \since 4.8
+
+ Swaps map \a other with this map. This operation is very
+ fast and never fails.
+*/
+
+/*! \fn void QMultiMap::swap(QMultiMap<Key, T> &other)
+ \since 4.8
+
+ Swaps map \a other with this map. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QMap::operator==(const QMap<Key, T> &other) const
Returns true if \a other is equal to this map; otherwise returns
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index ce8fd75f7a..2897529463 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -189,6 +189,7 @@ public:
inline QMap<Key, T> &operator=(QMap<Key, T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QMap<Key, T> &other) { qSwap(d, other.d); }
#ifndef QT_NO_STL
explicit QMap(const typename std::map<Key, T> &other);
std::map<Key, T> toStdMap() const;
@@ -973,6 +974,7 @@ class QMultiMap : public QMap<Key, T>
public:
QMultiMap() {}
QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
+ inline void swap(QMultiMap<Key, T> &other) { QMap<Key, T>::swap(other); }
inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value)
{ return QMap<Key, T>::insert(key, value); }
diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index 66f06e9ccd..c297709ee5 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -438,8 +438,12 @@ QDebug operator<<(QDebug d, const QPointF &p)
/*!
\fn bool QPointF::isNull() const
- Returns true if both the x and y coordinates are set to 0.0,
+ Returns true if both the x and y coordinates are set to +0.0;
otherwise returns false.
+
+ \note Since this function treats +0.0 and -0.0 differently, points
+ with zero-valued coordinates where either or both values have a
+ negative sign are not defined to be null points.
*/
diff --git a/src/corelib/tools/qqueue.cpp b/src/corelib/tools/qqueue.cpp
index 849bb0b473..36026956b2 100644
--- a/src/corelib/tools/qqueue.cpp
+++ b/src/corelib/tools/qqueue.cpp
@@ -91,6 +91,14 @@
*/
/*!
+ \fn void QQueue::swap(QQueue<T> &other)
+ \since 4.8
+
+ Swaps queue \a other with this queue. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn void QQueue::enqueue(const T& t)
Adds value \a t to the tail of the queue.
diff --git a/src/corelib/tools/qqueue.h b/src/corelib/tools/qqueue.h
index c29134b6f1..4ef1a61023 100644
--- a/src/corelib/tools/qqueue.h
+++ b/src/corelib/tools/qqueue.h
@@ -56,6 +56,7 @@ class QQueue : public QList<T>
public:
inline QQueue() {}
inline ~QQueue() {}
+ inline void swap(QQueue<T> &other) { QList<T>::swap(other); } // prevent QList<->QQueue swaps
inline void enqueue(const T &t) { QList<T>::append(t); }
inline T dequeue() { return QList<T>::takeFirst(); }
inline T &head() { return QList<T>::first(); }
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 7a26c4f364..5d2a0e3954 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -3858,6 +3858,14 @@ QRegExp &QRegExp::operator=(const QRegExp &rx)
}
/*!
+ \fn void QRegExp::swap(QRegExp &other)
+ \since 4.8
+
+ Swaps regular expression \a other with this regular
+ expression. This operation is very fast and never fails.
+*/
+
+/*!
Returns true if this regular expression is equal to \a rx;
otherwise returns false.
diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h
index 0b4a702c62..4a74f90dbc 100644
--- a/src/corelib/tools/qregexp.h
+++ b/src/corelib/tools/qregexp.h
@@ -80,6 +80,7 @@ public:
inline QRegExp &operator=(QRegExp &&other)
{ qSwap(priv,other.priv); return *this; }
#endif
+ inline void swap(QRegExp &other) { qSwap(priv, other.priv); }
bool operator==(const QRegExp &rx) const;
inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); }
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index 40d3851f5d..b3a6db6fe4 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -186,6 +186,18 @@ template <class T, class Cleanup>
Q_INLINE_TEMPLATE void qSwap(QScopedPointer<T, Cleanup> &p1, QScopedPointer<T, Cleanup> &p2)
{ p1.swap(p2); }
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T, class Cleanup>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QScopedPointer)<T, Cleanup> &p1, QT_PREPEND_NAMESPACE(QScopedPointer)<T, Cleanup> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
+
+
namespace QtPrivate {
template <typename X, typename Y> struct QScopedArrayEnsureSameType;
template <typename X> struct QScopedArrayEnsureSameType<X,X> { typedef X* Type; };
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h
index dc3c45a046..472078f8dc 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -65,6 +65,7 @@ public:
inline QSet<T> &operator=(QSet<T> &&other)
{ qSwap(q_hash, other.q_hash); return *this; }
#endif
+ inline void swap(QSet<T> &other) { q_hash.swap(other.q_hash); }
inline bool operator==(const QSet<T> &other) const
{ return q_hash == other.q_hash; }
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index 0bc2d2d68a..57368f04c3 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -123,6 +123,13 @@
*/
/*!
+ \fn void QSet::swap(QSet<T> &other)
+
+ Swaps set \a other with this set. This operation is very fast and
+ never fails.
+*/
+
+/*!
\fn bool QSet::operator==(const QSet<T> &other) const
Returns true if the \a other set is equal to this set; otherwise
diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h
index b646a9d3ce..45456feb54 100644
--- a/src/corelib/tools/qshareddata.h
+++ b/src/corelib/tools/qshareddata.h
@@ -263,6 +263,20 @@ template <class T>
Q_INLINE_TEMPLATE void qSwap(QExplicitlySharedDataPointer<T> &p1, QExplicitlySharedDataPointer<T> &p2)
{ p1.swap(p2); }
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QSharedDataPointer)<T> &p1, QT_PREPEND_NAMESPACE(QSharedDataPointer)<T> &p2)
+ { p1.swap(p2); }
+
+ template <class T>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer)<T> &p1, QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer)<T> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 4b477133e3..ef8c454f2a 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -784,6 +784,16 @@ inline void qSwap(QSharedPointer<T> &p1, QSharedPointer<T> &p2)
p1.swap(p2);
}
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T>
+ inline void swap(QT_PREPEND_NAMESPACE(QSharedPointer)<T> &p1, QT_PREPEND_NAMESPACE(QSharedPointer)<T> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
namespace QtSharedPointer {
// helper functions:
template <class X, class T>
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 20ac344b39..12287abf5c 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -492,9 +492,13 @@ QDebug operator<<(QDebug dbg, const QSize &s) {
/*!
\fn bool QSizeF::isNull() const
- Returns true if both the width and height is 0; otherwise returns
+ Returns true if both the width and height are +0.0; otherwise returns
false.
+ \note Since this function treats +0.0 and -0.0 differently, sizes with
+ zero width and height where either or both values have a negative
+ sign are not defined to be null sizes.
+
\sa isValid(), isEmpty()
*/
diff --git a/src/corelib/tools/qstack.cpp b/src/corelib/tools/qstack.cpp
index fa149006e6..b42fe3bc3a 100644
--- a/src/corelib/tools/qstack.cpp
+++ b/src/corelib/tools/qstack.cpp
@@ -91,6 +91,14 @@
*/
/*!
+ \fn void QStack::swap(QStack<T> &other)
+ \since 4.8
+
+ Swaps stack \a other with this stack. This operation is very fast and
+ never fails.
+*/
+
+/*!
\fn void QStack::push(const T& t)
Adds element \a t to the top of the stack.
diff --git a/src/corelib/tools/qstack.h b/src/corelib/tools/qstack.h
index 526c7051eb..6ddc38119b 100644
--- a/src/corelib/tools/qstack.h
+++ b/src/corelib/tools/qstack.h
@@ -56,6 +56,7 @@ class QStack : public QVector<T>
public:
inline QStack() {}
inline ~QStack() {}
+ inline void swap(QStack<T> &other) { QVector<T>::swap(other); } // prevent QVector<->QStack swaps
inline void push(const T &t) { QVector<T>::append(t); }
T pop();
T &top();
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 2737574ec2..a3d89f226a 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -1174,6 +1174,13 @@ QString::QString(QChar ch)
*/
+/*! \fn void QString::swap(QString &other)
+ \since 4.8
+
+ Swaps string \a other with this string. This operation is very fast and
+ never fails.
+*/
+
/*! \fn void QString::detach()
\internal
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 589fdc2d20..07f43ca2c8 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -108,6 +108,7 @@ public:
inline QString &operator=(QString &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QString &other) { qSwap(d, other.d); }
inline int size() const { return d->size; }
inline int count() const { return d->size; }
inline int length() const;
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index 4a6bb4b802..38823239a0 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -44,7 +44,10 @@
#include <QtCore/qcontainerfwd.h>
#include <QtCore/qglobal.h>
+#include <QtCore/qalgorithms.h>
+
#include <new>
+#include <string.h>
QT_BEGIN_HEADER
@@ -123,6 +126,18 @@ public:
}
}
void append(const T *buf, int size);
+ inline QVarLengthArray<T, Prealloc> &operator<<(const T &t)
+ { append(t); return *this; }
+ inline QVarLengthArray<T, Prealloc> &operator+=(const T &t)
+ { append(t); return *this; }
+
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void insert(int i, int n, const T &t);
+ void replace(int i, const T &t);
+ void remove(int i);
+ void remove(int i, int n);
+
inline T *data() { return ptr; }
inline const T *data() const { return ptr; }
@@ -135,6 +150,21 @@ public:
typedef const value_type &const_reference;
typedef qptrdiff difference_type;
+
+ typedef T* iterator;
+ typedef const T* const_iterator;
+
+ inline iterator begin() { return ptr; }
+ inline const_iterator begin() const { return ptr; }
+ inline const_iterator constBegin() const { return ptr; }
+ inline iterator end() { return ptr + s; }
+ inline const_iterator end() const { return ptr + s; }
+ inline const_iterator constEnd() const { return ptr + s; }
+ iterator insert(iterator before, int n, const T &x);
+ inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); }
+ iterator erase(iterator begin, iterator end);
+ inline iterator erase(iterator pos) { return erase(pos, pos+1); }
+
private:
friend class QPodList<T, Prealloc>;
void realloc(int size, int alloc);
@@ -272,6 +302,100 @@ Q_OUTOFLINE_TEMPLATE T QVarLengthArray<T, Prealloc>::value(int i, const T &defau
return (i < 0 || i >= size()) ? defaultValue : at(i);
}
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::insert(int i, const T &t)
+{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range");
+ insert(begin() + i, 1, t); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::insert(int i, int n, const T &t)
+{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range");
+ insert(begin() + i, n, t); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::remove(int i, int n)
+{ Q_ASSERT_X(i >= 0 && n >= 0 && i + n <= s, "QVarLengthArray::remove", "index out of range");
+ erase(begin() + i, begin() + i + n); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::remove(int i)
+{ Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::remove", "index out of range");
+ erase(begin() + i, begin() + i + 1); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::prepend(const T &t)
+{ insert(begin(), 1, t); }
+
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::replace(int i, const T &t)
+{
+ Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::replace", "index out of range");
+ const T copy(t);
+ data()[i] = copy;
+}
+
+
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(iterator before, size_type n, const T &t)
+{
+ int offset = int(before - ptr);
+ if (n != 0) {
+ resize(s + n);
+ const T copy(t);
+ if (QTypeInfo<T>::isStatic) {
+ T *b = ptr + offset;
+ T *j = ptr + s;
+ T *i = j - n;
+ while (i != b)
+ *--j = *--i;
+ i = b + n;
+ while (i != b)
+ *--i = copy;
+ } else {
+ T *b = ptr + offset;
+ T *i = b + n;
+ memmove(i, b, (s - offset - n) * sizeof(T));
+ while (i != b)
+ new (--i) T(copy);
+ }
+ }
+ return ptr + offset;
+}
+
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::erase(iterator abegin, iterator aend)
+{
+ int f = int(abegin - ptr);
+ int l = int(aend - ptr);
+ int n = l - f;
+ if (QTypeInfo<T>::isComplex) {
+ qCopy(ptr + l, ptr + s, ptr + f);
+ T *i = ptr + s;
+ T *b = ptr + s - n;
+ while (i != b) {
+ --i;
+ i->~T();
+ }
+ } else {
+ memmove(ptr + f, ptr + l, (s - l) * sizeof(T));
+ }
+ s -= n;
+ return ptr + f;
+}
+
+template <typename T, int Prealloc1, int Prealloc2>
+bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
+{
+ if (l.size() != r.size())
+ return false;
+ for (int i = 0; i < l.size(); i++) {
+ if (l.at(i) != r.at(i))
+ return false;
+ }
+ return true;
+}
+
+template <typename T, int Prealloc1, int Prealloc2>
+bool operator!=(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
+{
+ return !(l == r);
+}
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index 6f91bccd0d..4d5d5d1412 100644
--- a/src/corelib/tools/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.qdoc
@@ -337,3 +337,211 @@
Typedef for const T &. Provided for STL compatibility.
*/
+/*! \fn void QVarLengthArray::prepend(const T &value)
+
+ \since 4.8
+ Inserts \a value at the beginning of the array.
+
+
+ This is the same as vector.insert(0, \a value).
+
+ For large arrays, this operation can be slow (\l{linear time}),
+ because it requires moving all the items in the vector by one
+ position further in memory. If you want a container class that
+ provides a fast prepend() function, use QList or QLinkedList
+ instead.
+
+ \sa append(), insert()
+*/
+
+/*! \fn void QVarLengthArray::replace(int i, const T &value)
+
+ \since 4.8
+ Replaces the item at index position \a i with \a value.
+
+ \a i must be a valid index position in the array (i.e., 0 <= \a
+ i < size()).
+
+ \sa operator[](), remove()
+*/
+
+/*! \fn void QVarLengthArray::remove(int i)
+
+ \overload
+ \since 4.8
+
+ Removes the element at index position \a i.
+
+ \sa insert(), replace()
+*/
+
+/*! \fn void QVarLengthArray::remove(int i, int count)
+
+ \overload
+ \since 4.8
+
+ Removes \a count elements from the middle of the array, starting at
+ index position \a i.
+
+ \sa insert(), replace()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::begin()
+ \since 4.8
+
+ Returns an \l{STL-style iterator} pointing to the first item in
+ the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::begin() const
+ \since 4.8
+ \overload
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::constBegin() const
+ \since 4.8
+
+ Returns a const \l{STL-style iterator} pointing to the first item
+ in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::end()
+ \since 4.8
+
+ Returns an \l{STL-style iterator} pointing to the imaginary item
+ after the last item in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::end() const
+ \since 4.8
+
+ \overload
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::constEnd() const
+ \since 4.8
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary
+ item after the last item in the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::erase(iterator pos)
+ \since 4.8
+
+ Removes the item pointed to by the iterator \a pos from the
+ vector, and returns an iterator to the next item in the vector
+ (which may be end()).
+
+ \sa insert(), remove()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::erase(iterator begin, iterator end)
+
+ \overload
+ \since 4.8
+
+ Removes all the items from \a begin up to (but not including) \a
+ end. Returns an iterator to the same item that \a end referred to
+ before the call.
+*/
+
+/*! \fn void QVarLengthArray::insert(int i, const T &value)
+ \since 4.8
+
+ Inserts \a value at index position \a i in the array. If \a i is
+ 0, the value is prepended to the vector. If \a i is size(), the
+ value is appended to the vector.
+
+ For large arrays, this operation can be slow (\l{linear time}),
+ because it requires moving all the items at indexes \a i and
+ above by one position further in memory. If you want a container
+ class that provides a fast insert() function, use QLinkedList
+ instead.
+
+ \sa remove()
+*/
+
+/*! \fn void QVarLengthArray::insert(int i, int count, const T &value)
+
+ \overload
+ \since 4.8
+
+ Inserts \a count copies of \a value at index position \a i in the
+ vector.
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::insert(iterator before, const T &value)
+
+ \overload
+ \since 4.8
+
+ Inserts \a value in front of the item pointed to by the iterator
+ \a before. Returns an iterator pointing at the inserted item.
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::insert(iterator before, int count, const T &value)
+
+ \since 4.8
+ Inserts \a count copies of \a value in front of the item pointed to
+ by the iterator \a before. Returns an iterator pointing at the
+ first of the inserted items.
+*/
+
+
+
+/*! \fn bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
+
+ \relates QVarLengthArray
+ \since 4.8
+ Returns true if the two array are equal;
+
+ Two arrays are considered equal if they contain the same values
+ in the same order.
+
+ This function requires the value type to have an implementation
+ of \c operator==().
+
+ \sa operator!=()
+*/
+
+/*! \fn bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
+
+ \relates QVarLengthArray
+ \since 4.8
+ Returns true if the two array are different;
+
+ Two arrays are considered equal if they contain the same values
+ in the same order.
+
+ This function requires the value type to have an implementation
+ of \c operator==().
+
+ \sa operator==()
+*/
+
+/*! \fn QVarLengthArray &QVarLengthArray::operator<<(const T &value)
+
+ \since 4.8
+ Appends \a value to the array and returns a reference to this
+ vector.
+
+ \sa append(), operator+=()
+*/
+
+/*! \fn QVarLengthArray &QVarLengthArray::operator+=(const T &value)
+
+ \since 4.8
+ Appends \a value to the array and returns a reference to this
+ vector.
+
+ \sa append(), operator<<()
+*/
+
diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp
index 3a13540766..0497211690 100644
--- a/src/corelib/tools/qvector.cpp
+++ b/src/corelib/tools/qvector.cpp
@@ -285,6 +285,13 @@ int QVectorData::grow(int sizeofTypedData, int size, int sizeofT, bool excessive
vector.
*/
+/*! \fn void QVector::swap(QVector<T> &other)
+ \since 4.8
+
+ Swaps vector \a other with this vector. This operation is very fast and
+ never fails.
+*/
+
/*! \fn bool QVector::operator==(const QVector<T> &other) const
Returns true if \a other is equal to this vector; otherwise
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index c16aefb2ef..0f7db88c90 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -125,6 +125,7 @@ public:
inline QVector<T> operator=(QVector<T> &&other)
{ qSwap(p, other.p); return *this; }
#endif
+ inline void swap(QVector<T> &other) { qSwap(d, other.d); }
#ifdef Q_COMPILER_INITIALIZER_LISTS
inline QVector(std::initializer_list<T> args);
#endif
@@ -303,7 +304,7 @@ public:
#ifndef QT_NO_STL
static inline QVector<T> fromStdVector(const std::vector<T> &vector)
- { QVector<T> tmp; tmp.reserve(vector.size()); qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
+ { QVector<T> tmp; tmp.reserve(int(vector.size())); qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
inline std::vector<T> toStdVector() const
{ std::vector<T> tmp; tmp.reserve(size()); qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
#endif
@@ -439,9 +440,9 @@ QVector<T>::QVector(int asize, const T &t)
template <typename T>
QVector<T>::QVector(std::initializer_list<T> args)
{
- d = malloc(args.size());
+ d = malloc(int(args.size()));
d->ref = 1;
- d->alloc = d->size = args.size();
+ d->alloc = d->size = int(args.size());
d->sharable = true;
d->capacity = false;
T* i = p->array + d->size;
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index bf771a848d..f68a8caaba 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -140,9 +140,9 @@ void QDBusConnectionManager::setConnection(const QString &name, QDBusConnectionP
\fn QDBusConnection &QDBusConnection::sessionBus()
\relates QDBusConnection
- Returns a QDBusConnection object opened with the session bus. The object reference returned
- by this function is valid until the QCoreApplication's destructor is run, when the
- connection will be closed and the object, deleted.
+ Returns a QDBusConnection object opened with the session bus. The object
+ reference returned by this function is valid until the application terminates,
+ at which point the connection will be closed and the object deleted.
*/
/*!
\fn QDBusConnection &QDBusConnection::systemBus()
diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp
index 977e58e227..f5c57511af 100644
--- a/src/declarative/debugger/qdeclarativedebugclient.cpp
+++ b/src/declarative/debugger/qdeclarativedebugclient.cpp
@@ -93,7 +93,7 @@ QDeclarativeDebugConnectionPrivate::QDeclarativeDebugConnectionPrivate(QDeclarat
void QDeclarativeDebugConnectionPrivate::advertisePlugins()
{
- if (!q->isConnected() || !gotHello)
+ if (!q->isConnected())
return;
QPacket pack;
diff --git a/src/declarative/debugger/qdeclarativedebughelper.cpp b/src/declarative/debugger/qdeclarativedebughelper.cpp
index 207ad2bc7f..b003c12324 100644
--- a/src/declarative/debugger/qdeclarativedebughelper.cpp
+++ b/src/declarative/debugger/qdeclarativedebughelper.cpp
@@ -48,6 +48,7 @@
#include <private/qdeclarativeengine_p.h>
#include <private/qabstractanimation_p.h>
+#include <private/qdeclarativeengine_p.h>
QT_BEGIN_NAMESPACE
@@ -63,4 +64,11 @@ void QDeclarativeDebugHelper::setAnimationSlowDownFactor(qreal factor)
timer->setSlowdownFactor(factor);
}
+void QDeclarativeDebugHelper::enableDebugging() {
+ if (!QDeclarativeEnginePrivate::qml_debugging_enabled) {
+ qWarning("Qml debugging is enabled. Only use this in a safe environment!");
+ }
+ QDeclarativeEnginePrivate::qml_debugging_enabled = true;
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/debugger/qdeclarativedebughelper_p.h b/src/declarative/debugger/qdeclarativedebughelper_p.h
index 5689dff252..fcd71151cd 100644
--- a/src/declarative/debugger/qdeclarativedebughelper_p.h
+++ b/src/declarative/debugger/qdeclarativedebughelper_p.h
@@ -55,11 +55,15 @@ class QDeclarativeEngine;
// Helper methods to access private API through a stable interface
// This is used in the qmljsdebugger library of QtCreator.
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugHelper
+class Q_DECLARATIVE_EXPORT QDeclarativeDebugHelper
{
public:
static QScriptEngine *getScriptEngine(QDeclarativeEngine *engine);
static void setAnimationSlowDownFactor(qreal factor);
+
+ // Enables remote debugging functionality
+ // Only use this for debugging in a safe environment!
+ static void enableDebugging();
};
QT_END_NAMESPACE
diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp
index b98cd5dab3..8c86ae820e 100644
--- a/src/declarative/debugger/qdeclarativedebugservice.cpp
+++ b/src/declarative/debugger/qdeclarativedebugservice.cpp
@@ -42,6 +42,7 @@
#include "private/qdeclarativedebugservice_p.h"
#include "private/qpacketprotocol_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtCore/qdebug.h>
#include <QtNetwork/qtcpserver.h>
@@ -204,13 +205,19 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
bool ok = false;
// format: qmljsdebugger=port:3768[,block]
- if (!appD->qmljsDebugArguments.isEmpty()) {
+ if (!appD->qmljsDebugArgumentsString().isEmpty()) {
+ if (!QDeclarativeEnginePrivate::qml_debugging_enabled) {
+ qWarning() << QString::fromLatin1("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". "
+ "Debugging has not been enabled.").arg(
+ appD->qmljsDebugArgumentsString()).toAscii().constData();
+ return 0;
+ }
- if (appD->qmljsDebugArguments.indexOf(QLatin1String("port:")) == 0) {
- int separatorIndex = appD->qmljsDebugArguments.indexOf(QLatin1Char(','));
- port = appD->qmljsDebugArguments.mid(5, separatorIndex - 5).toInt(&ok);
+ if (appD->qmljsDebugArgumentsString().indexOf(QLatin1String("port:")) == 0) {
+ int separatorIndex = appD->qmljsDebugArgumentsString().indexOf(QLatin1Char(','));
+ port = appD->qmljsDebugArgumentsString().mid(5, separatorIndex - 5).toInt(&ok);
}
- block = appD->qmljsDebugArguments.contains(QLatin1String("block"));
+ block = appD->qmljsDebugArgumentsString().contains(QLatin1String("block"));
if (ok) {
server = new QDeclarativeDebugServer(port);
@@ -221,7 +228,7 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
} else {
qWarning(QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". "
"Format is -qmljsdebugger=port:<port>[,block]").arg(
- appD->qmljsDebugArguments).toAscii().constData());
+ appD->qmljsDebugArgumentsString()).toAscii().constData());
}
}
#endif
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
index c58a08ddd5..649c8fb074 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
@@ -361,6 +361,8 @@ QDeclarativeScaleGrid *QDeclarativeBorderImage::border()
\o BorderImage.Repeat - Tile the image until there is no more space. May crop the last image.
\o BorderImage.Round - Like Repeat, but scales the images down to ensure that the last image is not cropped.
\endlist
+
+ The default tile mode for each property is BorderImage.Stretch.
*/
QDeclarativeBorderImage::TileMode QDeclarativeBorderImage::horizontalTileMode() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 6fe152251d..0f786e35f8 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -53,9 +53,6 @@ QT_BEGIN_NAMESPACE
// before we perform a flick.
static const int FlickThreshold = 20;
-// Really slow flicks can be annoying.
-static const int MinimumFlickVelocity = 75;
-
QDeclarativeFlickableVisibleArea::QDeclarativeFlickableVisibleArea(QDeclarativeFlickable *parent)
: QObject(parent), flickable(parent), m_xPosition(0.), m_widthRatio(0.)
, m_yPosition(0.), m_heightRatio(0.)
@@ -990,8 +987,8 @@ void QDeclarativeFlickable::viewportMoved()
{
Q_D(QDeclarativeFlickable);
- qreal prevY = d->lastFlickablePosition.x();
- qreal prevX = d->lastFlickablePosition.y();
+ qreal prevX = d->lastFlickablePosition.x();
+ qreal prevY = d->lastFlickablePosition.y();
d->velocityTimeline.clear();
if (d->pressed || d->calcVelocity) {
int elapsed = QDeclarativeItemPrivate::restart(d->velocityTime);
@@ -1012,7 +1009,7 @@ void QDeclarativeFlickable::viewportMoved()
}
}
- d->lastFlickablePosition = QPointF(d->vData.move.value(), d->hData.move.value());
+ d->lastFlickablePosition = QPointF(d->hData.move.value(), d->vData.move.value());
d->vTime = d->timeline.time();
d->updateBeginningEnd();
@@ -1032,6 +1029,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setWidth(width());
emit contentWidthChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupX();
+ d->fixupDuration = oldDuration;
+ }
}
if (newGeometry.height() != oldGeometry.height()) {
if (yflick())
@@ -1040,6 +1044,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setHeight(height());
emit contentHeightChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupY();
+ d->fixupDuration = oldDuration;
+ }
}
if (changed)
@@ -1161,19 +1172,18 @@ void QDeclarativeFlickable::setBoundsBehavior(BoundsBehavior b)
\qmlproperty real Flickable::contentWidth
\qmlproperty real Flickable::contentHeight
- The dimensions of the content (the surface controlled by Flickable). Typically this
- should be set to the combined size of the items placed in the Flickable. Note this
- can be set automatically using \l {Item::childrenRect.width}{childrenRect.width}
- and \l {Item::childrenRect.height}{childrenRect.height}. For example:
+ The dimensions of the content (the surface controlled by Flickable).
+ This should typically be set to the combined size of the items placed in the
+ Flickable.
- \code
- Flickable {
- width: 320; height: 480
- contentWidth: childrenRect.width; contentHeight: childrenRect.height
+ The following snippet shows how these properties are used to display
+ an image that is larger than the Flickable item itself:
- Image { id: image; source: "bigImage.png" }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/flickable.qml document
+
+ In some cases, the the content dimensions can be automatically set
+ using the \l {Item::childrenRect.width}{childrenRect.width}
+ and \l {Item::childrenRect.height}{childrenRect.height} properties.
*/
qreal QDeclarativeFlickable::contentWidth() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index afefde22bf..92cf74874b 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
@@ -66,6 +66,9 @@
QT_BEGIN_NAMESPACE
+// Really slow flicks can be annoying.
+const qreal MinimumFlickVelocity = 75.0;
+
class QDeclarativeFlickableVisibleArea;
class QDeclarativeFlickablePrivate : public QDeclarativeItemPrivate, public QDeclarativeItemChangeListener
{
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 08d237f265..3b08a9bcb3 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -259,8 +259,10 @@ void QDeclarativeImage::setFillMode(FillMode mode)
\qmlproperty real Image::paintedHeight
These properties hold the size of the image that is actually painted.
- In most cases it is the same as \c width and \c height, but when using a \c fillMode like
- \c PreserveAspectFit \c paintedWidth or \c paintedHeight can be smaller than \c width and \c height.
+ In most cases it is the same as \c width and \c height, but when using a
+ \c fillMode \c PreserveAspectFit or \c fillMode \c PreserveAspectCrop
+ \c paintedWidth or \c paintedHeight can be smaller or larger than
+ \c width and \c height of the Image element.
*/
qreal QDeclarativeImage::paintedWidth() const
{
@@ -288,23 +290,25 @@ qreal QDeclarativeImage::paintedHeight() const
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: image.status = Image.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: image.status == Image.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
Image {
id: image
onStatusChanged: if (image.status == Image.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: image.status != Image.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: image.status == Image.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
\sa progress
*/
@@ -397,6 +401,19 @@ void QDeclarativeImage::updatePaintedGeometry()
if (heightValid() && !widthValid()) {
setImplicitWidth(d->paintedWidth);
}
+ } else if (d->fillMode == PreserveAspectCrop) {
+ if (!d->pix.width() || !d->pix.height())
+ return;
+ qreal widthScale = width() / qreal(d->pix.width());
+ qreal heightScale = height() / qreal(d->pix.height());
+ if (widthScale < heightScale) {
+ widthScale = heightScale;
+ } else if(heightScale < widthScale) {
+ heightScale = widthScale;
+ }
+
+ d->paintedHeight = heightScale * qreal(d->pix.height());
+ d->paintedWidth = widthScale * qreal(d->pix.width());
} else {
d->paintedWidth = width();
d->paintedHeight = height();
@@ -410,6 +427,12 @@ void QDeclarativeImage::geometryChanged(const QRectF &newGeometry, const QRectF
updatePaintedGeometry();
}
+QRectF QDeclarativeImage::boundingRect() const
+{
+ Q_D(const QDeclarativeImage);
+ return QRectF(0, 0, qMax(d->mWidth, d->paintedWidth), qMax(d->mHeight, d->paintedHeight));
+}
+
/*!
\qmlproperty url Image::source
@@ -494,7 +517,7 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi
}
if (clip()) {
p->save();
- p->setClipRect(boundingRect(), Qt::IntersectClip);
+ p->setClipRect(QRectF(0, 0, d->mWidth, d->mHeight), Qt::IntersectClip);
}
scale.scale(widthScale, heightScale);
QTransform old = p->transform();
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h
index c8bb30be8f..0e8034e743 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h
@@ -76,6 +76,7 @@ public:
qreal paintedHeight() const;
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
+ QRectF boundingRect() const;
Q_SIGNALS:
void fillModeChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 95a4fd65c0..e0df75195b 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -1955,12 +1955,8 @@ void QDeclarativeItem::geometryChanged(const QRectF &newGeometry,
change.listener->itemGeometryChanged(this, newGeometry, oldGeometry);
}
- if (newGeometry.x() != oldGeometry.x())
- emit xChanged();
if (newGeometry.width() != oldGeometry.width())
emit widthChanged();
- if (newGeometry.y() != oldGeometry.y())
- emit yChanged();
if (newGeometry.height() != oldGeometry.height())
emit heightChanged();
}
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 38a4839502..94b1cb368c 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -334,28 +334,9 @@ public:
return model && model->count() && model->isValid();
}
- int snapIndex() {
- int index = currentIndex;
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop >= highlight->position()-item->size()/2 && itemTop < highlight->position()+item->size()/2)
- return item->index;
- }
- return index;
- }
-
qreal snapPosAt(qreal pos) {
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop+item->size()/2 >= pos && itemTop <= pos)
- return item->position();
- }
+ if (FxListItem *snapItem = snapItemAt(pos))
+ return snapItem->position();
if (visibleItems.count()) {
qreal firstPos = visibleItems.first()->position();
qreal endPos = visibleItems.last()->position();
@@ -368,17 +349,18 @@ public:
}
FxListItem *snapItemAt(qreal pos) {
+ FxListItem *snapItem = 0;
for (int i = 0; i < visibleItems.count(); ++i) {
FxListItem *item = visibleItems[i];
if (item->index == -1)
continue;
qreal itemTop = item->position();
- if (item->index == model->count()-1 || (itemTop+item->size()/2 >= pos))
+ if (highlight && itemTop >= pos && item->endPosition() <= pos + highlight->size() - 1)
return item;
+ if (itemTop+item->size()/2 >= pos && itemTop-item->size()/2 < pos)
+ snapItem = item;
}
- if (visibleItems.count() && visibleItems.first()->position() <= pos)
- return visibleItems.first();
- return 0;
+ return snapItem;
}
int lastVisibleIndex() const {
@@ -768,8 +750,10 @@ void QDeclarativeListViewPrivate::layout()
minExtentDirty = true;
maxExtentDirty = true;
updateHighlight();
- fixupPosition();
- q->refill();
+ if (!q->isMoving() && !q->isFlicking()) {
+ fixupPosition();
+ q->refill();
+ }
if (header)
updateHeader();
if (footer)
@@ -1173,6 +1157,7 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
|| (orient == QDeclarativeListView::Vertical && &data == &hData))
return;
+ correctFlick = false;
int oldDuration = fixupDuration;
fixupDuration = moveReason == Mouse ? fixupDuration : 0;
@@ -1350,12 +1335,15 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
qreal newtarget = data.flickTarget;
if (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)
newtarget = -snapPosAt(-(data.flickTarget - highlightRangeStart)) + highlightRangeStart;
- if (velocity < 0 && newtarget < maxExtent)
- newtarget = maxExtent;
- else if (velocity > 0 && newtarget > minExtent)
- newtarget = minExtent;
- if (newtarget == data.flickTarget) // boundary unchanged - nothing to do
+ if (velocity < 0 && newtarget <= maxExtent)
+ newtarget = maxExtent - overshootDist;
+ else if (velocity > 0 && newtarget >= minExtent)
+ newtarget = minExtent + overshootDist;
+ if (newtarget == data.flickTarget) { // boundary unchanged - nothing to do
+ if (qAbs(velocity) < MinimumFlickVelocity)
+ correctFlick = false;
return;
+ }
data.flickTarget = newtarget;
qreal dist = -newtarget + data.move.value();
if ((v < 0 && dist < 0) || (v > 0 && dist > 0)) {
@@ -1365,7 +1353,7 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
return;
}
timeline.reset(data.move);
- timeline.accelDistance(data.move, v, -dist + (v < 0 ? -overshootDist : overshootDist));
+ timeline.accelDistance(data.move, v, -dist);
timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this));
}
} else {
@@ -1696,7 +1684,7 @@ void QDeclarativeListView::setCurrentIndex(int index)
if (isComponentComplete() && d->isValid()) {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
d->updateCurrent(index);
- } else {
+ } else if (d->currentIndex != index) {
d->currentIndex = index;
emit currentIndexChanged();
}
@@ -2323,9 +2311,10 @@ void QDeclarativeListView::viewportMoved()
d->highlight->setPosition(qRound(pos));
// update current index
- int idx = d->snapIndex();
- if (idx >= 0 && idx != d->currentIndex)
- d->updateCurrent(idx);
+ if (FxListItem *snapItem = d->snapItemAt(d->highlight->position())) {
+ if (snapItem->index >= 0 && snapItem->index != d->currentIndex)
+ d->updateCurrent(snapItem->index);
+ }
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp
index 5647b14568..109fbbbbd5 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp
@@ -216,7 +216,8 @@ QDeclarativeLoader::~QDeclarativeLoader()
cannot load non-visual components.
To unload the currently loaded item, set this property to an empty string,
- or set \l sourceComponent to \c undefined.
+ or set \l sourceComponent to \c undefined. Setting \c source to a
+ new URL will also cause the item created by the previous URL to be unloaded.
\sa sourceComponent, status, progress
*/
@@ -394,23 +395,25 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: loader.status = Loader.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: loader.status == Loader.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
Loader {
id: loader
onStatusChanged: if (loader.status == Loader.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: loader.status != Loader.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: loader.status == Loader.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
Note that if the source is a local file, the status will initially be Ready (or Error). While
there will be no onStatusChanged signal in that case, the onLoaded will still be invoked.
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index 1b7dce04d9..d9edd11171 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -566,7 +566,8 @@ void QDeclarativeMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *even
if (!d->absorb) {
QDeclarativeItem::mouseDoubleClickEvent(event);
} else {
- d->doubleClick = true;
+ if (d->isDoubleClickConnected())
+ d->doubleClick = true;
d->saveEvent(event);
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, true, false);
me.setAccepted(d->isDoubleClickConnected());
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index 1ffd3bdc25..fc3954f042 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -477,7 +477,8 @@ void QDeclarativeRectangle::drawRect(QPainter &p)
{
Q_D(QDeclarativeRectangle);
if ((d->gradient && d->gradient->gradient())
- || d->radius > width()/2 || d->radius > height()/2) {
+ || d->radius > width()/2 || d->radius > height()/2
+ || width() < 3 || height() < 3) {
// XXX This path is still slower than the image path
// Image path won't work for gradients or invalid radius though
bool oldAA = p.testRenderHint(QPainter::Antialiasing);
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 0717b78b23..82c444e04f 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -219,8 +219,10 @@ void QDeclarativeTextPrivate::updateSize()
QFontMetrics fm(font);
if (text.isEmpty()) {
+ q->setImplicitWidth(0);
q->setImplicitHeight(fm.height());
emit q->paintedSizeChanged();
+ q->update();
return;
}
@@ -283,11 +285,10 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
{
// ### text layout handling should be profiled and optimized as needed
// what about QStackTextEngine engine(tmp, d->font.font()); QTextLayout textLayout(&engine);
-
Q_Q(QDeclarativeText);
layout.setCacheEnabled(true);
- int height = 0;
+ qreal height = 0;
qreal widthUsed = 0;
qreal lineWidth = 0;
@@ -300,12 +301,12 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
layout.setTextOption(textOption);
layout.beginLayout();
- while (1) {
+ forever {
QTextLine line = layout.createLine();
if (!line.isValid())
break;
- if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
+ if (lineWidth)
line.setLineWidth(lineWidth);
}
layout.endLayout();
@@ -315,27 +316,27 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
widthUsed = qMax(widthUsed, line.naturalTextWidth());
}
- qreal layoutWidth = q->widthValid()?q->width():widthUsed;
+ qreal layoutWidth = q->widthValid() ? q->width() : widthUsed;
- int x = 0;
+ qreal x = 0;
for (int i = 0; i < layout.lineCount(); ++i) {
QTextLine line = layout.lineAt(i);
line.setPosition(QPointF(0, height));
- height += int(line.height());
+ height += line.height();
if (!cacheAllTextAsImage) {
if (hAlign == QDeclarativeText::AlignLeft) {
x = 0;
} else if (hAlign == QDeclarativeText::AlignRight) {
- x = layoutWidth - (int)line.naturalTextWidth();
+ x = layoutWidth - line.naturalTextWidth();
} else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (layoutWidth - (int)line.naturalTextWidth()) / 2;
+ x = (layoutWidth - line.naturalTextWidth()) / 2;
}
- line.setPosition(QPoint(x, (int)line.y()));
+ line.setPosition(QPointF(x, line.y()));
}
}
- return QSize(qCeil(widthUsed), height);
+ return layout.boundingRect().toAlignedRect().size();
}
/*!
@@ -347,17 +348,17 @@ QPixmap QDeclarativeTextPrivate::textLayoutImage(bool drawStyle)
//do layout
QSize size = layedOutTextSize;
- int x = 0;
+ qreal x = 0;
for (int i = 0; i < layout.lineCount(); ++i) {
QTextLine line = layout.lineAt(i);
if (hAlign == QDeclarativeText::AlignLeft) {
x = 0;
} else if (hAlign == QDeclarativeText::AlignRight) {
- x = size.width() - (int)line.naturalTextWidth();
+ x = size.width() - line.naturalTextWidth();
} else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (size.width() - (int)line.naturalTextWidth()) / 2;
+ x = (size.width() - line.naturalTextWidth()) / 2;
}
- line.setPosition(QPoint(x, (int)line.y()));
+ line.setPosition(QPointF(x, line.y()));
}
//paint text
@@ -901,7 +902,7 @@ void QDeclarativeText::setStyleColor(const QColor &color)
and \c Text.AlignVCenter.
Note that for a single line of text, the size of the text is the area of the text. In this common case,
- all alignments are equivalent. If you want the text to be, say, centered in it parent, then you will
+ all alignments are equivalent. If you want the text to be, say, centered in its parent, then you will
need to either modify the Item::anchors, or set horizontalAlignment to Text.AlignHCenter and bind the width to
that of the parent.
*/
@@ -1062,7 +1063,7 @@ void QDeclarativeText::setTextFormat(TextFormat format)
Set this property to elide parts of the text fit to the Text item's width.
The text will only elide if an explicit width has been set.
- This property cannot be used with wrapping enabled or with rich text.
+ This property cannot be used with multi-line text or with rich text.
Eliding can be:
\list
@@ -1147,7 +1148,7 @@ void QDeclarativeText::geometryChanged(const QRectF &newGeometry, const QRectF &
if ((!d->internalWidthUpdate && newGeometry.width() != oldGeometry.width())
&& (d->wrapMode != QDeclarativeText::NoWrap
|| d->elideMode != QDeclarativeText::ElideNone
- || d->hAlign != Qt::AlignLeft)) {
+ || d->hAlign != QDeclarativeText::AlignLeft)) {
if (d->singleline && d->elideMode != QDeclarativeText::ElideNone && widthValid()) {
// We need to re-elide
d->updateLayout();
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 2348478657..0deacf889b 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -460,10 +460,9 @@ QRect QDeclarativeTextInput::cursorRectangle() const
text edit.
Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionStart to a value outside of
- the current text, selectionStart will not be changed.
+ selection.
- \sa selectionEnd, cursorPosition, selectedText
+ \sa selectionEnd, cursorPosition, selectedText, select()
*/
int QDeclarativeTextInput::selectionStart() const
{
@@ -479,10 +478,9 @@ int QDeclarativeTextInput::selectionStart() const
text edit.
Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionEnd to a value outside of
- the current text, selectionEnd will not be changed.
+ selection.
- \sa selectionStart, cursorPosition, selectedText
+ \sa selectionStart, cursorPosition, selectedText, select()
*/
int QDeclarativeTextInput::selectionEnd() const
{
@@ -490,6 +488,19 @@ int QDeclarativeTextInput::selectionEnd() const
return d->lastSelectionEnd;
}
+/*!
+ \qmlmethod void TextInput::select(int start, int end)
+
+ Causes the text from \a start to \a end to be selected.
+
+ If either start or end is out of range, the selection is not changed.
+
+ After calling this, selectionStart will become the lesser
+ and selectionEnd will become the greater (regardless of the order passed
+ to this method).
+
+ \sa selectionStart, selectionEnd
+*/
void QDeclarativeTextInput::select(int start, int end)
{
Q_D(QDeclarativeTextInput);
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
index 89a2158c6d..e8da3676c4 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
@@ -94,7 +94,7 @@ class DrawTextItemRecorder: public QPaintEngine
if (!m_inertText->items.isEmpty()) {
QStaticTextItem &last = m_inertText->items[m_inertText->items.count() - 1];
- if (last.fontEngine == ti.fontEngine && last.font == ti.font() &&
+ if (last.fontEngine() == ti.fontEngine && last.font == ti.font() &&
(!m_dirtyPen || last.color == state->pen().color())) {
needFreshCurrentItem = false;
@@ -107,7 +107,7 @@ class DrawTextItemRecorder: public QPaintEngine
if (needFreshCurrentItem) {
QStaticTextItem currentItem;
- currentItem.fontEngine = ti.fontEngine;
+ currentItem.setFontEngine(ti.fontEngine);
currentItem.font = ti.font();
currentItem.charOffset = charOffset;
currentItem.numChars = ti.num_chars;
@@ -285,6 +285,19 @@ void QDeclarativeTextLayout::beginLayout()
QTextLayout::beginLayout();
}
+void QDeclarativeTextLayout::clearLayout()
+{
+ if (d && d->cached) {
+ d->cached = false;
+ d->items.clear();
+ d->positions.clear();
+ d->glyphs.clear();
+ d->chars.clear();
+ d->position = QPointF();
+ }
+ QTextLayout::clearLayout();
+}
+
void QDeclarativeTextLayout::prepare()
{
if (!d || !d->cached) {
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
index 90bf0e0979..8b81db3536 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
@@ -59,6 +59,7 @@ public:
~QDeclarativeTextLayout();
void beginLayout();
+ void clearLayout();
void prepare();
void draw(QPainter *, const QPointF & = QPointF());
diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g
index 1b66ba0427..c84f0b30ba 100644
--- a/src/declarative/qml/parser/qdeclarativejs.g
+++ b/src/declarative/qml/parser/qdeclarativejs.g
@@ -1254,7 +1254,7 @@ case $rule_number: {
else
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(3);
+ node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
./
@@ -1265,7 +1265,7 @@ case $rule_number: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(4);
+ node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
./
diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp
index 8afb93d5ba..28ef17d5ae 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp
@@ -679,7 +679,7 @@ case 85: {
else
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(3);
+ node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
@@ -687,7 +687,7 @@ case 86: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(4);
+ node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index 0a2a6dbc51..2686ce3d52 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -98,6 +98,43 @@ class QByteArray;
int width = item->width(); // width = 200
\endcode
+
+ \section2 Network Components
+
+ If the URL passed to QDeclarativeComponent is a network resource, or if the QML document references a
+ network resource, the QDeclarativeComponent has to fetch the network data before it is able to create
+ objects. In this case, the QDeclarativeComponent will have a \l {QDeclarativeComponent::Loading}{Loading}
+ \l {QDeclarativeComponent::status()}{status}. An application will have to wait until the component
+ is \l {QDeclarativeComponent::Ready}{Ready} before calling \l {QDeclarativeComponent::create()}.
+
+ The following example shows how to load a QML file from a network resource. After creating
+ the QDeclarativeComponent, it tests whether the component is loading. If it is, it connects to the
+ QDeclarativeComponent::statusChanged() signal and otherwise calls the \c {continueLoading()} method
+ directly. Note that QDeclarativeComponent::isLoading() may be false for a network component if the
+ component has been cached and is ready immediately.
+
+ \code
+ MyApplication::MyApplication()
+ {
+ // ...
+ component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml"));
+ if (component->isLoading())
+ QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)),
+ this, SLOT(continueLoading()));
+ else
+ continueLoading();
+ }
+
+ void MyApplication::continueLoading()
+ {
+ if (component->isError()) {
+ qWarning() << component->errors();
+ } else {
+ QObject *myObject = component->create();
+ }
+ }
+ \endcode
+
\sa {Using QML in C++ Applications}, {Integrating QML with existing Qt UI code}
*/
diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp
index 59d5cfa692..1e58a71d1e 100644
--- a/src/declarative/qml/qdeclarativecontext.cpp
+++ b/src/declarative/qml/qdeclarativecontext.cpp
@@ -86,9 +86,14 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
QDeclarativeComponent component(&engine);
component.setData("import QtQuick 1.0\nListView { model: myModel }", QUrl());
- component.create(context);
+ QObject *window = component.create(context);
\endcode
+ Note it is the responsibility of the creator to delete any QDeclarativeContext it
+ constructs. If the \c context object in the example is no longer needed when the
+ \c window component instance is destroyed, the \c context must be destroyed explicitly.
+ The simplest way to ensure this is to set \c window as the parent of \c context.
+
To simplify binding and maintaining larger data sets, a context object can be set
on a QDeclarativeContext. All the properties of the context object are available
by name in the context, as though they were all individually added through calls
@@ -119,11 +124,13 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
All properties added explicitly by QDeclarativeContext::setContextProperty() take
precedence over the context object's properties.
- Contexts form a hierarchy. The root of this hierarchy is the QDeclarativeEngine's
- \l {QDeclarativeEngine::rootContext()}{root context}. A component instance can
- access the data in its own context, as well as all its ancestor contexts. Data
- can be made available to all instances by modifying the
- \l {QDeclarativeEngine::rootContext()}{root context}.
+ \section2 The Context Hierarchy
+
+ Contexts form a hierarchy. The root of this hierarchy is the QML engine's
+ \l {QDeclarativeEngine::rootContext()}{root context}. Child contexts inherit
+ the context properties of their parents; if a child context sets a context property
+ that already exists in its parent, the new context property overrides that of the
+ parent.
The following example defines two contexts - \c context1 and \c context2. The
second context overrides the "b" context property inherited from the first with a
@@ -144,7 +151,7 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
context, their bindings are. If a context is destroyed, the property bindings of
outstanding QML objects will stop evaluating.
- \note Setting the context object or adding new context properties after an object
+ \warning Setting the context object or adding new context properties after an object
has been created in that context is an expensive operation (essentially forcing all bindings
to reevaluate). Thus whenever possible you should complete "setup" of the context
before using it to create any objects.
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index caea6d8b34..cd113361b1 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -176,6 +176,7 @@ struct StaticQtMetaObject : public QObject
};
static bool qt_QmlQtModule_registered = false;
+bool QDeclarativeEnginePrivate::qml_debugging_enabled = false;
void QDeclarativeEnginePrivate::defineModule()
{
@@ -608,7 +609,7 @@ QDeclarativeContext *QDeclarativeEngine::rootContext() const
QNetworkAccessManager with specialized caching, proxy and cookie
support.
- The factory must be set before exceuting the engine.
+ The factory must be set before executing the engine.
*/
void QDeclarativeEngine::setNetworkAccessManagerFactory(QDeclarativeNetworkAccessManagerFactory *factory)
{
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 8539fbf2d9..deb4a77ee8 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -321,6 +321,8 @@ public:
static QString urlToLocalFileOrQrc(const QUrl& url);
static void defineModule();
+
+ static bool qml_debugging_enabled;
};
/*!
diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp
index ed281857d2..bffe681470 100644
--- a/src/declarative/qml/qdeclarativeenginedebug.cpp
+++ b/src/declarative/qml/qdeclarativeenginedebug.cpp
@@ -502,7 +502,8 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId,
property.write(expression);
} else if (hasValidSignal(object, propertyName)) {
QDeclarativeExpression *declarativeExpression = new QDeclarativeExpression(context, object, expression.toString());
- QDeclarativePropertyPrivate::setSignalExpression(property, declarativeExpression);
+ QDeclarativeExpression *oldExpression = QDeclarativePropertyPrivate::setSignalExpression(property, declarativeExpression);
+ declarativeExpression->setSourceLocation(oldExpression->sourceFile(), oldExpression->lineNumber());
} else if (property.isProperty()) {
QDeclarativeBinding *binding = new QDeclarativeBinding(expression.toString(), object, context);
binding->setTarget(property);
diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h
index b4753df6b0..77184c2ddb 100644
--- a/src/declarative/qml/qdeclarativeparser_p.h
+++ b/src/declarative/qml/qdeclarativeparser_p.h
@@ -356,7 +356,7 @@ namespace QDeclarativeParser
// True if the setting of this property will be deferred. Set by the
// QDeclarativeCompiler
bool isDeferred;
- // True if this property is a value-type psuedo-property
+ // True if this property is a value-type pseudo-property
bool isValueTypeSubProperty;
LocationSpan location;
diff --git a/src/declarative/qml/qdeclarativeprivate.h b/src/declarative/qml/qdeclarativeprivate.h
index d45ddbcbaf..388c92e15c 100644
--- a/src/declarative/qml/qdeclarativeprivate.h
+++ b/src/declarative/qml/qdeclarativeprivate.h
@@ -55,9 +55,6 @@
#include <QtCore/qglobal.h>
#include <QtCore/qvariant.h>
-#ifndef Q_OS_WIN
-#include <stdint.h>
-#endif
QT_BEGIN_HEADER
@@ -105,7 +102,7 @@ namespace QDeclarativePrivate
template<class From, class To>
struct StaticCastSelectorClass<From, To, sizeof(int)>
{
- static inline int cast() { return int(reinterpret_cast<intptr_t>(static_cast<To *>(reinterpret_cast<From *>(0x10000000)))) - 0x10000000; }
+ static inline int cast() { return int(reinterpret_cast<quintptr>(static_cast<To *>(reinterpret_cast<From *>(0x10000000)))) - 0x10000000; }
};
template<class From, class To>
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 509ca6bb5f..ae7a80d139 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -514,7 +514,7 @@ void QDeclarativeWorkerScriptEngine::run()
/*!
\qmlclass WorkerScript QDeclarativeWorkerScript
- \ingroup qml-utility-elements
+ \ingroup qml-utility-elements
\brief The WorkerScript element enables the use of threads in QML.
Use WorkerScript to run operations in a new thread.
@@ -528,7 +528,7 @@ void QDeclarativeWorkerScriptEngine::run()
\snippet doc/src/snippets/declarative/workerscript.qml 0
- The above worker script specifies a javascript file, "script.js", that handles
+ The above worker script specifies a JavaScript file, "script.js", that handles
the operations to be performed in the new thread. Here is \c script.js:
\qml
@@ -543,6 +543,19 @@ void QDeclarativeWorkerScriptEngine::run()
\tt script.js. This in turn sends a reply message that is then received
by the \tt onMessage() handler of \tt myWorker.
+
+ \section3 Restrictions
+
+ Since the \c WorkerScript.onMessage() function is run in a separate thread, the
+ JavaScript file is evaluated in a context separate from the main QML engine. This means
+ that unlike an ordinary JavaScript file that is imported into QML, the \c script.js
+ in the above example cannot access the properties, methods or other attributes
+ of the QML item, nor can it access any context properties set on the QML object
+ through QDeclarativeContext.
+
+ Additionally, there are restrictions on the types of values that can be passed to and
+ from the worker script. See the sendMessage() documentation for details.
+
\sa {declarative/threading/workerscript}{WorkerScript example},
{declarative/threading/threadedlistmodel}{Threaded ListModel example}
*/
@@ -586,6 +599,19 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
Sends the given \a message to a worker script handler in another
thread. The other worker script handler can receive this message
through the onMessage() handler.
+
+ The \c message object may only contain values of the following
+ types:
+
+ \list
+ \o boolean, number, string
+ \o JavaScript objects and arrays
+ \o ListModel objects (any other type of QObject* is not allowed)
+ \endlist
+
+ All objects and arrays are copied to the \c message. With the exception
+ of ListModel objects, any modifications by the other thread to an object
+ passed in \c message will not be reflected in the original object.
*/
void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message)
{
diff --git a/src/declarative/qml/qmetaobjectbuilder.cpp b/src/declarative/qml/qmetaobjectbuilder.cpp
index 58f8811567..dfe89f843b 100644
--- a/src/declarative/qml/qmetaobjectbuilder.cpp
+++ b/src/declarative/qml/qmetaobjectbuilder.cpp
@@ -41,10 +41,6 @@
#include "private/qmetaobjectbuilder_p.h"
-#ifndef Q_OS_WIN
-#include <stdint.h>
-#endif
-
QT_BEGIN_NAMESPACE
/*!
@@ -1264,8 +1260,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
char *str = reinterpret_cast<char *>(buf + size);
if (buf) {
if (relocatable) {
- meta->d.stringdata = reinterpret_cast<const char *>((intptr_t)size);
- meta->d.data = reinterpret_cast<uint *>((intptr_t)pmetaSize);
+ meta->d.stringdata = reinterpret_cast<const char *>((quintptr)size);
+ meta->d.data = reinterpret_cast<uint *>((quintptr)pmetaSize);
} else {
meta->d.stringdata = str;
meta->d.data = reinterpret_cast<uint *>(data);
@@ -1502,8 +1498,8 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
const char *buf = data.constData();
const QMetaObject *dataMo = reinterpret_cast<const QMetaObject *>(buf);
- intptr_t stringdataOffset = (intptr_t)dataMo->d.stringdata;
- intptr_t dataOffset = (intptr_t)dataMo->d.data;
+ quintptr stringdataOffset = (quintptr)dataMo->d.stringdata;
+ quintptr dataOffset = (quintptr)dataMo->d.data;
output->d.superdata = superclass;
output->d.stringdata = buf + stringdataOffset;
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index 9fee2575e7..03a0561fbf 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -297,23 +297,25 @@ void QDeclarativeFontLoader::setName(const QString &name)
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: loader.status = FontLoader.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: loader.status == FontLoader.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
FontLoader {
id: loader
onStatusChanged: if (loader.status == FontLoader.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: loader.status != FontLoader.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: loader.status == FontLoader.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
*/
QDeclarativeFontLoader::Status QDeclarativeFontLoader::status() const
{
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 0f5413ec46..391548538d 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(stateChangeDebug, STATECHANGE_DEBUG);
QDeclarativeAction::QDeclarativeAction()
-: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), fromBinding(0), toBinding(0), event(0),
+: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), fromBinding(0), event(0),
specifiedObject(0)
{
}
@@ -67,7 +67,7 @@ QDeclarativeAction::QDeclarativeAction(QObject *target, const QString &propertyN
const QVariant &value)
: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false),
property(target, propertyName), toValue(value),
- fromBinding(0), toBinding(0), event(0),
+ fromBinding(0), event(0),
specifiedObject(target), specifiedProperty(propertyName)
{
if (property.isValid())
@@ -78,7 +78,7 @@ QDeclarativeAction::QDeclarativeAction(QObject *target, const QString &propertyN
QDeclarativeContext *context, const QVariant &value)
: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false),
property(target, propertyName, context), toValue(value),
- fromBinding(0), toBinding(0), event(0),
+ fromBinding(0), event(0),
specifiedObject(target), specifiedProperty(propertyName)
{
if (property.isValid())
@@ -503,11 +503,11 @@ void QDeclarativeState::addEntriesToRevertList(const QList<QDeclarativeAction> &
const QDeclarativeAction &action = actionListIterator.next();
QDeclarativeSimpleAction simpleAction(action);
action.property.write(action.toValue);
- if (action.toBinding) {
+ if (!action.toBinding.isNull()) {
QDeclarativeAbstractBinding *oldBinding = QDeclarativePropertyPrivate::binding(simpleAction.property());
if (oldBinding)
QDeclarativePropertyPrivate::setBinding(simpleAction.property(), 0);
- QDeclarativePropertyPrivate::setBinding(simpleAction.property(), action.toBinding, QDeclarativePropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::setBinding(simpleAction.property(), action.toBinding.data(), QDeclarativePropertyPrivate::DontRemoveBinding);
}
simpleActionList.append(simpleAction);
@@ -675,7 +675,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
a.property = d->revertList.at(ii).property();
a.fromValue = cur;
a.toValue = d->revertList.at(ii).value();
- a.toBinding = d->revertList.at(ii).binding();
+ a.toBinding = QDeclarativeAbstractBinding::getPointer(d->revertList.at(ii).binding());
a.specifiedObject = d->revertList.at(ii).specifiedObject();
a.specifiedProperty = d->revertList.at(ii).specifiedProperty();
a.event = d->revertList.at(ii).event();
diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h
index d01af4e4f5..7b9c18a323 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -45,6 +45,7 @@
#include <qdeclarative.h>
#include <qdeclarativeproperty.h>
#include <QtCore/qobject.h>
+#include <private/qdeclarativebinding_p.h>
#include <private/qdeclarativeglobal_p.h>
QT_BEGIN_HEADER
@@ -75,7 +76,7 @@ public:
QVariant toValue;
QDeclarativeAbstractBinding *fromBinding;
- QDeclarativeAbstractBinding *toBinding;
+ QDeclarativeAbstractBinding::Pointer toBinding;
QDeclarativeActionEvent *event;
//strictly for matching
@@ -114,7 +115,7 @@ public:
class QDeclarativeStateGroup;
class QDeclarativeState;
class QDeclarativeStateOperationPrivate;
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeStateOperation : public QObject
+class Q_DECLARATIVE_EXPORT QDeclarativeStateOperation : public QObject
{
Q_OBJECT
public:
@@ -139,7 +140,7 @@ typedef QDeclarativeStateOperation::ActionList QDeclarativeStateActions;
class QDeclarativeTransition;
class QDeclarativeStatePrivate;
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeState : public QObject
+class Q_DECLARATIVE_EXPORT QDeclarativeState : public QObject
{
Q_OBJECT
diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h
index 4fd8f217c9..98c3f7b222 100644
--- a/src/declarative/util/qdeclarativestate_p_p.h
+++ b/src/declarative/util/qdeclarativestate_p_p.h
@@ -85,7 +85,7 @@ public:
m_reverseEvent = true;
} else {
m_value = a.toValue;
- m_binding = QDeclarativeAbstractBinding::getPointer(a.toBinding);
+ m_binding = a.toBinding;
m_reverseEvent = false;
}
}
diff --git a/src/declarative/util/qdeclarativestategroup_p.h b/src/declarative/util/qdeclarativestategroup_p.h
index 0222cf24c3..cac23f49a4 100644
--- a/src/declarative/util/qdeclarativestategroup_p.h
+++ b/src/declarative/util/qdeclarativestategroup_p.h
@@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeStateGroupPrivate;
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeStateGroup : public QObject, public QDeclarativeParserStatus
+class Q_DECLARATIVE_EXPORT QDeclarativeStateGroup : public QObject, public QDeclarativeParserStatus
{
Q_OBJECT
Q_INTERFACES(QDeclarativeParserStatus)
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 8cb813c675..d1d7822077 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -648,7 +648,7 @@ void QDeclarativeStateChangeScript::setScript(const QDeclarativeScriptString &s)
}
/*!
- \qmlproperty script StateChangeScript::script
+ \qmlproperty string StateChangeScript::name
This property holds the name of the script. This name can be used by a
ScriptAction to target a specific script.
diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp
index 478c7f45ae..c8bc7b3f03 100644
--- a/src/declarative/util/qdeclarativetransition.cpp
+++ b/src/declarative/util/qdeclarativetransition.cpp
@@ -86,12 +86,16 @@ QT_BEGIN_NAMESPACE
Item {
...
transitions: [
- Transition { ... },
+ Transition { to: "state1" ... },
Transition { ... }
]
}
\endqml
+ If multiple Transitions are specified, only a single (best-matching) Transition will be applied for any particular
+ state change. In the example above, when changing to \c state1, the first transition will be used, rather
+ than the more generic second transition.
+
If a state change has a Transition that matches the same property as a
\l Behavior, the Transition animation overrides the \l Behavior for that
state change.
diff --git a/src/declarative/util/qdeclarativetransition_p.h b/src/declarative/util/qdeclarativetransition_p.h
index 5b20cb2374..fc7a5772b1 100644
--- a/src/declarative/util/qdeclarativetransition_p.h
+++ b/src/declarative/util/qdeclarativetransition_p.h
@@ -57,7 +57,7 @@ QT_MODULE(Declarative)
class QDeclarativeAbstractAnimation;
class QDeclarativeTransitionPrivate;
class QDeclarativeTransitionManager;
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeTransition : public QObject
+class Q_DECLARATIVE_EXPORT QDeclarativeTransition : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeTransition)
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index 89b00440a0..d19e6f2799 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -99,8 +99,8 @@ void QDeclarativeTransitionManager::complete()
void QDeclarativeTransitionManagerPrivate::applyBindings()
{
foreach(const QDeclarativeAction &action, bindingsList) {
- if (action.toBinding) {
- QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding);
+ if (!action.toBinding.isNull()) {
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding.data());
} else if (action.event) {
if (action.reverseEvent)
action.event->reverse();
@@ -145,8 +145,8 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
// Apply all the property and binding changes
for (int ii = 0; ii < applyList.size(); ++ii) {
const QDeclarativeAction &action = applyList.at(ii);
- if (action.toBinding) {
- QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
+ if (!action.toBinding.isNull()) {
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding.data(), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (!action.event) {
QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (action.event->isReversable()) {
@@ -165,7 +165,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
continue;
}
const QDeclarativeProperty &prop = action->property;
- if (action->toBinding || !action->toValue.isValid()) {
+ if (!action->toBinding.isNull() || !action->toValue.isValid()) {
action->toValue = prop.read();
}
}
@@ -259,10 +259,10 @@ void QDeclarativeTransitionManager::cancel()
for(int i = 0; i < d->bindingsList.count(); ++i) {
QDeclarativeAction action = d->bindingsList[i];
- if (action.toBinding && action.deletableToBinding) {
+ if (!action.toBinding.isNull() && action.deletableToBinding) {
QDeclarativePropertyPrivate::setBinding(action.property, 0);
- action.toBinding->destroy();
- action.toBinding = 0;
+ action.toBinding.data()->destroy();
+ action.toBinding.clear();
action.deletableToBinding = false;
} else if (action.event) {
//### what do we do here?
diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index 163f6261d2..c4d8dde8f2 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -72,6 +72,7 @@
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(frameRateDebug, QML_SHOW_FRAMERATE)
+extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
class QDeclarativeScene : public QGraphicsScene
{
@@ -696,7 +697,14 @@ void QDeclarativeView::paintEvent(QPaintEvent *event)
if (frameRateDebug())
time = d->frameTimer.restart();
+#ifdef Q_WS_MAC
+ bool oldSmooth = qt_applefontsmoothing_enabled;
+ qt_applefontsmoothing_enabled = false;
+#endif
QGraphicsView::paintEvent(event);
+#ifdef Q_WS_MAC
+ qt_applefontsmoothing_enabled = oldSmooth;
+#endif
QDeclarativeDebugTrace::endRange(QDeclarativeDebugTrace::Painting);
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index 5a791fc0f0..6970b76710 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -1111,7 +1111,7 @@ QSize QDialog::sizeHint() const
// if size is not fixed, try to adjust it according to S60 layoutting
if (minimumSize() != maximumSize()) {
// In S60, dialogs are always the width of screen (in portrait, regardless of current layout)
- return QSize(qMax(S60->screenHeightInPixels, S60->screenWidthInPixels), QWidget::sizeHint().height());
+ return QSize(qMin(S60->screenHeightInPixels, S60->screenWidthInPixels), QWidget::sizeHint().height());
} else {
return QWidget::sizeHint();
}
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index b8aafe3134..5002beb143 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -80,11 +80,43 @@ QT_BEGIN_NAMESPACE
directories. In the simplest case, it can be used with a suitable display
widget as part of a browser or filter.
- QFileSystemModel will not fetch any files or directories until setRootPath
+ QFileSystemModel can be accessed using the standard interface provided by
+ QAbstractItemModel, but it also provides some convenience functions that are
+ specific to a directory model.
+ The fileInfo(), isDir(), name(), and path() functions provide information
+ about the underlying files and directories related to items in the model.
+ Directories can be created and removed using mkdir(), rmdir().
+
+ \note QFileSystemModel requires an instance of a GUI application.
+
+ \section1 Example Usage
+
+ A directory model that displays the contents of a default directory
+ is usually constructed with a parent object:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 2
+
+ A tree view can be used to display the contents of the model
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 4
+
+ and the contents of a particular directory can be displayed by
+ setting the tree view's root index:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 7
+
+ The view's root index can be used to control how much of a
+ hierarchical model is displayed. QDirModel provides a convenience
+ function that returns a suitable model index for a path to a
+ directory within the model.
+
+ \section1 Caching and Performance
+
+ QFileSystemModel will not fetch any files or directories until setRootPath()
is called. This will prevent any unnecessary querying on the file system
until that point such as listing the drives on Windows.
- Unlike the QDirModel, QFileSystemModel uses a separate thread to populate
+ Unlike QDirModel, QFileSystemModel uses a separate thread to populate
itself so it will not cause the main thread to hang as the file system
is being queried. Calls to rowCount() will return 0 until the model
populates a directory.
@@ -92,15 +124,6 @@ QT_BEGIN_NAMESPACE
QFileSystemModel keeps a cache with file information. The cache is
automatically kept up to date using the QFileSystemWatcher.
- QFileSystemModel can be accessed using the standard interface provided by
- QAbstractItemModel, but it also provides some convenience functions that are
- specific to a directory model.
- The fileInfo(), isDir(), name(), and path() functions provide information
- about the underlying files and directories related to items in the model.
- Directories can be created and removed using mkdir(), rmdir().
-
- \note QFileSystemModel requires an instance of a GUI application.
-
\sa {Model Classes}
*/
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index 2d13c9a29e..9e4b9b6635 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -231,7 +231,10 @@ void QInputDialogPrivate::ensureLayout()
QObject::connect(buttonBox, SIGNAL(rejected()), q, SLOT(reject()));
mainLayout = new QVBoxLayout(q);
+ //we want to let the input dialog grow to available size on Symbian.
+#ifndef Q_OS_SYMBIAN
mainLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
+#endif
mainLayout->addWidget(label);
mainLayout->addWidget(inputWidget);
mainLayout->addWidget(buttonBox);
@@ -558,6 +561,9 @@ void QInputDialog::setLabelText(const QString &text)
} else {
d->label->setText(text);
}
+#ifdef Q_OS_SYMBIAN
+ d->label->setWordWrap(true);
+#endif
}
QString QInputDialog::labelText() const
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index 2a8242757e..66cb843e58 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -210,7 +210,7 @@ EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options)
else
configId = qgetenv("QT_GL_EGL_CONFIG");
if (!configId.isEmpty()) {
- // Overriden, so get the EGLConfig for the specified config ID:
+ // Overridden, so get the EGLConfig for the specified config ID:
EGLint properties[] = {
EGL_CONFIG_ID, (EGLint)configId.toInt(),
EGL_NONE
@@ -267,7 +267,7 @@ EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options)
configAttribs.setValue(EGL_STENCIL_SIZE, 1);
configAttribs.setValue(EGL_SAMPLE_BUFFERS, 1);
#ifndef QT_OPENGL_ES_2
- // Aditionally, the GL1 engine likes to have a depth buffer for clipping
+ // Additionally, the GL1 engine likes to have a depth buffer for clipping
configAttribs.setValue(EGL_DEPTH_SIZE, 1);
#endif
}
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index ce63659db7..bf61150c9d 100644
--- a/src/gui/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp
@@ -1508,7 +1508,7 @@ int QGraphicsProxyWidget::type() const
Creates a proxy widget for the given \a child of the widget
contained in this proxy.
- This function makes it possible to aquire proxies for
+ This function makes it possible to acquire proxies for
non top-level widgets. For instance, you can embed a dialog,
and then transform only one of its widgets.
diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp
index a0ecd4c78d..d9ff655b1a 100644
--- a/src/gui/graphicsview/qgraphicssceneevent.cpp
+++ b/src/gui/graphicsview/qgraphicssceneevent.cpp
@@ -1629,7 +1629,7 @@ QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent()
}
/*!
- Returns the old position (i.e., the position immediatly before the widget
+ Returns the old position (i.e., the position immediately before the widget
was moved).
\sa newPos(), QGraphicsItem::setPos()
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 0d39bb568e..73f14933b3 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -80,9 +80,7 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
yourself, you can call setSceneRect(). This will adjust the scroll bars'
ranges appropriately. Note that although the scene supports a virtually
unlimited size, the range of the scroll bars will never exceed the range of
- an integer (INT_MIN, INT_MAX). When the scene is larger than the scroll
- bars' values, you can choose to use translate() to navigate the scene
- instead.
+ an integer (INT_MIN, INT_MAX).
QGraphicsView visualizes the scene by calling render(). By default, the
items are drawn onto the viewport by using a regular QPainter, and using
@@ -101,7 +99,8 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
convenience functions rotate(), scale(), translate() or shear(). The most
two common transformations are scaling, which is used to implement
zooming, and rotation. QGraphicsView keeps the center of the view fixed
- during a transformation.
+ during a transformation. Because of the scene alignment (setAligment()),
+ translating the view will have no visual impact.
You can interact with the items on the scene by using the mouse and
keyboard. QGraphicsView translates the mouse and key events into \e scene
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 4a733beac7..e48f9a750f 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -450,7 +450,7 @@ void QGraphicsWidget::setGeometry(const QRectF &rect)
bottom.
Contents margins are used by the assigned layout to define the placement
- of subwidgets and layouts. Margins are particularily useful for widgets
+ of subwidgets and layouts. Margins are particularly useful for widgets
that constrain subwidgets to only a section of its own geometry. For
example, a group box with a layout will place subwidgets inside its frame,
but below the title.
diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp
index 91622f3a22..9d90b3ff69 100644
--- a/src/gui/image/qbitmap.cpp
+++ b/src/gui/image/qbitmap.cpp
@@ -227,6 +227,14 @@ QBitmap::~QBitmap()
}
/*!
+ \fn void QBitmap::swap(QBitmap &other)
+ \since 4.8
+
+ Swaps bitmap \a other with this bitmap. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the bitmap as a QVariant.
*/
QBitmap::operator QVariant() const
diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h
index 1bbe1cf94f..93be951e89 100644
--- a/src/gui/image/qbitmap.h
+++ b/src/gui/image/qbitmap.h
@@ -63,6 +63,7 @@ public:
~QBitmap();
QBitmap &operator=(const QPixmap &);
+ inline void swap(QBitmap &other) { QPixmap::swap(other); } // prevent QBitmap<->QPixmap swaps
operator QVariant() const;
inline void clear() { fill(Qt::color0); }
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index a2f429a559..e54bb5fcba 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -613,6 +613,14 @@ QIcon &QIcon::operator=(const QIcon &other)
}
/*!
+ \fn void QIcon::swap(QIcon &other)
+ \since 4.8
+
+ Swaps icon \a other with this icon. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the icon as a QVariant.
*/
QIcon::operator QVariant() const
diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h
index fd591e62ba..5091d03871 100644
--- a/src/gui/image/qicon.h
+++ b/src/gui/image/qicon.h
@@ -75,6 +75,8 @@ public:
inline QIcon &operator=(QIcon &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QIcon &other) { qSwap(d, other.d); }
+
operator QVariant() const;
QPixmap pixmap(const QSize &size, Mode mode = Normal, State state = Off) const;
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index ee0ee96838..1ac1cd8ca9 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -1329,6 +1329,14 @@ QImage &QImage::operator=(const QImage &image)
}
/*!
+ \fn void QImage::swap(QImage &other)
+ \since 4.8
+
+ Swaps image \a other with this image. This operation is very
+ fast and never fails.
+*/
+
+/*!
\internal
*/
int QImage::devType() const
diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h
index 003daeac94..c6a947ef0a 100644
--- a/src/gui/image/qimage.h
+++ b/src/gui/image/qimage.h
@@ -144,6 +144,7 @@ public:
inline QImage &operator=(QImage &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QImage &other) { qSwap(d, other.d); }
bool isNull() const;
diff --git a/src/gui/image/qimage_ssse3.cpp b/src/gui/image/qimage_ssse3.cpp
index 9aed0112f0..836d7b0ee8 100644
--- a/src/gui/image/qimage_ssse3.cpp
+++ b/src/gui/image/qimage_ssse3.cpp
@@ -54,7 +54,7 @@ Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_ssse3(quint32 *dst, con
{
quint32 *const end = dst + len;
- // Prologue, align dst to 16 bytes. The alignement is done on dst because it has 4 store()
+ // Prologue, align dst to 16 bytes. The alignment is done on dst because it has 4 store()
// for each 3 load() of src.
const int offsetToAlignOn16Bytes = (4 - ((reinterpret_cast<quintptr>(dst) >> 2) & 0x3)) & 0x3;
const int prologLength = qMin(len, offsetToAlignOn16Bytes);
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index 48d2de3e3b..fc81d23bf3 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -1030,6 +1030,14 @@ QPicture& QPicture::operator=(const QPicture &p)
}
/*!
+ \fn void QPicture::swap(QPicture &other)
+ \since 4.8
+
+ Swaps picture \a other with this picture. This operation is very
+ fast and never fails.
+*/
+
+/*!
\internal
Constructs a QPicturePrivate
diff --git a/src/gui/image/qpicture.h b/src/gui/image/qpicture.h
index 49b0fd6708..d24f23aaf2 100644
--- a/src/gui/image/qpicture.h
+++ b/src/gui/image/qpicture.h
@@ -85,6 +85,7 @@ public:
inline QPicture &operator=(QPicture &&other)
{ qSwap(d_ptr, other.d_ptr); return *this; }
#endif
+ inline void swap(QPicture &other) { d_ptr.swap(other.d_ptr); }
void detach();
bool isDetached() const;
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 5383b7cb37..9fd10ae84a 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -440,6 +440,14 @@ QPixmap &QPixmap::operator=(const QPixmap &pixmap)
}
/*!
+ \fn void QPixmap::swap(QPixmap &other)
+ \since 4.8
+
+ Swaps pixmap \a other with this pixmap. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the pixmap as a QVariant.
*/
QPixmap::operator QVariant() const
@@ -1102,6 +1110,9 @@ QPixmap QPixmap::grabWidget(QWidget * widget, const QRect &rect)
return QPixmap();
QPixmap res(r.size());
+ if (!qt_widget_private(widget)->isOpaque)
+ res.fill(Qt::transparent);
+
widget->d_func()->render(&res, QPoint(), r, QWidget::DrawWindowBackground
| QWidget::DrawChildren | QWidget::IgnoreMask, true);
return res;
diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h
index e9f9365f7e..15fe5fa171 100644
--- a/src/gui/image/qpixmap.h
+++ b/src/gui/image/qpixmap.h
@@ -87,6 +87,8 @@ public:
inline QPixmap &operator=(QPixmap &&other)
{ qSwap(data, other.data); return *this; }
#endif
+ inline void swap(QPixmap &other) { qSwap(data, other.data); }
+
operator QVariant() const;
bool isNull() const; // ### Qt 5: make inline
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index 935aba0423..ea62cf8147 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -331,6 +331,7 @@ public:
float gamma;
int quality;
QString description;
+ QStringList readTexts;
png_struct *png_ptr;
png_info *info_ptr;
@@ -389,25 +390,20 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngHeader()
while (num_text--) {
QString key, value;
-#if defined(PNG_iTXt_SUPPORTED) && !defined(QT_NO_TEXTCODEC)
- if (text_ptr->lang) {
- QTextCodec *codec = QTextCodec::codecForName(text_ptr->lang);
- if (codec) {
- key = codec->toUnicode(text_ptr->lang_key);
- value = codec->toUnicode(QByteArray(text_ptr->text, text_ptr->itxt_length));
- } else {
- key = QString::fromLatin1(text_ptr->key);
- value = QString::fromLatin1(QByteArray(text_ptr->text, int(text_ptr->text_length)));
- }
+ key = QString::fromLatin1(text_ptr->key);
+#if defined(PNG_iTXt_SUPPORTED)
+ if (text_ptr->itxt_length) {
+ value = QString::fromUtf8(text_ptr->text, int(text_ptr->itxt_length));
} else
#endif
{
- key = QString::fromLatin1(text_ptr->key);
value = QString::fromLatin1(QByteArray(text_ptr->text, int(text_ptr->text_length)));
}
if (!description.isEmpty())
description += QLatin1String("\n\n");
description += key + QLatin1String(": ") + value.simplified();
+ readTexts.append(key);
+ readTexts.append(value);
text_ptr++;
}
#endif
@@ -485,25 +481,8 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngImage(QImage *outImage)
outImage->setDotsPerMeterX(png_get_x_pixels_per_meter(png_ptr,info_ptr));
outImage->setDotsPerMeterY(png_get_y_pixels_per_meter(png_ptr,info_ptr));
-#ifndef QT_NO_IMAGE_TEXT
- png_textp text_ptr;
- int num_text=0;
- png_get_text(png_ptr,info_ptr,&text_ptr,&num_text);
- while (num_text--) {
- outImage->setText(text_ptr->key,0,QString::fromAscii(text_ptr->text));
- text_ptr++;
- }
-
- foreach (const QString &pair, description.split(QLatin1String("\n\n"))) {
- int index = pair.indexOf(QLatin1Char(':'));
- if (index >= 0 && pair.indexOf(QLatin1Char(' ')) < index) {
- outImage->setText(QLatin1String("Description"), pair.simplified());
- } else {
- QString key = pair.left(index);
- outImage->setText(key, pair.mid(index + 2).simplified());
- }
- }
-#endif
+ for (int i = 0; i < readTexts.size()-1; i+=2)
+ outImage->setText(readTexts.at(i), readTexts.at(i+1));
png_read_end(png_ptr, end_info);
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
@@ -634,29 +613,40 @@ static void set_text(const QImage &image, png_structp png_ptr, png_infop info_pt
return;
png_textp text_ptr = new png_text[text.size()];
+ qMemSet(text_ptr, 0, text.size() * sizeof(png_text));
QMap<QString, QString>::ConstIterator it = text.constBegin();
int i = 0;
while (it != text.constEnd()) {
- QString t = it.value();
- if (t.length() < 40)
- text_ptr[i].compression = PNG_TEXT_COMPRESSION_NONE;
- else
- text_ptr[i].compression = PNG_TEXT_COMPRESSION_zTXt;
text_ptr[i].key = qstrdup(it.key().left(79).toLatin1().constData());
+ bool noCompress = (it.value().length() < 40);
-#ifndef PNG_iTXt_SUPPORTED
- QByteArray value = it.value().toLatin1();
- text_ptr[i].text = qstrdup(value.constData());
- text_ptr[i].text_length = value.size();
-#else
- QByteArray value = it.value().toUtf8();
- text_ptr[i].text = qstrdup(value.constData());
- text_ptr[i].text_length = 0;
- text_ptr[i].itxt_length = value.size();
- text_ptr[i].lang = const_cast<char*>("UTF-8");
- text_ptr[i].lang_key = qstrdup(it.key().toUtf8().constData());
+#ifdef PNG_iTXt_SUPPORTED
+ bool needsItxt = false;
+ foreach(const QChar c, it.value()) {
+ uchar ch = c.cell();
+ if (c.row() || (ch < 0x20 && ch != '\n') || (ch > 0x7e && ch < 0xa0)) {
+ needsItxt = true;
+ break;
+ }
+ }
+
+ if (needsItxt) {
+ text_ptr[i].compression = noCompress ? PNG_ITXT_COMPRESSION_NONE : PNG_ITXT_COMPRESSION_zTXt;
+ QByteArray value = it.value().toUtf8();
+ text_ptr[i].text = qstrdup(value.constData());
+ text_ptr[i].itxt_length = value.size();
+ text_ptr[i].lang = const_cast<char*>("UTF-8");
+ text_ptr[i].lang_key = qstrdup(it.key().toUtf8().constData());
+ }
+ else
#endif
+ {
+ text_ptr[i].compression = noCompress ? PNG_TEXT_COMPRESSION_NONE : PNG_TEXT_COMPRESSION_zTXt;
+ QByteArray value = it.value().toLatin1();
+ text_ptr[i].text = qstrdup(value.constData());
+ text_ptr[i].text_length = value.size();
+ }
++i;
++it;
}
diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp
index 0dd4e99106..f9c2e0c203 100644
--- a/src/gui/image/qxbmhandler.cpp
+++ b/src/gui/image/qxbmhandler.cpp
@@ -66,27 +66,36 @@ static inline int hex2byte(register char *p)
static bool read_xbm_header(QIODevice *device, int& w, int& h)
{
const int buflen = 300;
+ const int maxlen = 4096;
char buf[buflen + 1];
QRegExp r1(QLatin1String("^#define[ \t]+[a-zA-Z0-9._]+[ \t]+"));
QRegExp r2(QLatin1String("[0-9]+"));
qint64 readBytes = 0;
+ qint64 totalReadBytes = 0;
- // "#define .._width <num>"
- readBytes = device->readLine(buf, buflen);
- if (readBytes <= 0)
- return false;
- buf[readBytes - 1] = '\0';
+ buf[0] = '\0';
// skip initial comment, if any
- while (buf[0] != '#' && (readBytes = device->readLine( buf, buflen )) > 0) {}
+ while (buf[0] != '#') {
+ readBytes = device->readLine(buf, buflen);
+
+ // if readBytes >= buflen, it's very probably not a C file
+ if (readBytes <= 0 || readBytes >= buflen -1)
+ return false;
+
+ // limit xbm headers to the first 4k in the file to prevent
+ // excessive reads on non-xbm files
+ totalReadBytes += readBytes;
+ if (totalReadBytes >= maxlen)
+ return false;
+ }
- if (readBytes <= 0)
- return false;
buf[readBytes - 1] = '\0';
QString sbuf;
sbuf = QString::fromLatin1(buf);
+ // "#define .._width <num>"
if (r1.indexIn(sbuf) == 0 &&
r2.indexIn(sbuf, r1.matchedLength()) == r1.matchedLength())
w = QByteArray(&buf[r1.matchedLength()]).trimmed().toInt();
diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp
index b97afd30fb..453100c010 100644
--- a/src/gui/image/qxpmhandler.cpp
+++ b/src/gui/image/qxpmhandler.cpp
@@ -766,7 +766,7 @@ static bool qt_get_named_xpm_rgb(const char *name_no_space, QRgb *rgb)
{
XPMRGBData x;
x.name = name_no_space;
- // Funtion bsearch() is supposed to be
+ // Function bsearch() is supposed to be
// void *bsearch(const void *key, const void *base, ...
// So why (char*)? Are there broken bsearch() declarations out there?
XPMRGBData *r = (XPMRGBData *)bsearch((char *)&x, (char *)xpmRgbTbl, xpmRgbTblSize,
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index a9612a2bdc..8af6013f15 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -1169,7 +1169,7 @@ QAbstractItemView::EditTriggers QAbstractItemView::editTriggers() const
\property QAbstractItemView::verticalScrollMode
\brief how the view scrolls its contents in the vertical direction
- This property controlls how the view scroll its contents vertically.
+ This property controls how the view scroll its contents vertically.
Scrolling can be done either per pixel or per item.
*/
@@ -1195,7 +1195,7 @@ QAbstractItemView::ScrollMode QAbstractItemView::verticalScrollMode() const
\property QAbstractItemView::horizontalScrollMode
\brief how the view scrolls its contents in the horizontal direction
- This property controlls how the view scroll its contents horizontally.
+ This property controls how the view scroll its contents horizontally.
Scrolling can be done either per pixel or per item.
*/
@@ -1278,7 +1278,7 @@ bool QAbstractItemView::hasAutoScroll() const
\property QAbstractItemView::autoScrollMargin
\brief the size of the area when auto scrolling is triggered
- This property controlls the size of the area at the edge of the viewport that
+ This property controls the size of the area at the edge of the viewport that
triggers autoscrolling. The default value is 16 pixels.
*/
void QAbstractItemView::setAutoScrollMargin(int margin)
diff --git a/src/gui/itemviews/qabstractproxymodel.cpp b/src/gui/itemviews/qabstractproxymodel.cpp
index 12c4c7bb48..b9574f19f4 100644
--- a/src/gui/itemviews/qabstractproxymodel.cpp
+++ b/src/gui/itemviews/qabstractproxymodel.cpp
@@ -362,7 +362,7 @@ QMimeData* QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const
QModelIndexList list;
foreach(const QModelIndex &index, indexes)
list << mapToSource(index);
- return d->model->mimeData(indexes);
+ return d->model->mimeData(list);
}
/*!
diff --git a/src/gui/itemviews/qdirmodel.cpp b/src/gui/itemviews/qdirmodel.cpp
index 48599bc477..cb6f81e33f 100644
--- a/src/gui/itemviews/qdirmodel.cpp
+++ b/src/gui/itemviews/qdirmodel.cpp
@@ -201,25 +201,6 @@ void QDirModelPrivate::invalidate()
QDirModel keeps a cache with file information. The cache needs to be
updated with refresh().
- A directory model that displays the contents of a default directory
- is usually constructed with a parent object:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 2
-
- A tree view can be used to display the contents of the model
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 4
-
- and the contents of a particular directory can be displayed by
- setting the tree view's root index:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 7
-
- The view's root index can be used to control how much of a
- hierarchical model is displayed. QDirModel provides a convenience
- function that returns a suitable model index for a path to a
- directory within the model.
-
QDirModel can be accessed using the standard interface provided by
QAbstractItemModel, but it also provides some convenience functions
that are specific to a directory model. The fileInfo() and isDir()
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index d8fef5529f..d1022f1734 100644
--- a/src/gui/itemviews/qtableview.cpp
+++ b/src/gui/itemviews/qtableview.cpp
@@ -114,7 +114,7 @@ void QSpanCollection::updateSpan(QSpanCollection::Span *span, int old_height)
}
} else if (old_height > span->height()) {
//remove the span from all the subspans lists that intersect the columns not covered anymore
- Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax usefull if height is 0
+ Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax useful if height is 0
Q_ASSERT(it_y != index.end()); //it_y must exist since the span is in the list
while (-it_y.key() <= span->top() + old_height -1) {
if (-it_y.key() > span->bottom()) {
@@ -1404,7 +1404,7 @@ void QTableView::paintEvent(QPaintEvent *event)
}
if (showGrid) {
- // Find the bottom right (the last rows/coloumns might be hidden)
+ // Find the bottom right (the last rows/columns might be hidden)
while (verticalHeader->isSectionHidden(verticalHeader->logicalIndex(bottom))) --bottom;
QPen old = painter.pen();
painter.setPen(gridPen);
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index d81a3c3af4..833e80399b 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -498,7 +498,7 @@ bool QApplicationPrivate::fade_tooltip = false;
bool QApplicationPrivate::animate_toolbox = false;
bool QApplicationPrivate::widgetCount = false;
bool QApplicationPrivate::load_testability = false;
-QString QApplicationPrivate::qmljsDebugArguments;
+QString QApplicationPrivate::qmljs_debug_arguments;
#ifdef QT_KEYPAD_NAVIGATION
# ifdef Q_OS_SYMBIAN
Qt::NavigationMode QApplicationPrivate::navigationMode = Qt::NavigationModeKeypadDirectional;
@@ -571,7 +571,7 @@ void QApplicationPrivate::process_cmdline()
if (arg == "-qdevel" || arg == "-qdebug") {
// obsolete argument
} else if (arg.indexOf("-qmljsdebugger=", 0) != -1) {
- qmljsDebugArguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
+ qmljs_debug_arguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
} else if (arg.indexOf("-style=", 0) != -1) {
s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower());
} else if (arg == "-style" && i < argc-1) {
@@ -1433,10 +1433,18 @@ QStyle *QApplication::style()
// Compile-time search for default style
//
QString style;
- if (!QApplicationPrivate::styleOverride.isEmpty())
+#ifdef QT_BUILD_INTERNAL
+ QString envStyle = QString::fromLocal8Bit(qgetenv("QT_STYLE_OVERRIDE"));
+#else
+ QString envStyle;
+#endif
+ if (!QApplicationPrivate::styleOverride.isEmpty()) {
style = QApplicationPrivate::styleOverride;
- else
+ } else if (!envStyle.isEmpty()) {
+ style = envStyle;
+ } else {
style = QApplicationPrivate::desktopStyleKey();
+ }
QStyle *&app_style = QApplicationPrivate::app_style;
app_style = QStyleFactory::create(style);
@@ -6100,6 +6108,11 @@ QPixmap QApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape)
return QPixmap();
}
+QString QApplicationPrivate::qmljsDebugArgumentsString()
+{
+ return qmljs_debug_arguments;
+}
+
QT_END_NAMESPACE
#include "moc_qapplication.cpp"
diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index e5364d0e7e..3aafeb4dff 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -549,7 +549,7 @@ void qt_mac_update_os_settings()
FontMap("QTipLabel", kThemeSmallSystemFont),
FontMap("QLabel", kThemeSystemFont),
FontMap("QToolButton", kThemeSmallSystemFont),
- FontMap("QMenuItem", kThemeMenuItemCmdKeyFont), // It doesn't exist, but its unique.
+ FontMap("QMenuItem", kThemeMenuItemFont), // It doesn't exist, but its unique.
FontMap("QComboLineEdit", kThemeViewsFont), // It doesn't exist, but its unique.
FontMap("QSmallFont", kThemeSmallSystemFont), // It doesn't exist, but its unique.
FontMap("QMiniFont", kThemeMiniSystemFont), // It doesn't exist, but its unique.
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index 9f675e3cbf..7b49999889 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -464,7 +464,8 @@ public:
static bool animate_toolbox;
static bool widgetCount; // Coupled with -widgetcount switch
static bool load_testability; // Coupled with -testability switch
- static QString qmljsDebugArguments; // a string containing arguments for js/qml debugging.
+ static QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
+ static QString qmljsDebugArgumentsString(); // access string from other libraries
#ifdef Q_WS_MAC
static bool native_modal_dialog_active;
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 19e7d450f0..f352871c69 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1425,7 +1425,7 @@ void qt_init(QApplicationPrivate * /* priv */, int)
TInt err = CApaCommandLine::GetCommandLineFromProcessEnvironment(commandLine);
// After this construction, CEikonEnv will be available from CEikonEnv::Static().
// (much like our qApp).
- CEikonEnv* coe = new CEikonEnv;
+ QtEikonEnv* coe = new QtEikonEnv;
//not using QT_TRAP_THROWING, because coe owns the cleanupstack so it can't be pushed there.
if(err == KErrNone)
TRAP(err, coe->ConstructAppFromCommandLineL(factory,*commandLine));
@@ -2055,6 +2055,17 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent
}
#endif
break;
+#ifdef Q_SYMBIAN_SUPPORTS_SURFACES
+ case EEventUser:
+ {
+ // GOOM is looking for candidates to kill so indicate that we are
+ // capable of cleaning up by handling this event
+ TInt32 *data = reinterpret_cast<TInt32 *>(event->EventData());
+ if (data[0] == EApaSystemEventShutdown && data[1] == KGoomMemoryLowEvent)
+ return 1;
+ }
+ break;
+#endif
default:
break;
}
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index cbc2356abc..ff98229ff1 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -2335,6 +2335,30 @@ void qt_init(QApplicationPrivate *priv, int,
X11->desktopEnvironment = DE_4DWM;
break;
}
+
+ if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(),
+ ATOM(_NET_SUPPORTING_WM_CHECK),
+ 0, 1024, False, XA_WINDOW, &type,
+ &format, &length, &after, &data) == Success) {
+ if (type == XA_WINDOW && format == 32) {
+ Window windowManagerWindow = *((Window*) data);
+ XFree(data);
+ data = 0;
+
+ if (windowManagerWindow != XNone) {
+ Atom utf8atom = ATOM(UTF8_STRING);
+ if (XGetWindowProperty(QX11Info::display(), windowManagerWindow, ATOM(_NET_WM_NAME),
+ 0, 1024, False, utf8atom, &type,
+ &format, &length, &after, &data) == Success) {
+ if (type == utf8atom && format == 8) {
+ if (qstrcmp((const char *)data, "MCompositor") == 0)
+ X11->desktopEnvironment = DE_MEEGO_COMPOSITOR;
+ }
+ }
+ }
+ }
+ }
+
} while(0);
if (data)
diff --git a/src/gui/kernel/qclipboard_s60.cpp b/src/gui/kernel/qclipboard_s60.cpp
index c9b1d23862..73280b264e 100644
--- a/src/gui/kernel/qclipboard_s60.cpp
+++ b/src/gui/kernel/qclipboard_s60.cpp
@@ -257,18 +257,14 @@ const QMimeData* QClipboard::mimeData(Mode mode) const
}
}
CleanupStack::PopAndDestroy(cb);
- if (dataExists) {
- return d->source();
- }
- else {
- return 0;
- }
-
});
if (err != KErrNone){
qDebug()<< "clipboard is empty/err: " << err;
}
+ if (dataExists) {
+ return d->source();
+ }
}
return 0;
}
diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm
index 6ee4277b7b..b963b3c6f5 100644
--- a/src/gui/kernel/qcocoamenuloader_mac.mm
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm
@@ -89,7 +89,7 @@ QT_USE_NAMESPACE
- (void)ensureAppMenuInMenu:(NSMenu *)menu
{
// The application menu is the menu in the menu bar that contains the
- // 'Quit' item. When changing menu bar (e.g when swithing between
+ // 'Quit' item. When changing menu bar (e.g when switching between
// windows with different menu bars), we never recreate this menu, but
// instead pull it out the current menu bar and place into the new one:
NSMenu *mainMenu = [NSApp mainMenu];
diff --git a/src/gui/kernel/qeventdispatcher_s60.cpp b/src/gui/kernel/qeventdispatcher_s60.cpp
index bc787b81fb..77ebd0de42 100644
--- a/src/gui/kernel/qeventdispatcher_s60.cpp
+++ b/src/gui/kernel/qeventdispatcher_s60.cpp
@@ -45,6 +45,62 @@
QT_BEGIN_NAMESPACE
+QtEikonEnv::QtEikonEnv()
+ : m_lastIterationCount(0)
+ , m_savedStatusCode(KRequestPending)
+ , m_hasAlreadyRun(false)
+{
+}
+
+QtEikonEnv::~QtEikonEnv()
+{
+}
+
+void QtEikonEnv::RunL()
+{
+ QEventDispatcherS60 *dispatcher = qobject_cast<QEventDispatcherS60 *>(QAbstractEventDispatcher::instance());
+ if (!dispatcher) {
+ CEikonEnv::RunL();
+ return;
+ }
+
+ if (m_lastIterationCount != dispatcher->iterationCount()) {
+ m_hasAlreadyRun = false;
+ m_lastIterationCount = dispatcher->iterationCount();
+ }
+
+ if (m_hasAlreadyRun) {
+ // Fool the active scheduler into believing we are still waiting for events.
+ // The window server thinks we are not, however.
+ m_savedStatusCode = iStatus.Int();
+ iStatus = KRequestPending;
+ SetActive();
+ dispatcher->queueDeferredActiveObjectsCompletion();
+ } else {
+ m_hasAlreadyRun = true;
+ CEikonEnv::RunL();
+ }
+}
+
+void QtEikonEnv::DoCancel()
+{
+ complete();
+
+ CEikonEnv::DoCancel();
+}
+
+void QtEikonEnv::complete()
+{
+ if (m_hasAlreadyRun) {
+ if (m_savedStatusCode != KRequestPending) {
+ TRequestStatus *status = &iStatus;
+ QEventDispatcherSymbian::RequestComplete(status, m_savedStatusCode);
+ m_savedStatusCode = KRequestPending;
+ }
+ m_hasAlreadyRun = false;
+ }
+}
+
QEventDispatcherS60::QEventDispatcherS60(QObject *parent)
: QEventDispatcherSymbian(parent),
m_noInputEvents(false)
@@ -127,4 +183,14 @@ void QEventDispatcherS60::removeInputEventsForWidget(QObject *object)
}
}
+// reimpl
+void QEventDispatcherS60::reactivateDeferredActiveObjects()
+{
+ if (S60->qtOwnsS60Environment) {
+ static_cast<QtEikonEnv *>(CCoeEnv::Static())->complete();
+ }
+
+ QEventDispatcherSymbian::reactivateDeferredActiveObjects();
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qeventdispatcher_s60_p.h b/src/gui/kernel/qeventdispatcher_s60_p.h
index d2f327c4fc..c14fef0643 100644
--- a/src/gui/kernel/qeventdispatcher_s60_p.h
+++ b/src/gui/kernel/qeventdispatcher_s60_p.h
@@ -56,8 +56,30 @@
#include <private/qeventdispatcher_symbian_p.h>
#include "qt_s60_p.h"
+#include <eikenv.h>
+
QT_BEGIN_NAMESPACE
+class QEventDispatcherS60;
+
+class QtEikonEnv : public CEikonEnv
+{
+public:
+ QtEikonEnv();
+ ~QtEikonEnv();
+
+ // from CActive.
+ void RunL();
+ void DoCancel();
+
+ void complete();
+
+private:
+ int m_lastIterationCount;
+ TInt m_savedStatusCode;
+ bool m_hasAlreadyRun;
+};
+
class Q_GUI_EXPORT QEventDispatcherS60 : public QEventDispatcherSymbian
{
Q_OBJECT
@@ -73,6 +95,8 @@ public:
void saveInputEvent(QSymbianControl *control, QWidget *widget, QInputEvent *event);
+ void reactivateDeferredActiveObjects();
+
private:
bool sendDeferredInputEvents();
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index 8dd2db75ee..5f1bb85805 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -171,6 +171,10 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ
foreach (QGesture *g, gestures) {
m_deletedRecognizers.remove(g);
m_gestureToRecognizer.remove(g);
+ m_maybeGestures.remove(g);
+ m_activeGestures.remove(g);
+ m_gestureOwners.remove(g);
+ m_gestureTargets.remove(g);
}
qDeleteAll(gestures);
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index e14a9198a6..b4a360a077 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1521,6 +1521,14 @@ QKeySequence &QKeySequence::operator=(const QKeySequence &other)
}
/*!
+ \fn void QKeySequence::swap(QKeySequence &other)
+ \since 4.8
+
+ Swaps key sequence \a other with this key sequence. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn bool QKeySequence::operator!=(const QKeySequence &other) const
Returns true if this key sequence is not equal to the \a other
diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h
index b47873de90..a2352ebed3 100644
--- a/src/gui/kernel/qkeysequence.h
+++ b/src/gui/kernel/qkeysequence.h
@@ -183,6 +183,7 @@ public:
inline QKeySequence &operator=(QKeySequence &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QKeySequence &other) { qSwap(d, other.d); }
bool operator==(const QKeySequence &other) const;
inline bool operator!= (const QKeySequence &other) const
{ return !(*this == other); }
diff --git a/src/gui/kernel/qmotifdnd_x11.cpp b/src/gui/kernel/qmotifdnd_x11.cpp
index 333445501d..3b79129468 100644
--- a/src/gui/kernel/qmotifdnd_x11.cpp
+++ b/src/gui/kernel/qmotifdnd_x11.cpp
@@ -385,7 +385,10 @@ static void DndReadSourceProperty(Display * dpy,
static void DndWriteReceiverProperty(Display * dpy, Window window,
unsigned char protocol_style)
{
- DndReceiverProp receiver_prop ;
+ DndReceiverProp receiver_prop;
+
+ // squelch potential valgrind errors about uninitialized reads
+ memset(&receiver_prop, 0, sizeof(receiver_prop));
receiver_prop.byte_order = DndByteOrder() ;
receiver_prop.protocol_version = DND_PROTOCOL_VERSION;
diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp
index 1821c3d667..48b7ac1c35 100644
--- a/src/gui/kernel/qstandardgestures.cpp
+++ b/src/gui/kernel/qstandardgestures.cpp
@@ -194,13 +194,15 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
d->hotSpot = p1.screenPos();
d->isHotSpotSet = true;
+ QPointF centerPoint = (p1.screenPos() + p2.screenPos()) / 2.0;
if (d->isNewSequence) {
d->startPosition[0] = p1.screenPos();
d->startPosition[1] = p2.screenPos();
+ d->lastCenterPoint = centerPoint;
+ } else {
+ d->lastCenterPoint = d->centerPoint;
}
-
- d->lastCenterPoint = d->centerPoint;
- d->centerPoint = (p1.screenPos() + p2.screenPos()) / 2.0;
+ d->centerPoint = centerPoint;
d->changeFlags |= QPinchGesture::CenterPointChanged;
@@ -224,7 +226,7 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
startAngle -= 360;
const qreal rotationAngle = startAngle - angle;
if (d->isNewSequence)
- d->lastRotationAngle = rotationAngle;
+ d->lastRotationAngle = 0.0;
else
d->lastRotationAngle = d->rotationAngle;
d->rotationAngle = rotationAngle;
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index 5a522f9a15..48d21e9999 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -79,6 +79,7 @@
#include <qdesktopwidget.h>
#include <qevent.h>
#include <qpixmapcache.h>
+#include <qvarlengtharray.h>
#include <private/qevent_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qt_mac_p.h>
@@ -616,6 +617,27 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags)
return qtMods;
}
+NSString *qt_mac_removePrivateUnicode(NSString* string)
+{
+ int len = [string length];
+ if (len) {
+ QVarLengthArray <unichar, 10> characters(len);
+ bool changed = false;
+ for (int i = 0; i<len; i++) {
+ characters[i] = [string characterAtIndex:i];
+ // check if they belong to key codes in private unicode range
+ // currently we need to handle only the NSDeleteFunctionKey
+ if (characters[i] == NSDeleteFunctionKey) {
+ characters[i] = NSDeleteCharacter;
+ changed = true;
+ }
+ }
+ if (changed)
+ return [NSString stringWithCharacters:characters.data() length:len];
+ }
+ return string;
+}
+
Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations)
{
Qt::KeyboardModifiers qtMods =Qt::NoModifier;
diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h
index d62d9c3d48..56c8094819 100644
--- a/src/gui/kernel/qt_x11_p.h
+++ b/src/gui/kernel/qt_x11_p.h
@@ -338,6 +338,7 @@ enum DesktopEnvironment {
DE_KDE,
DE_GNOME,
DE_CDE,
+ DE_MEEGO_COMPOSITOR,
DE_4DWM
};
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 8b643ef79c..cd1c9f0dd7 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -239,6 +239,17 @@ void QWidgetBackingStoreTracker::unregisterWidget(QWidget *w)
}
}
+/*!
+ \internal
+ Recursively remove widget and all of its descendents.
+ */
+void QWidgetBackingStoreTracker::unregisterWidgetSubtree(QWidget *widget)
+{
+ unregisterWidget(widget);
+ foreach (QObject *child, widget->children())
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child))
+ unregisterWidgetSubtree(childWidget);
+}
QWidgetPrivate::QWidgetPrivate(int version)
: QObjectPrivate(version)
@@ -334,15 +345,27 @@ QWidgetPrivate::~QWidgetPrivate()
#endif //QT_NO_GRAPHICSEFFECT
}
+class QDummyWindowSurface : public QWindowSurface
+{
+public:
+ QDummyWindowSurface(QWidget *window) : QWindowSurface(window) {}
+ QPaintDevice *paintDevice() { return window(); }
+ void flush(QWidget *, const QRegion &, const QPoint &) {}
+};
+
QWindowSurface *QWidgetPrivate::createDefaultWindowSurface()
{
Q_Q(QWidget);
QWindowSurface *surface;
- if (QApplicationPrivate::graphicsSystem())
- surface = QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
- else
- surface = createDefaultWindowSurface_sys();
+ if (q->property("_q_DummyWindowSurface").toBool()) {
+ surface = new QDummyWindowSurface(q);
+ } else {
+ if (QApplicationPrivate::graphicsSystem())
+ surface = QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
+ else
+ surface = createDefaultWindowSurface_sys();
+ }
return surface;
}
@@ -7030,7 +7053,11 @@ bool QWidget::restoreGeometry(const QByteArray &geometry)
if (maximized || fullScreen) {
// set geomerty before setting the window state to make
// sure the window is maximized to the right screen.
+ // Skip on windows: the window is restored into a broken
+ // half-maximized state.
+#ifndef Q_WS_WIN
setGeometry(restoredNormalGeometry);
+#endif
Qt::WindowStates ws = windowState();
if (maximized)
ws |= Qt::WindowMaximized;
@@ -10074,7 +10101,16 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
if (newParent && isAncestorOf(focusWidget()))
focusWidget()->clearFocus();
+ QTLWExtra *oldTopExtra = window()->d_func()->maybeTopData();
+ QWidgetBackingStoreTracker *oldBsTracker = oldTopExtra ? &oldTopExtra->backingStore : 0;
+
d->setParent_sys(parent, f);
+
+ QTLWExtra *topExtra = window()->d_func()->maybeTopData();
+ QWidgetBackingStoreTracker *bsTracker = topExtra ? &topExtra->backingStore : 0;
+ if (oldBsTracker && oldBsTracker != bsTracker)
+ oldBsTracker->unregisterWidgetSubtree(this);
+
if (desktopWidget)
parent = 0;
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index fecab924a5..4b35238527 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -125,6 +125,7 @@ public:
void registerWidget(QWidget *w);
void unregisterWidget(QWidget *w);
+ void unregisterWidgetSubtree(QWidget *w);
inline QWidgetBackingStore* data()
{
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 9ceb197aa7..636b306e8b 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -713,7 +713,8 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f)
// old_winid may not have received a 'not visible' visibility
// changed event before being destroyed; make sure that it is
// removed from the backing store's list of visible windows.
- S60->controlVisibilityChanged(old_winid, false);
+ if (old_winid)
+ S60->controlVisibilityChanged(old_winid, false);
setWinId(0);
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp
index 39ed7500f1..c358b9beb4 100644
--- a/src/gui/kernel/qwidget_win.cpp
+++ b/src/gui/kernel/qwidget_win.cpp
@@ -329,18 +329,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (topLevel) {
if ((type == Qt::Window || dialog || tool)) {
if (!(flags & Qt::FramelessWindowHint)) {
- if (!(flags & Qt::MSWindowsFixedSizeDialogHint)) {
+ style |= WS_POPUP;
+ if (!(flags & Qt::MSWindowsFixedSizeDialogHint))
style |= WS_THICKFRAME;
- if(!(flags &
- ( Qt::WindowSystemMenuHint
- | Qt::WindowTitleHint
- | Qt::WindowMinMaxButtonsHint
- | Qt::WindowCloseButtonHint
- | Qt::WindowContextHelpButtonHint)))
- style |= WS_POPUP;
- } else {
- style |= WS_POPUP | WS_DLGFRAME;
- }
+ else
+ style |= WS_DLGFRAME;
}
if (flags & Qt::WindowTitleHint)
style |= WS_CAPTION;
@@ -424,6 +417,14 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (!q->testAttribute(Qt::WA_Resized)) {
w = sw/2;
h = 4*sh/10;
+ if (extra) {
+ int dx = rect.right - rect.left;
+ int dy = rect.bottom - rect.top;
+ w = qMin(w, extra->maxw + dx);
+ h = qMin(h, extra->maxh + dy);
+ w = qMax(w, extra->minw + dx);
+ h = qMax(h, extra->minh + dy);
+ }
}
if (!wasMoved) {
x = sw/2 - w/2;
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index dc7b80825c..df1210fc34 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -469,7 +469,7 @@ QRegion QWidgetBackingStore::dirtyRegion(QWidget *widget) const
/*!
Returns the static content inside the \a parent if non-zero; otherwise the static content
- for the entire backing store is returned. The content will be clipped to \a withingClipRect
+ for the entire backing store is returned. The content will be clipped to \a withinClipRect
if non-empty.
*/
QRegion QWidgetBackingStore::staticContents(QWidget *parent, const QRect &withinClipRect) const
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index d0788c70dc..5b35fc5da3 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -635,6 +635,15 @@ QBrush &QBrush::operator=(const QBrush &b)
return *this;
}
+
+/*!
+ \fn void QBrush::swap(QBrush &other)
+ \since 4.8
+
+ Swaps brush \a other with this brush. This operation is very
+ fast and never fails.
+*/
+
/*!
Returns the brush as a QVariant
*/
diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h
index efc720b12f..f9acdedb9a 100644
--- a/src/gui/painting/qbrush.h
+++ b/src/gui/painting/qbrush.h
@@ -96,6 +96,8 @@ public:
inline QBrush &operator=(QBrush &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QBrush &other) { qSwap(d, other.d); }
+
operator QVariant() const;
inline Qt::BrushStyle style() const;
diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c
index ec9ebeb71f..536f265f14 100644
--- a/src/gui/painting/qgrayraster.c
+++ b/src/gui/painting/qgrayraster.c
@@ -408,25 +408,31 @@
/* */
/* Record the current cell in the table. */
/* */
- static PCell
- gray_find_cell( RAS_ARG )
+ static void
+ gray_record_cell( RAS_ARG )
{
PCell *pcell, cell;
int x = ras.ex;
+ if ( ras.invalid || !( ras.area | ras.cover ) )
+ return;
if ( x > ras.max_ex )
x = ras.max_ex;
pcell = &ras.ycells[ras.ey];
+
for (;;)
{
cell = *pcell;
if ( cell == NULL || cell->x > x )
break;
- if ( cell->x == x )
- goto Exit;
+ if ( cell->x == x ) {
+ cell->area += ras.area;
+ cell->cover += ras.cover;
+ return;
+ }
pcell = &cell->next;
}
@@ -436,28 +442,11 @@
cell = ras.cells + ras.num_cells++;
cell->x = x;
- cell->area = 0;
- cell->cover = 0;
+ cell->area = ras.area;
+ cell->cover = ras.cover;
cell->next = *pcell;
*pcell = cell;
-
- Exit:
- return cell;
- }
-
-
- static void
- gray_record_cell( RAS_ARG )
- {
- if ( !ras.invalid && ( ras.area | ras.cover ) )
- {
- PCell cell = gray_find_cell( RAS_VAR );
-
-
- cell->area += ras.area;
- cell->cover += ras.cover;
- }
}
diff --git a/src/gui/painting/qgrayraster_p.h b/src/gui/painting/qgrayraster_p.h
index ad595b864a..d610a9a0db 100644
--- a/src/gui/painting/qgrayraster_p.h
+++ b/src/gui/painting/qgrayraster_p.h
@@ -91,7 +91,7 @@
/* Minimum buffer size for raster object, that accounts
for TWorker and TCell sizes.*/
-#define MINIMUM_POOL_SIZE 4096
+#define MINIMUM_POOL_SIZE 8192
QT_FT_EXPORT_VAR( const QT_FT_Raster_Funcs ) qt_ft_grays_raster;
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 1690e67be5..97dfddf9ca 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include <QtCore/qglobal.h>
+#include <QtCore/qmutex.h>
#define QT_FT_BEGIN_HEADER
#define QT_FT_END_HEADER
@@ -873,9 +874,10 @@ void QRasterPaintEngine::updateState()
if (s->dirty & DirtyTransform)
updateMatrix(s->matrix);
- if (s->dirty & (DirtyPen|DirtyCompositionMode)) {
+ if (s->dirty & (DirtyPen|DirtyCompositionMode|DirtyOpacity)) {
const QPainter::CompositionMode mode = s->composition_mode;
s->flags.fast_text = (s->penData.type == QSpanData::Solid)
+ && s->intOpacity == 256
&& (mode == QPainter::CompositionMode_Source
|| (mode == QPainter::CompositionMode_SourceOver
&& qAlpha(s->penData.solid.color) == 255));
@@ -899,6 +901,7 @@ void QRasterPaintEngine::opacityChanged()
s->fillFlags |= DirtyOpacity;
s->strokeFlags |= DirtyOpacity;
s->pixmapFlags |= DirtyOpacity;
+ s->dirty |= DirtyOpacity;
s->intOpacity = (int) (s->opacity * 256);
}
@@ -2482,7 +2485,7 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img)
const QClipData *clip = d->clip();
QPointF pt(p.x() + s->matrix.dx(), p.y() + s->matrix.dy());
- if (s->flags.fast_images) {
+ if (d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()];
if (func) {
if (!clip) {
@@ -2663,7 +2666,7 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
bool exceedsPrecision = targetBounds.width() > 0xffff
|| targetBounds.height() > 0xffff;
- if (s->flags.fast_images && !exceedsPrecision) {
+ if (!exceedsPrecision && d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
if (s->matrix.type() > QTransform::TxScale) {
SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()];
if (func && (!clip || clip->hasRectClip)) {
@@ -2735,8 +2738,7 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
fillPath(path, &d->image_filler_xform);
s->matrix = m;
} else {
-
- if (s->flags.fast_images) {
+ if (d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()];
if (func) {
QPointF pt(r.x() + s->matrix.dx(), r.y() + s->matrix.dy());
@@ -3291,7 +3293,7 @@ void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
ensureState();
drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->glyphPositions,
- textItem->fontEngine);
+ textItem->fontEngine());
}
/*!
@@ -4290,11 +4292,19 @@ void QRasterPaintEnginePrivate::recalculateFastImages()
QRasterPaintEngineState *s = q->state();
s->flags.fast_images = !(s->renderHints & QPainter::SmoothPixmapTransform)
- && rasterBuffer->compositionMode == QPainter::CompositionMode_SourceOver
&& s->matrix.type() <= QTransform::TxShear;
}
+bool QRasterPaintEnginePrivate::canUseFastImageBlending(QPainter::CompositionMode mode, const QImage &image) const
+{
+ Q_Q(const QRasterPaintEngine);
+ const QRasterPaintEngineState *s = q->state();
+ return s->flags.fast_images
+ && (mode == QPainter::CompositionMode_SourceOver
+ || (mode == QPainter::CompositionMode_Source
+ && !image.hasAlphaChannel()));
+}
QImage QRasterBuffer::colorizeBitmap(const QImage &image, const QColor &color)
{
@@ -4621,38 +4631,40 @@ void QClipData::fixup()
return;
}
-// qDebug("QClipData::fixup: count=%d",count);
int y = -1;
ymin = m_spans[0].y;
ymax = m_spans[count-1].y + 1;
xmin = INT_MAX;
xmax = 0;
+ const int firstLeft = m_spans[0].x;
+ const int firstRight = m_spans[0].x + m_spans[0].len;
bool isRect = true;
- int left = m_spans[0].x;
- int right = m_spans[0].x + m_spans[0].len;
for (int i = 0; i < count; ++i) {
- if (m_spans[i].y != y) {
- if (m_spans[i].y != y + 1 && y != -1) {
+ QT_FT_Span_& span = m_spans[i];
+
+ if (span.y != y) {
+ if (span.y != y + 1 && y != -1)
isRect = false;
- }
- y = m_spans[i].y;
- m_clipLines[y].spans = m_spans+i;
- m_clipLines[y].count = 0;
-// qDebug() << " new line: y=" << y;
- }
- ++m_clipLines[y].count;
- int sl = (int) m_spans[i].x;
- int sr = sl + m_spans[i].len;
+ y = span.y;
+ m_clipLines[y].spans = &span;
+ m_clipLines[y].count = 1;
+ } else
+ ++m_clipLines[y].count;
+
+ const int spanLeft = span.x;
+ const int spanRight = spanLeft + span.len;
+
+ if (spanLeft < xmin)
+ xmin = spanLeft;
- xmin = qMin(xmin, (int)m_spans[i].x);
- xmax = qMax(xmax, (int)m_spans[i].x + m_spans[i].len);
+ if (spanRight > xmax)
+ xmax = spanRight;
- if (sl != left || sr != right)
+ if (spanLeft != firstLeft || spanRight != firstRight)
isRect = false;
}
-// qDebug("xmin=%d,xmax=%d,ymin=%d,ymax=%d %s", xmin, xmax, ymin, ymax, isRect ? "rectangular" : "");
if (isRect) {
hasRectClip = true;
@@ -4963,6 +4975,7 @@ public:
for (int i = 0; i < stops.size() && i <= 2; i++)
hash_val += stops[i].second.rgba();
+ QMutexLocker lock(&mutex);
QGradientColorTableHash::const_iterator it = cache.constFind(hash_val);
if (it == cache.constEnd())
@@ -4996,6 +5009,7 @@ protected:
}
QGradientColorTableHash cache;
+ QMutex mutex;
};
void QGradientCache::generateGradientColorTable(const QGradient& gradient, uint *colorTable, int size, int opacity) const
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index fd635e6c62..404528c712 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -340,6 +340,7 @@ public:
void initializeRasterizer(QSpanData *data);
void recalculateFastImages();
+ bool canUseFastImageBlending(QPainter::CompositionMode mode, const QImage &image) const;
QPaintDevice *device;
QScopedPointer<QOutlineMapper> outlineMapper;
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index b0ca6ed4c1..546861afba 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5857,7 +5857,7 @@ void QPainterPrivate::drawGlyphs(quint32 *glyphArray, QFixedPoint *positions, in
QStaticTextItem staticTextItem;
staticTextItem.color = state->pen.color();
staticTextItem.font = state->font;
- staticTextItem.fontEngine = fontEngine;
+ staticTextItem.setFontEngine(fontEngine);
staticTextItem.numGlyphs = glyphCount;
staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray));
staticTextItem.glyphPositions = positions;
@@ -6064,7 +6064,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
d->extended->drawStaticTextItem(item);
drawDecorationForGlyphs(this, item->glyphs, item->glyphPositions,
- item->numGlyphs, item->fontEngine, staticText_d->font,
+ item->numGlyphs, item->fontEngine(), staticText_d->font,
QTextCharFormat());
}
if (currentColor != oldPen.color())
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index ffd0d5ce86..7d6ea12532 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -576,6 +576,14 @@ QPainterPath &QPainterPath::operator=(const QPainterPath &other)
}
/*!
+ \fn void QPainterPath::swap(QPainterPath &other)
+ \since 4.8
+
+ Swaps painter path \a other with this painter path. This operation is very
+ fast and never fails.
+*/
+
+/*!
Destroys this QPainterPath object.
*/
QPainterPath::~QPainterPath()
diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h
index 9a7b60a3b2..82facf88d6 100644
--- a/src/gui/painting/qpainterpath.h
+++ b/src/gui/painting/qpainterpath.h
@@ -100,6 +100,7 @@ public:
{ qSwap(d_ptr, other.d_ptr); return *this; }
#endif
~QPainterPath();
+ inline void swap(QPainterPath &other) { d_ptr.swap(other.d_ptr); }
void closeSubpath();
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index 2e43984a4f..01377639bb 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -383,6 +383,14 @@ QPen &QPen::operator=(const QPen &p)
}
/*!
+ \fn void QPen::swap(QPen &other)
+ \since 4.8
+
+ Swaps pen \a other with this pen. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the pen as a QVariant.
*/
QPen::operator QVariant() const
diff --git a/src/gui/painting/qpen.h b/src/gui/painting/qpen.h
index 4006112dd7..a7b946c769 100644
--- a/src/gui/painting/qpen.h
+++ b/src/gui/painting/qpen.h
@@ -78,6 +78,7 @@ public:
inline QPen &operator=(QPen &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QPen &other) { qSwap(d, other.d); }
Qt::PenStyle style() const;
void setStyle(Qt::PenStyle);
diff --git a/src/gui/painting/qpolygon.cpp b/src/gui/painting/qpolygon.cpp
index 2fb52b5ef5..83323d0ae8 100644
--- a/src/gui/painting/qpolygon.cpp
+++ b/src/gui/painting/qpolygon.cpp
@@ -700,6 +700,22 @@ QPolygon QPolygonF::toPolygon() const
}
/*!
+ \fn void QPolygon::swap(QPolygon &other)
+ \since 4.8
+
+ Swaps polygon \a other with this polygon. This operation is very
+ fast and never fails.
+*/
+
+/*!
+ \fn void QPolygonF::swap(QPolygonF &other)
+ \since 4.8
+
+ Swaps polygon \a other with this polygon. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the polygon as a QVariant
*/
QPolygon::operator QVariant() const
diff --git a/src/gui/painting/qpolygon.h b/src/gui/painting/qpolygon.h
index 7a49e2950a..5baffc8fc5 100644
--- a/src/gui/painting/qpolygon.h
+++ b/src/gui/painting/qpolygon.h
@@ -67,6 +67,8 @@ public:
inline QPolygon(const QVector<QPoint> &v) : QVector<QPoint>(v) {}
QPolygon(const QRect &r, bool closed=false);
QPolygon(int nPoints, const int *points);
+ inline void swap(QPolygon &other) { QVector<QPoint>::swap(other); } // prevent QVector<QPoint><->QPolygon swaps
+
operator QVariant() const;
void translate(int dx, int dy);
@@ -139,6 +141,7 @@ public:
inline QPolygonF(const QVector<QPointF> &v) : QVector<QPointF>(v) {}
QPolygonF(const QRectF &r);
QPolygonF(const QPolygon &a);
+ inline void swap(QPolygonF &other) { QVector<QPointF>::swap(other); } // prevent QVector<QPointF><->QPolygonF swaps
inline void translate(qreal dx, qreal dy);
void translate(const QPointF &offset);
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index c5d5dc931c..cd997f4ead 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -391,6 +391,14 @@ void QRegion::exec(const QByteArray &buffer, int ver, QDataStream::ByteOrder byt
*/
/*!
+ \fn void QRegion::swap(QRegion &other)
+ \since 4.8
+
+ Swaps region \a other with this region. This operation is very
+ fast and never fails.
+*/
+
+/*!
\relates QRegion
Writes the region \a r to the stream \a s and returns a reference
diff --git a/src/gui/painting/qregion.h b/src/gui/painting/qregion.h
index 91d82e098a..50052b3112 100644
--- a/src/gui/painting/qregion.h
+++ b/src/gui/painting/qregion.h
@@ -85,6 +85,7 @@ public:
inline QRegion &operator=(QRegion &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QRegion &other) { qSwap(d, other.d); }
#ifdef QT3_SUPPORT
inline QT3_SUPPORT bool isNull() const { return isEmpty(); }
#endif
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 78c1019567..4a6c03f09f 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -312,7 +312,7 @@ QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform);
else
- return m_current_fontengine->alphaMapForGlyph(g, m_transform);
+ return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform);
return QImage();
}
diff --git a/src/gui/painting/qunifiedtoolbarsurface_mac.cpp b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp
index ab05dbdc09..b25757b739 100644
--- a/src/gui/painting/qunifiedtoolbarsurface_mac.cpp
+++ b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp
@@ -42,6 +42,7 @@
#include "qunifiedtoolbarsurface_mac_p.h"
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qbackingstore_p.h>
+#include <private/qmainwindowlayout_p.h>
#include <QDebug>
@@ -75,9 +76,14 @@ void QUnifiedToolbarSurface::recursiveRedirect(QObject *object, const QPoint &of
if (object != 0) {
if (object->isWidgetType()) {
QWidget *widget = qobject_cast<QWidget *>(object);
- widget->d_func()->unifiedSurface = this;
- widget->d_func()->isInUnifiedToolbar = true;
- widget->d_func()->toolbar_offset = offset;
+
+ // We redirect the painting only if the widget is in the same window
+ // and is not a window in itself.
+ if (!(widget->windowType() & Qt::Window)) {
+ widget->d_func()->unifiedSurface = this;
+ widget->d_func()->isInUnifiedToolbar = true;
+ widget->d_func()->toolbar_offset = offset;
+ }
}
for (int i = 0; i < object->children().size(); ++i) {
@@ -90,7 +96,6 @@ void QUnifiedToolbarSurface::insertToolbar(QWidget *toolbar, const QPoint &offse
{
setGeometry(QRect(QPoint(0, 0), QSize(offset.x() + toolbar->width(), 100))); // FIXME
recursiveRedirect(toolbar, offset);
-// toolbar->d_func()->toolbar_offset = offset;
}
void QUnifiedToolbarSurface::setGeometry(const QRect &rect)
@@ -101,6 +106,8 @@ void QUnifiedToolbarSurface::setGeometry(const QRect &rect)
if (d->image == 0 || d->image->width() < rect.width() || d->image->height() < rect.height())
prepareBuffer(QImage::Format_ARGB32_Premultiplied, window());
d->inSetGeometry = false;
+
+ // FIXME: set unified toolbar height.
}
void QUnifiedToolbarSurface::beginPaint(const QRegion &rgn)
@@ -114,10 +121,18 @@ void QUnifiedToolbarSurface::beginPaint(const QRegion &rgn)
}
}
+void QUnifiedToolbarSurface::updateToolbarOffset(QWidget *widget)
+{
+ QMainWindowLayout *mlayout = qobject_cast<QMainWindowLayout*> (widget->window()->layout());
+ mlayout->updateUnifiedToolbarOffset();
+}
+
void QUnifiedToolbarSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &offset)
{
Q_D(QUnifiedToolbarSurface);
+ QRegion flushingRegion(widget->rect());
+
if (!d->image || rgn.rectCount() == 0) {
return;
}
@@ -132,24 +147,29 @@ void QUnifiedToolbarSurface::flush(QWidget *widget, const QRegion &rgn, const QP
qt_mac_display(widget);
return;
} else {
+ // We render the content of the toolbar in the surface.
+ updateToolbarOffset(widget);
+ QRect beginPaintRect(widget->d_func()->toolbar_offset.x(), widget->d_func()->toolbar_offset.y(), widget->geometry().width(), widget->geometry().height());
+ QRegion beginPaintRegion(beginPaintRect);
+
context = widget->d_func()->cgContext;
+ beginPaint(beginPaintRegion);
widget->render(widget->d_func()->unifiedSurface->paintDevice(), widget->d_func()->toolbar_offset, QRegion(), QWidget::DrawChildren);
}
CGContextSaveGState(context);
- int areaX = widget->geometry().x() + widget->d_func()->toolbar_offset.x();
- int areaY = widget->geometry().y() + widget->d_func()->toolbar_offset.y();
+ int areaX = widget->d_func()->toolbar_offset.x();
+ int areaY = widget->d_func()->toolbar_offset.y();
int areaWidth = widget->geometry().width();
int areaHeight = widget->geometry().height();
const CGRect area = CGRectMake(areaX, areaY, areaWidth, areaHeight);
// Clip to region.
- const QVector<QRect> &rects = rgn.rects();
+ const QVector<QRect> &rects = flushingRegion.rects();
for (int i = 0; i < rects.size(); ++i) {
const QRect &rect = rects.at(i);
- // CGContextAddRect(context, CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()));
- CGContextAddRect(context, CGRectMake(0, 0, 1000, 1000)); //FIXME: Set correct size.
+ CGContextAddRect(context, CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()));
}
CGContextAddRect(context, area);
CGContextClip(context);
diff --git a/src/gui/painting/qunifiedtoolbarsurface_mac_p.h b/src/gui/painting/qunifiedtoolbarsurface_mac_p.h
index 4d72ff9f54..3bc040464e 100644
--- a/src/gui/painting/qunifiedtoolbarsurface_mac_p.h
+++ b/src/gui/painting/qunifiedtoolbarsurface_mac_p.h
@@ -85,6 +85,7 @@ public:
private:
QPaintDevice *paintDevice();
+ void updateToolbarOffset(QWidget *widget);
void prepareBuffer(QImage::Format format, QWidget *widget);
void recursiveRedirect(QObject *widget, const QPoint &offset);
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
index 217723f0c8..ae73d7d631 100644
--- a/src/gui/painting/qwindowsurface_raster.cpp
+++ b/src/gui/painting/qwindowsurface_raster.cpp
@@ -251,6 +251,11 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
#ifdef Q_WS_MAC
+ // This is mainly done for native components like native "open file" dialog.
+ if (widget->testAttribute(Qt::WA_DontShowOnScreen)) {
+ return;
+ }
+
#ifdef QT_MAC_USE_COCOA
// Unified toolbar hack.
QMainWindow* mWindow = qobject_cast<QMainWindow*>(widget->window());
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 5ebaf4cc6c..087907fdd9 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -405,13 +405,14 @@ void QS60StylePrivate::clearCaches(CacheClearReason reason)
QPixmapCache::clear();
break;
case CC_ThemeChange:
- m_colorCache.clear();
QPixmapCache::clear();
+#ifdef Q_WS_S60
+ deleteStoredSettings();
+#endif
deleteBackground();
break;
case CC_UndefinedChange:
default:
- m_colorCache.clear();
m_mappedFontsCache.clear();
QPixmapCache::clear();
deleteBackground();
@@ -419,64 +420,53 @@ void QS60StylePrivate::clearCaches(CacheClearReason reason)
}
}
-// Since S60Style has 'button' and 'tooltip' as a graphic, we don't have any native color which to use
-// for QPalette::Button and QPalette::ToolTipBase. Therefore S60Style needs to guesstimate
-// palette colors by calculating average rgb values for button pixels.
-// Returns Qt::black if there is an issue with the graphics (image is NULL, or no bits() found).
-QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
+QColor QS60StylePrivate::calculatedColor(SkinFrameElements frame) const
{
- const bool cachedColorExists = m_colorCache.contains(frame);
- if (!cachedColorExists) {
- const int frameCornerWidth = pixelMetric(PM_FrameCornerWidth);
- const int frameCornerHeight = pixelMetric(PM_FrameCornerHeight);
- Q_ASSERT(2 * frameCornerWidth < 32);
- Q_ASSERT(2 * frameCornerHeight < 32);
-
- const QImage frameImage = QS60StylePrivate::frame(frame, QSize(32, 32)).toImage();
- Q_ASSERT(frameImage.bytesPerLine() > 0);
- if (frameImage.isNull())
- return Qt::black;
-
- const QRgb *pixelRgb = (const QRgb*)frameImage.bits();
- const int pixels = frameImage.byteCount()/sizeof(QRgb);
-
- int estimatedRed = 0;
- int estimatedGreen = 0;
- int estimatedBlue = 0;
-
- int skips = 0;
- int estimations = 0;
-
- const int topBorderLastPixel = frameCornerHeight*frameImage.width() - 1;
- const int bottomBorderFirstPixel = frameImage.width() * frameImage.height() - frameCornerHeight*frameImage.width() - 1;
- const int rightBorderFirstPixel = frameImage.width() - frameCornerWidth;
- const int leftBorderLastPixel = frameCornerWidth;
-
- while ((skips + estimations) < pixels) {
- if ((skips + estimations) > topBorderLastPixel &&
- (skips + estimations) < bottomBorderFirstPixel) {
- for (int rowIndex = 0; rowIndex < frameImage.width(); rowIndex++) {
- if (rowIndex > leftBorderLastPixel &&
- rowIndex < rightBorderFirstPixel) {
- estimatedRed += qRed(*pixelRgb);
- estimatedGreen += qGreen(*pixelRgb);
- estimatedBlue += qBlue(*pixelRgb);
- }
- pixelRgb++;
- estimations++;
+ const int frameCornerWidth = pixelMetric(PM_FrameCornerWidth);
+ const int frameCornerHeight = pixelMetric(PM_FrameCornerHeight);
+ Q_ASSERT(2 * frameCornerWidth < 32);
+ Q_ASSERT(2 * frameCornerHeight < 32);
+
+ const QImage frameImage = QS60StylePrivate::frame(frame, QSize(32, 32)).toImage();
+ Q_ASSERT(frameImage.bytesPerLine() > 0);
+ if (frameImage.isNull())
+ return Qt::black;
+
+ const QRgb *pixelRgb = (const QRgb*)frameImage.constBits();
+ const int pixels = frameImage.byteCount() / sizeof(QRgb);
+
+ int estimatedRed = 0;
+ int estimatedGreen = 0;
+ int estimatedBlue = 0;
+
+ int skips = 0;
+ int estimations = 0;
+
+ const int topBorderLastPixel = frameCornerHeight * frameImage.width() - 1;
+ const int bottomBorderFirstPixel = frameImage.width() * frameImage.height() - topBorderLastPixel;
+ const int rightBorderFirstPixel = frameImage.width() - frameCornerWidth;
+ const int leftBorderLastPixel = frameCornerWidth;
+
+ while ((skips + estimations) < pixels) {
+ if ((skips + estimations) > topBorderLastPixel &&
+ (skips + estimations) < bottomBorderFirstPixel) {
+ for (int rowIndex = 0; rowIndex < frameImage.width(); rowIndex++) {
+ if (rowIndex > leftBorderLastPixel &&
+ rowIndex < rightBorderFirstPixel) {
+ estimatedRed += qRed(*pixelRgb);
+ estimatedGreen += qGreen(*pixelRgb);
+ estimatedBlue += qBlue(*pixelRgb);
}
- } else {
pixelRgb++;
- skips++;
+ estimations++;
}
+ } else {
+ pixelRgb++;
+ skips++;
}
- QColor frameColor(estimatedRed/estimations, estimatedGreen/estimations, estimatedBlue/estimations);
- m_colorCache.insert(frame, frameColor);
- return !estimations ? Qt::black : frameColor;
- } else {
- return m_colorCache.value(frame);
}
-
+ QColor frameColor(estimatedRed/estimations, estimatedGreen/estimations, estimatedBlue/estimations);
+ return !estimations ? Qt::black : frameColor;
}
void QS60StylePrivate::setThemePalette(QApplication *app) const
@@ -731,11 +721,14 @@ void QS60StylePrivate::setThemePalette(QPalette *palette) const
palette->setBrush(QPalette::Window, backgroundTexture());
// set as transparent so that styled full screen theme background is visible
palette->setBrush(QPalette::Base, Qt::transparent);
- // set button and tooltipbase based on pixel colors
+ // set button color based on pixel colors
+#ifndef Q_WS_S60
+ //For emulated style, just calculate the color every time
+ const QColor buttonColor = calculatedColor(SF_ButtonNormal);
+#else
const QColor buttonColor = colorFromFrameGraphics(SF_ButtonNormal);
+#endif
palette->setColor(QPalette::Button, buttonColor);
- const QColor toolTipColor = colorFromFrameGraphics(SF_ToolTip);
- palette->setColor(QPalette::ToolTipBase, toolTipColor);
palette->setColor(QPalette::Light, palette->color(QPalette::Button).lighter());
palette->setColor(QPalette::Dark, palette->color(QPalette::Button).darker());
palette->setColor(QPalette::Midlight, palette->color(QPalette::Button).lighter(125));
@@ -2521,9 +2514,9 @@ int QS60Style::pixelMetric(PixelMetric metric, const QStyleOption *option, const
metricValue = QS60StylePrivate::pixelMetric(PM_LayoutLeftMargin);
}
- if (widget && (metric == PM_LayoutTopMargin))
+ if (widget && (metric == PM_LayoutTopMargin || metric == PM_LayoutLeftMargin || metric == PM_LayoutRightMargin))
if (widget->windowType() == Qt::Dialog)
- //double the top layout margin for dialogs, it is very close to real value
+ //double the layout margins (except bottom) for dialogs, it is very close to real value
//without having to define custom pixel metric
metricValue *= 2;
@@ -3424,8 +3417,11 @@ bool QS60Style::eventFilter(QObject *object, QEvent *event)
qobject_cast<QCheckBox *>(w))
d->m_pressedWidget = w;
- if ( d->m_pressedWidget)
+ if (d->m_pressedWidget)
d->m_pressedWidget->update();
+#ifdef Q_WS_S60
+ d->touchFeedback(event, w);
+#endif
}
break;
}
diff --git a/src/gui/styles/qs60style_feedbackinterface_p.h b/src/gui/styles/qs60style_feedbackinterface_p.h
new file mode 100644
index 0000000000..81fcdc357c
--- /dev/null
+++ b/src/gui/styles/qs60style_feedbackinterface_p.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+
+class TactileFeedbackInterface : public QObject
+{
+ public:
+ virtual void touchFeedback(QEvent *event, const QWidget *widget) = 0;
+};
+
+Q_DECLARE_INTERFACE(TactileFeedbackInterface, "com.trolltech.Qt.TactileFeedbackInterface/1.0")
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index b3f416018b..db4285deac 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -387,6 +387,7 @@ private: //data members
class QFocusFrame;
class QProgressBar;
class QS60StyleAnimation;
+class TactileFeedbackInterface;
// Private class
#ifdef Q_OS_SYMBIAN
@@ -522,8 +523,12 @@ public:
static bool isSingleClickUi();
static bool isWidgetPressed(const QWidget *widget);
- // calculates average color based on button skin graphics (minus borders).
+#ifdef Q_WS_S60
+ static void deleteStoredSettings();
+ // calculates average color based on theme graphics (minus borders).
QColor colorFromFrameGraphics(SkinFrameElements frame) const;
+#endif
+ QColor calculatedColor(SkinFrameElements frame) const;
//set theme palette for application
void setThemePalette(QApplication *application) const;
@@ -541,7 +546,6 @@ public:
static const int m_numberOfLayouts;
mutable QHash<QPair<QS60StyleEnums::FontCategories , int>, QFont> m_mappedFontsCache;
- mutable QHash<SkinFrameElements, QColor> m_colorCache;
// Has one entry per SkinFrameElements
static const struct frameElementCenter {
@@ -572,6 +576,8 @@ public:
void stopAnimation(QS60StyleEnums::SkinParts animation);
static QS60StyleAnimation* animationDefinition(QS60StyleEnums::SkinParts part);
static void removeAnimations();
+ //No support for tactile feedback in emulated style
+ void touchFeedback(QEvent *event, const QWidget *widget);
#endif
@@ -626,6 +632,7 @@ private:
#ifdef Q_WS_S60
//list of progress bars having animation running
QList<QProgressBar *> m_bars;
+ TactileFeedbackInterface *m_feedbackPlugin;
#endif
};
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 5dda42e74a..7b75d40e5e 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -48,6 +48,11 @@
#include "private/qpixmap_s60_p.h"
#include "private/qcore_symbian_p.h"
#include "qapplication.h"
+#include "qsettings.h"
+
+#include "qpluginloader.h"
+#include "qlibraryinfo.h"
+#include "private/qs60style_feedbackinterface_p.h"
#include <w32std.h>
#include <AknsConstants.h>
@@ -65,6 +70,8 @@
#include <gulicon.h>
#include <AknBitmapAnimation.h>
+#include <centralrepository.h>
+
#if !defined(QT_NO_STYLE_S60) || defined(QT_PLUGIN)
QT_BEGIN_NAMESPACE
@@ -77,6 +84,8 @@ enum TDrawType {
ENoDraw
};
+const TUid personalisationUID = { 0x101F876F };
+
enum TSupportRelease {
ES60_None = 0x0000, //indicates that the commonstyle should draw the graphics
ES60_3_1 = 0x0001,
@@ -685,6 +694,76 @@ bool QS60StylePrivate::isSingleClickUi()
return (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0);
}
+void QS60StylePrivate::deleteStoredSettings()
+{
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ settings.remove("");
+ settings.endGroup();
+}
+
+// Since S60Style has 'button' as a graphic, we don't have any native color which to use
+// for QPalette::Button. Therefore S60Style needs to guesstimate palette color by calculating
+// average rgb values for button pixels.
+// Returns Qt::black if there is an issue with the graphics (image is NULL, or no constBits() found).
+QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
+{
+#ifndef QT_NO_SETTINGS
+ TInt themeID = 0;
+ //First we need to fetch active theme ID. We need to store the themeID at the same time
+ //as color, so that we can later check if the stored color is still from the same theme.
+ //Native side stores active theme UID/Timestamp into central repository.
+ int error = 0;
+ QT_TRAP_THROWING(
+ CRepository *themeRepository = CRepository::NewLC(personalisationUID);
+ if (themeRepository) {
+ static const TInt KThemePkgIDDesSize = 23; //size of the stored theme package ID
+ TBuf<32> value; //themeID is currently max of 8 + 1 + 8 characters, but lets have some extra space
+ const TUint32 key = 0x00000002; //active theme key in the repository
+ error = themeRepository->Get(key, value);
+ if (error == KErrNone) {
+ TLex lex(value);
+ TPtrC numberToken(lex.NextToken());
+ if (numberToken.Length())
+ error = TLex(numberToken).Val(themeID);
+ else
+ error = KErrArgument;
+ }
+ }
+ CleanupStack::PopAndDestroy(themeRepository);
+ );
+
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ if (themeID != 0) {
+ QVariant buttonColor = settings.value(QLatin1String("ButtonColor"));
+ if (!buttonColor.isNull()) {
+ //there is a stored color value, lets see if the theme ID matches
+ if (error == KErrNone) {
+ QVariant themeUID = settings.value(QLatin1String("ThemeUID"));
+ if (!themeUID.isNull() && themeUID.toInt() == themeID) {
+ QColor storedColor(buttonColor.value<QColor>());
+ if (storedColor.isValid())
+ return storedColor;
+ }
+ }
+ settings.remove(""); //if color was invalid, or theme has been changed, just delete all stored settings
+ }
+ }
+#endif
+
+ QColor color = calculatedColor(frame);
+
+#ifndef QT_NO_SETTINGS
+ settings.setValue(QLatin1String("ThemeUID"), QVariant(themeID));
+ if (frame == SF_ButtonNormal) //other colors are not currently calculated from graphics
+ settings.setValue(QLatin1String("ButtonColor"), QVariant(color));
+ settings.endGroup();
+#endif
+
+ return color;
+}
+
QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
{
CCoeControl *control = targetWidget->effectiveWinId();
@@ -1143,13 +1222,25 @@ void QS60StylePrivate::setActiveLayout()
Q_GLOBAL_STATIC(QList<QS60StyleAnimation *>, m_animations)
-QS60StylePrivate::QS60StylePrivate()
+QS60StylePrivate::QS60StylePrivate() : m_feedbackPlugin(0)
{
//Animation defaults need to be created when style is instantiated
QS60StyleAnimation* progressBarAnimation = new QS60StyleAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim, 7, 100);
m_animations()->append(progressBarAnimation);
// No need to set active layout, if dynamic metrics API is available
setActiveLayout();
+
+ //Tactile feedback plugin is only available for touch devices.
+ if (isTouchSupported()) {
+ QString pluginsPath = QLibraryInfo::location(QLibraryInfo::PluginsPath);
+ pluginsPath += QLatin1String("/feedback/qtactilefeedback.dll");
+
+ // Create plugin loader
+ QPluginLoader pluginLoader(pluginsPath);
+ // Load plugin and store pointer to the plugin implementation
+ if (pluginLoader.load())
+ m_feedbackPlugin = qobject_cast<TactileFeedbackInterface*>(pluginLoader.instance());
+ }
}
void QS60StylePrivate::removeAnimations()
@@ -1439,6 +1530,12 @@ void QS60StylePrivate::stopAnimation(QS60StyleEnums::SkinParts animationPart)
}
}
+void QS60StylePrivate::touchFeedback(QEvent *event, const QWidget *widget)
+{
+ if (m_feedbackPlugin)
+ m_feedbackPlugin->touchFeedback(event, widget);
+}
+
QVariant QS60StyleModeSpecifics::themeDefinition(
QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part)
{
diff --git a/src/gui/styles/qstyle.cpp b/src/gui/styles/qstyle.cpp
index 0a75492b8c..3ebfab2a2e 100644
--- a/src/gui/styles/qstyle.cpp
+++ b/src/gui/styles/qstyle.cpp
@@ -367,10 +367,10 @@ QStyle::~QStyle()
Note that the default implementation does nothing. Reasonable
actions in this function might be to call the
QWidget::setBackgroundMode() function for the widget. Do not use
- the function to set, for example, the geometry; reimplementing
- this function do provide a back-door through which the appearance
- of a widget can be changed, but with Qt 4.0's style engine there
- is rarely necessary to implement this function; reimplement the
+ the function to set, for example, the geometry. Reimplementing
+ this function provides a back-door through which the appearance
+ of a widget can be changed, but with Qt's style engine it is
+ rarely necessary to implement this function; reimplement
drawItemPixmap(), drawItemText(), drawPrimitive(), etc. instead.
The QWidget::inherits() function may provide enough information to
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 4be439d6d0..fb6fc23200 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -99,14 +99,7 @@ public:
};
-static QHash<const QWidget *, QVector<StyleRule> > *styleRulesCache = 0;
-static QHash<const QWidget *, QHash<int, bool> > *hasStyleRuleCache = 0;
-typedef QHash<int, QHash<quint64, QRenderRule> > QRenderRules;
-static QHash<const QWidget *, QRenderRules> *renderRulesCache = 0;
-static QHash<const QWidget *, QPalette> *customPaletteWidgets = 0; // widgets whose palette we tampered
-static QHash<const void *, StyleSheet> *styleSheetCache = 0; // parsed style sheets
-static QSet<const QWidget *> *autoFillDisabledWidgets = 0;
-
+static QStyleSheetStyleCaches *styleSheetCaches = 0;
/* RECURSION_GUARD:
* the QStyleSheetStyle is a proxy. If used with others proxy style, we may end up with something like:
@@ -1525,8 +1518,8 @@ private:
QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
{
- QHash<const QWidget *, QVector<StyleRule> >::const_iterator cacheIt = styleRulesCache->constFind(w);
- if (cacheIt != styleRulesCache->constEnd())
+ QHash<const QWidget *, QVector<StyleRule> >::const_iterator cacheIt = styleSheetCaches->styleRulesCache.constFind(w);
+ if (cacheIt != styleSheetCaches->styleRulesCache.constEnd())
return cacheIt.value();
if (!initWidget(w)) {
@@ -1536,12 +1529,12 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
QStyleSheetStyleSelector styleSelector;
StyleSheet defaultSs;
- QHash<const void *, StyleSheet>::const_iterator defaultCacheIt = styleSheetCache->constFind(baseStyle());
- if (defaultCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator defaultCacheIt = styleSheetCaches->styleSheetCache.constFind(baseStyle());
+ if (defaultCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
defaultSs = getDefaultStyleSheet();
QStyle *bs = baseStyle();
- styleSheetCache->insert(bs, defaultSs);
- QObject::connect(bs, SIGNAL(destroyed(QObject*)), this, SLOT(styleDestroyed(QObject*)), Qt::UniqueConnection);
+ styleSheetCaches->styleSheetCache.insert(bs, defaultSs);
+ QObject::connect(bs, SIGNAL(destroyed(QObject*)), styleSheetCaches, SLOT(styleDestroyed(QObject*)), Qt::UniqueConnection);
} else {
defaultSs = defaultCacheIt.value();
}
@@ -1549,8 +1542,8 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
if (!qApp->styleSheet().isEmpty()) {
StyleSheet appSs;
- QHash<const void *, StyleSheet>::const_iterator appCacheIt = styleSheetCache->constFind(qApp);
- if (appCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator appCacheIt = styleSheetCaches->styleSheetCache.constFind(qApp);
+ if (appCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
QString ss = qApp->styleSheet();
if (ss.startsWith(QLatin1String("file:///")))
ss.remove(0, 8);
@@ -1559,7 +1552,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
qWarning("Could not parse application stylesheet");
appSs.origin = StyleSheetOrigin_Inline;
appSs.depth = 1;
- styleSheetCache->insert(qApp, appSs);
+ styleSheetCaches->styleSheetCache.insert(qApp, appSs);
} else {
appSs = appCacheIt.value();
}
@@ -1571,8 +1564,8 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
if (wid->styleSheet().isEmpty())
continue;
StyleSheet ss;
- QHash<const void *, StyleSheet>::const_iterator widCacheIt = styleSheetCache->constFind(wid);
- if (widCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator widCacheIt = styleSheetCaches->styleSheetCache.constFind(wid);
+ if (widCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
parser.init(wid->styleSheet());
if (!parser.parse(&ss)) {
parser.init(QLatin1String("* {") + wid->styleSheet() + QLatin1Char('}'));
@@ -1580,7 +1573,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
qWarning("Could not parse stylesheet of widget %p", wid);
}
ss.origin = StyleSheetOrigin_Inline;
- styleSheetCache->insert(wid, ss);
+ styleSheetCaches->styleSheetCache.insert(wid, ss);
} else {
ss = widCacheIt.value();
}
@@ -1595,7 +1588,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
StyleSelector::NodePtr n;
n.ptr = (void *)w;
QVector<QCss::StyleRule> rules = styleSelector.styleRulesForNode(n);
- styleRulesCache->insert(w, rules);
+ styleSheetCaches->styleRulesCache.insert(w, rules);
return rules;
}
@@ -1724,7 +1717,7 @@ static void qt_check_if_internal_widget(const QWidget **w, int *element)
QRenderRule QStyleSheetStyle::renderRule(const QWidget *w, int element, quint64 state) const
{
qt_check_if_internal_widget(&w, &element);
- QHash<quint64, QRenderRule> &cache = (*renderRulesCache)[w][element];
+ QHash<quint64, QRenderRule> &cache = styleSheetCaches->renderRulesCache[w][element];
QHash<quint64, QRenderRule>::const_iterator cacheIt = cache.constFind(state);
if (cacheIt != cache.constEnd())
return cacheIt.value();
@@ -2035,7 +2028,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QWidget *w, const QStyleOption *o
bool QStyleSheetStyle::hasStyleRule(const QWidget *w, int part) const
{
- QHash<int, bool> &cache = (*hasStyleRuleCache)[w];
+ QHash<int, bool> &cache = styleSheetCaches->hasStyleRuleCache[w];
QHash<int, bool>::const_iterator cacheIt = cache.constFind(part);
if (cacheIt != cache.constEnd())
return cacheIt.value();
@@ -2565,7 +2558,7 @@ void QStyleSheetStyle::setPalette(QWidget *w)
rule.configurePalette(&p, map[i].group, ew, ew != w);
}
- customPaletteWidgets->insert(w, w->palette());
+ styleSheetCaches->customPaletteWidgets.insert(w, w->palette());
w->setPalette(p);
if (ew != w)
ew->setPalette(p);
@@ -2573,32 +2566,32 @@ void QStyleSheetStyle::setPalette(QWidget *w)
void QStyleSheetStyle::unsetPalette(QWidget *w)
{
- if (customPaletteWidgets->contains(w)) {
- QPalette p = customPaletteWidgets->value(w);
+ if (styleSheetCaches->customPaletteWidgets.contains(w)) {
+ QPalette p = styleSheetCaches->customPaletteWidgets.value(w);
w->setPalette(p);
QWidget *ew = embeddedWidget(w);
if (ew != w)
ew->setPalette(p);
- customPaletteWidgets->remove(w);
+ styleSheetCaches->customPaletteWidgets.remove(w);
}
QVariant oldFont = w->property("_q_styleSheetWidgetFont");
if (oldFont.isValid()) {
w->setFont(qvariant_cast<QFont>(oldFont));
}
- if (autoFillDisabledWidgets->contains(w)) {
+ if (styleSheetCaches->autoFillDisabledWidgets.contains(w)) {
embeddedWidget(w)->setAutoFillBackground(true);
- autoFillDisabledWidgets->remove(w);
+ styleSheetCaches->autoFillDisabledWidgets.remove(w);
}
}
static void updateWidgets(const QList<const QWidget *>& widgets)
{
- if (!styleRulesCache->isEmpty() || !hasStyleRuleCache->isEmpty() || !renderRulesCache->isEmpty()) {
+ if (!styleSheetCaches->styleRulesCache.isEmpty() || !styleSheetCaches->hasStyleRuleCache.isEmpty() || !styleSheetCaches->renderRulesCache.isEmpty()) {
for (int i = 0; i < widgets.size(); ++i) {
const QWidget *widget = widgets.at(i);
- styleRulesCache->remove(widget);
- hasStyleRuleCache->remove(widget);
- renderRulesCache->remove(widget);
+ styleSheetCaches->styleRulesCache.remove(widget);
+ styleSheetCaches->hasStyleRuleCache.remove(widget);
+ styleSheetCaches->renderRulesCache.remove(widget);
}
}
for (int i = 0; i < widgets.size(); ++i) {
@@ -2622,12 +2615,7 @@ QStyleSheetStyle::QStyleSheetStyle(QStyle *base)
{
++numinstances;
if (numinstances == 1) {
- styleRulesCache = new QHash<const QWidget *, QVector<StyleRule> >;
- hasStyleRuleCache = new QHash<const QWidget *, QHash<int, bool> >;
- renderRulesCache = new QHash<const QWidget *, QRenderRules>;
- customPaletteWidgets = new QHash<const QWidget *, QPalette>;
- styleSheetCache = new QHash<const void *, StyleSheet>;
- autoFillDisabledWidgets = new QSet<const QWidget *>;
+ styleSheetCaches = new QStyleSheetStyleCaches;
}
}
@@ -2635,18 +2623,7 @@ QStyleSheetStyle::~QStyleSheetStyle()
{
--numinstances;
if (numinstances == 0) {
- delete styleRulesCache;
- styleRulesCache = 0;
- delete hasStyleRuleCache;
- hasStyleRuleCache = 0;
- delete renderRulesCache;
- renderRulesCache = 0;
- delete customPaletteWidgets;
- customPaletteWidgets = 0;
- delete styleSheetCache;
- styleSheetCache = 0;
- delete autoFillDisabledWidgets;
- autoFillDisabledWidgets = 0;
+ delete styleSheetCaches;
}
}
QStyle *QStyleSheetStyle::baseStyle() const
@@ -2658,19 +2635,19 @@ QStyle *QStyleSheetStyle::baseStyle() const
return QApplication::style();
}
-void QStyleSheetStyle::widgetDestroyed(QObject *o)
+void QStyleSheetStyleCaches::widgetDestroyed(QObject *o)
{
- styleRulesCache->remove((const QWidget *)o);
- hasStyleRuleCache->remove((const QWidget *)o);
- renderRulesCache->remove((const QWidget *)o);
- customPaletteWidgets->remove((const QWidget *)o);
- styleSheetCache->remove((const QWidget *)o);
- autoFillDisabledWidgets->remove((const QWidget *)o);
+ styleRulesCache.remove((const QWidget *)o);
+ hasStyleRuleCache.remove((const QWidget *)o);
+ renderRulesCache.remove((const QWidget *)o);
+ customPaletteWidgets.remove((const QWidget *)o);
+ styleSheetCache.remove((const QWidget *)o);
+ autoFillDisabledWidgets.remove((const QWidget *)o);
}
-void QStyleSheetStyle::styleDestroyed(QObject *o)
+void QStyleSheetStyleCaches::styleDestroyed(QObject *o)
{
- styleSheetCache->remove(o);
+ styleSheetCache.remove(o);
}
/*!
@@ -2688,7 +2665,7 @@ bool QStyleSheetStyle::initWidget(const QWidget *w) const
return false;
const_cast<QWidget *>(w)->setAttribute(Qt::WA_StyleSheet, true);
- QObject::connect(w, SIGNAL(destroyed(QObject*)), this, SLOT(widgetDestroyed(QObject*)));
+ QObject::connect(w, SIGNAL(destroyed(QObject*)), styleSheetCaches, SLOT(widgetDestroyed(QObject*)), Qt::UniqueConnection);
return true;
}
@@ -2700,12 +2677,12 @@ void QStyleSheetStyle::polish(QWidget *w)
if (!initWidget(w))
return;
- if (styleRulesCache->contains(w)) {
+ if (styleSheetCaches->styleRulesCache.contains(w)) {
// the widget accessed its style pointer before polish (or repolish)
// (exemple: the QAbstractSpinBox constructor ask for the stylehint)
- styleRulesCache->remove(w);
- hasStyleRuleCache->remove(w);
- renderRulesCache->remove(w);
+ styleSheetCaches->styleRulesCache.remove(w);
+ styleSheetCaches->hasStyleRuleCache.remove(w);
+ styleSheetCaches->renderRulesCache.remove(w);
}
setGeometry(w);
setProperties(w);
@@ -2771,7 +2748,7 @@ void QStyleSheetStyle::polish(QWidget *w)
QWidget *ew = embeddedWidget(w);
if (ew->autoFillBackground()) {
ew->setAutoFillBackground(false);
- autoFillDisabledWidgets->insert(w);
+ styleSheetCaches->autoFillDisabledWidgets.insert(w);
if (ew != w) { //eg. viewport of a scrollarea
//(in order to draw the background anyway in case we don't.)
ew->setAttribute(Qt::WA_StyledBackground, true);
@@ -2797,18 +2774,18 @@ void QStyleSheetStyle::repolish(QWidget *w)
{
QList<const QWidget *> children = w->findChildren<const QWidget *>(QString());
children.append(w);
- styleSheetCache->remove(w);
+ styleSheetCaches->styleSheetCache.remove(w);
updateWidgets(children);
}
void QStyleSheetStyle::repolish(QApplication *app)
{
Q_UNUSED(app);
- const QList<const QWidget*> allWidgets = styleRulesCache->keys();
- styleSheetCache->remove(qApp);
- styleRulesCache->clear();
- hasStyleRuleCache->clear();
- renderRulesCache->clear();
+ const QList<const QWidget*> allWidgets = styleSheetCaches->styleRulesCache.keys();
+ styleSheetCaches->styleSheetCache.remove(qApp);
+ styleSheetCaches->styleRulesCache.clear();
+ styleSheetCaches->hasStyleRuleCache.clear();
+ styleSheetCaches->renderRulesCache.clear();
updateWidgets(allWidgets);
}
@@ -2819,10 +2796,10 @@ void QStyleSheetStyle::unpolish(QWidget *w)
return;
}
- styleRulesCache->remove(w);
- hasStyleRuleCache->remove(w);
- renderRulesCache->remove(w);
- styleSheetCache->remove(w);
+ styleSheetCaches->styleRulesCache.remove(w);
+ styleSheetCaches->hasStyleRuleCache.remove(w);
+ styleSheetCaches->renderRulesCache.remove(w);
+ styleSheetCaches->styleSheetCache.remove(w);
unsetPalette(w);
w->setProperty("_q_stylesheet_minw", QVariant());
w->setProperty("_q_stylesheet_minh", QVariant());
@@ -2849,10 +2826,10 @@ void QStyleSheetStyle::unpolish(QApplication *app)
{
baseStyle()->unpolish(app);
RECURSION_GUARD(return)
- styleRulesCache->clear();
- hasStyleRuleCache->clear();
- renderRulesCache->clear();
- styleSheetCache->remove(qApp);
+ styleSheetCaches->styleRulesCache.clear();
+ styleSheetCaches->hasStyleRuleCache.clear();
+ styleSheetCaches->renderRulesCache.clear();
+ styleSheetCaches->styleSheetCache.remove(qApp);
}
#ifndef QT_NO_TABBAR
@@ -4157,6 +4134,10 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
pseudoElement = PseudoElement_DownArrow;
break;
+ case PE_IndicatorArrowUp:
+ pseudoElement = PseudoElement_UpArrow;
+ break;
+
case PE_IndicatorRadioButton:
pseudoElement = PseudoElement_ExclusiveIndicator;
break;
@@ -4257,7 +4238,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
case PE_Widget:
if (!rule.hasDrawable()) {
QWidget *container = containerWidget(w);
- if (autoFillDisabledWidgets->contains(container)
+ if (styleSheetCaches->autoFillDisabledWidgets.contains(container)
&& (container == w || !renderRule(container, opt).hasBackground())) {
//we do not have a background, but we disabled the autofillbackground anyway. so fill the background now.
// (this may happen if we have rules like :focus)
diff --git a/src/gui/styles/qstylesheetstyle_p.h b/src/gui/styles/qstylesheetstyle_p.h
index fd81437b7a..45649507b7 100644
--- a/src/gui/styles/qstylesheetstyle_p.h
+++ b/src/gui/styles/qstylesheetstyle_p.h
@@ -145,10 +145,6 @@ protected Q_SLOTS:
protected:
bool event(QEvent *e);
-private Q_SLOTS:
- void widgetDestroyed(QObject *);
- void styleDestroyed(QObject *);
-
private:
int refcount;
@@ -186,6 +182,22 @@ private:
Q_DECLARE_PRIVATE(QStyleSheetStyle)
};
+class QStyleSheetStyleCaches : public QObject
+{
+ Q_OBJECT
+public Q_SLOTS:
+ void widgetDestroyed(QObject *);
+ void styleDestroyed(QObject *);
+public:
+ QHash<const QWidget *, QVector<QCss::StyleRule> > styleRulesCache;
+ QHash<const QWidget *, QHash<int, bool> > hasStyleRuleCache;
+ typedef QHash<int, QHash<quint64, QRenderRule> > QRenderRules;
+ QHash<const QWidget *, QRenderRules> renderRulesCache;
+ QHash<const QWidget *, QPalette> customPaletteWidgets; // widgets whose palette we tampered
+ QHash<const void *, QCss::StyleSheet> styleSheetCache; // parsed style sheets
+ QSet<const QWidget *> autoFillDisabledWidgets;
+};
+
QT_END_NAMESPACE
#endif // QT_NO_STYLE_STYLESHEET
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index ecc4690e67..635d2cf731 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -1455,6 +1455,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
weight_value = FC_WEIGHT_DEMIBOLD;
else if (request.weight < (QFont::Bold + QFont::Black) / 2)
weight_value = FC_WEIGHT_BOLD;
+ FcPatternDel(pattern, FC_WEIGHT);
FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
int slant_value = FC_SLANT_ROMAN;
@@ -1462,20 +1463,25 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
slant_value = FC_SLANT_ITALIC;
else if (request.style == QFont::StyleOblique)
slant_value = FC_SLANT_OBLIQUE;
+ FcPatternDel(pattern, FC_SLANT);
FcPatternAddInteger(pattern, FC_SLANT, slant_value);
double size_value = qMax(qreal(1.), request.pixelSize);
+ FcPatternDel(pattern, FC_PIXEL_SIZE);
FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
int stretch = request.stretch;
if (!stretch)
stretch = 100;
+ FcPatternDel(pattern, FC_WIDTH);
FcPatternAddInteger(pattern, FC_WIDTH, stretch);
if (X11->display && QX11Info::appDepth(screen) <= 8) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
// can't do antialiasing on 8bpp
FcPatternAddBool(pattern, FC_ANTIALIAS, false);
} else if (request.styleStrategy & (QFont::PreferAntialias|QFont::NoAntialias)) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
FcPatternAddBool(pattern, FC_ANTIALIAS,
!(request.styleStrategy & QFont::NoAntialias));
}
@@ -1484,6 +1490,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
Q_ASSERT(script < QUnicodeTables::ScriptCount);
FcLangSet *ls = FcLangSetCreate();
FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]);
+ FcPatternDel(pattern, FC_LANG);
FcPatternAddLangSet(pattern, FC_LANG, ls);
FcLangSetDestroy(ls);
}
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index f73b816c4c..24c466427c 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -605,6 +605,12 @@ void QFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int n
addBitmapFontToPath(x, y, g, path, flags);
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/)
+{
+ // For font engines don't support subpixel positioning
+ return alphaMapForGlyph(glyph);
+}
+
QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
{
QImage i = alphaMapForGlyph(glyph);
@@ -615,6 +621,19 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
return i;
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t)
+{
+ if (! supportsSubPixelPositions())
+ return alphaMapForGlyph(glyph, t);
+
+ QImage i = alphaMapForGlyph(glyph, subPixelPosition);
+ if (t.type() > QTransform::TxTranslate)
+ i = i.transformed(t).convertToFormat(QImage::Format_Indexed8);
+ Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format...
+
+ return i;
+}
+
QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, int /* margin */, const QTransform &t)
{
QImage alphaMask = alphaMapForGlyph(glyph, t);
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index 88011813a7..98781ad444 100644
--- a/src/gui/text/qfontengine_mac.mm
+++ b/src/gui/text/qfontengine_mac.mm
@@ -121,6 +121,7 @@ OSStatus QMacFontPath::closePath(void *data)
return noErr;
}
+
#ifndef QT_MAC_USE_COCOA
QFontEngineMacMulti::QFontEngineMacMulti(const ATSFontFamilyRef &atsFamily, const ATSFontRef &atsFontRef, const QFontDef &fontDef, bool kerning)
: QFontEngineMulti(0)
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index c584ba1526..d528c69568 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -196,7 +196,9 @@ public:
* Returns an image indexed_8 with index values ranging from 0=fully transparant to 255=opaque
*/
virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
+ virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix, GlyphFormat /*format*/)
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 95060067f7..edf248a6ec 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -445,7 +445,7 @@ namespace {
const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
QStaticTextItem currentItem;
- currentItem.fontEngine = ti.fontEngine;
+ currentItem.setFontEngine(ti.fontEngine);
currentItem.font = ti.font();
currentItem.charOffset = m_chars.size();
currentItem.numChars = ti.num_chars;
@@ -713,4 +713,24 @@ void QStaticTextPrivate::init()
needsRelayout = false;
}
+QStaticTextItem::~QStaticTextItem()
+{
+ if (m_userData != 0 && !m_userData->ref.deref())
+ delete m_userData;
+ if (!m_fontEngine->ref.deref())
+ delete m_fontEngine;
+}
+
+void QStaticTextItem::setFontEngine(QFontEngine *fe)
+{
+ if (m_fontEngine != 0) {
+ if (!m_fontEngine->ref.deref())
+ delete m_fontEngine;
+ }
+
+ m_fontEngine = fe;
+ if (m_fontEngine != 0)
+ m_fontEngine->ref.ref();
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index cb60626b8a..87ef0d5aad 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -68,27 +68,60 @@ public:
OpenGLUserData
};
- QStaticTextUserData(Type t) : type(t) {}
+ QStaticTextUserData(Type t) : type(t) { ref = 0; }
virtual ~QStaticTextUserData() {}
+ QAtomicInt ref;
Type type;
};
class Q_GUI_EXPORT QStaticTextItem
{
public:
- QStaticTextItem() : chars(0), numChars(0), fontEngine(0), userData(0),
- useBackendOptimizations(false), userDataNeedsUpdate(0) {}
- ~QStaticTextItem() { delete userData; }
+ QStaticTextItem() : chars(0), numChars(0), useBackendOptimizations(false),
+ userDataNeedsUpdate(0), m_fontEngine(0), m_userData(0) {}
+
+ QStaticTextItem(const QStaticTextItem &other)
+ {
+ operator=(other);
+ }
+
+ void operator=(const QStaticTextItem &other)
+ {
+ glyphPositions = other.glyphPositions;
+ glyphs = other.glyphs;
+ chars = other.chars;
+ numGlyphs = other.numGlyphs;
+ numChars = other.numChars;
+ font = other.font;
+ color = other.color;
+ useBackendOptimizations = other.useBackendOptimizations;
+ userDataNeedsUpdate = other.userDataNeedsUpdate;
+
+ m_fontEngine = 0;
+ m_userData = 0;
+ setUserData(other.userData());
+ setFontEngine(other.fontEngine());
+ }
+
+ ~QStaticTextItem();
void setUserData(QStaticTextUserData *newUserData)
{
- if (userData == newUserData)
+ if (m_userData == newUserData)
return;
- delete userData;
- userData = newUserData;
+ if (m_userData != 0 && !m_userData->ref.deref())
+ delete m_userData;
+
+ m_userData = newUserData;
+ if (m_userData != 0)
+ m_userData->ref.ref();
}
+ QStaticTextUserData *userData() const { return m_userData; }
+
+ void setFontEngine(QFontEngine *fe);
+ QFontEngine *fontEngine() const { return m_fontEngine; }
union {
QFixedPoint *glyphPositions; // 8 bytes per glyph
@@ -108,14 +141,17 @@ public:
// 12 bytes for pointers
int numGlyphs; // 4 bytes per item
int numChars; // 4 bytes per item
- QFontEngine *fontEngine; // 4 bytes per item
QFont font; // 8 bytes per item
QColor color; // 10 bytes per item
- QStaticTextUserData *userData; // 8 bytes per item
char useBackendOptimizations : 1; // 1 byte per item
char userDataNeedsUpdate : 1; //
// ================
// 51 bytes per item
+
+private: // Needs special handling in setters, so private to avoid abuse
+ QFontEngine *m_fontEngine; // 4 bytes per item
+ QStaticTextUserData *m_userData; // 8 bytes per item
+
};
class QStaticText;
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index d0f71ae7d2..334246b9bd 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -64,6 +64,7 @@
#include "qgraphicssceneevent.h"
#include "qprinter.h"
#include "qtextdocumentwriter.h"
+#include "private/qtextcursor_p.h"
#include <qtextformat.h>
#include <qdatetime.h>
@@ -1904,6 +1905,8 @@ void QTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
}
layout->setAdditionalFormats(overrides);
cursor.endEditBlock();
+ if (cursor.d)
+ cursor.d->setX();
}
QVariant QTextControl::inputMethodQuery(Qt::InputMethodQuery property) const
diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h
index 251cb3331b..d34ee4ece8 100644
--- a/src/gui/text/qtextcursor.h
+++ b/src/gui/text/qtextcursor.h
@@ -230,6 +230,7 @@ private:
QSharedDataPointer<QTextCursorPrivate> d;
friend class QTextDocumentFragmentPrivate;
friend class QTextCopyHelper;
+ friend class QTextControlPrivate;
};
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 3aa6795755..496accdb95 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -2612,8 +2612,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberPrefix)) {
QString numberPrefix = format.numberPrefix();
- numberPrefix.replace('"', "\\22");
- numberPrefix.replace('\'', "\\27"); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
+ numberPrefix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberPrefix.replace(QLatin1Char('\''), QLatin1String("\\27")); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
styleString += QLatin1String(" -qt-list-number-prefix: ");
styleString += QLatin1Char('\'');
styleString += numberPrefix;
@@ -2624,8 +2624,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberSuffix)) {
if (format.numberSuffix() != QLatin1String(".")) { // this is our default
QString numberSuffix = format.numberSuffix();
- numberSuffix.replace('"', "\\22");
- numberSuffix.replace('\'', "\\27"); // see above
+ numberSuffix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberSuffix.replace(QLatin1Char('\''), QLatin1String("\\27")); // see above
styleString += QLatin1String(" -qt-list-number-suffix: ");
styleString += QLatin1Char('\'');
styleString += numberSuffix;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index f4f2168177..06eed557cb 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -612,7 +612,7 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
} else {
eor = current;
}
- dir = QChar::DirON; status.eor = QChar::DirAN;
+ dir = QChar::DirAN; status.eor = QChar::DirAN;
break;
case QChar::DirCS:
if(status.eor == QChar::DirAN) {
diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index 15fae23c20..b670186790 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -156,10 +156,14 @@ QT_USE_NAMESPACE
// In every other case we return NO, which means that Cocoa can do as it pleases
// (i.e., fire the menu action).
NSMenuItem *whichItem;
+ // Change the private unicode keys to the ones used in setting the "Key Equivalents"
+ extern NSString *qt_mac_removePrivateUnicode(NSString* string);
+ NSString *characters = qt_mac_removePrivateUnicode([event characters]);
if ([self hasShortcut:menu
- forKey:[event characters]
- forModifiers:([event modifierFlags] & NSDeviceIndependentModifierFlagsMask)
- whichItem:&whichItem]) {
+ forKey:characters
+ // Interested only in Shift, Cmd, Ctrl & Alt Keys, so ignoring masks like, Caps lock, Num Lock ...
+ forModifiers:([event modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask | NSAlternateKeyMask))
+ whichItem:&whichItem]) {
QWidget *widget = 0;
QAction *qaction = 0;
if (whichItem && [whichItem tag]) {
@@ -170,6 +174,9 @@ QT_USE_NAMESPACE
qApp->activePopupWidget()->focusWidget() : qApp->activePopupWidget());
else if (QApplicationPrivate::focus_widget)
widget = QApplicationPrivate::focus_widget;
+ // If we could not find any receivers, pass it to the active window
+ if (!widget)
+ widget = qApp->activeWindow();
if (qaction && widget) {
int key = qaction->shortcut();
QKeyEvent accel_ev(QEvent::ShortcutOverride, (key & (~Qt::KeyboardModifierMask)),
@@ -177,11 +184,10 @@ QT_USE_NAMESPACE
accel_ev.ignore();
qt_sendSpontaneousEvent(widget, &accel_ev);
if (accel_ev.isAccepted()) {
- if (qt_dispatchKeyEvent(event, widget)) {
- *target = nil;
- *action = nil;
- return YES;
- }
+ qt_dispatchKeyEvent(event, widget);
+ *target = nil;
+ *action = nil;
+ return YES;
}
}
}
diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm
index 126cc4a925..9e26423190 100644
--- a/src/gui/widgets/qmainwindowlayout_mac.mm
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm
@@ -43,6 +43,7 @@
#include <qtoolbar.h>
#include <private/qtoolbarlayout_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
+#include <private/qtoolbar_p.h>
#ifndef QT_MAC_USE_COCOA
#include <Carbon/Carbon.h>
@@ -473,6 +474,19 @@ void QMainWindowLayout::insertIntoMacToolbar(QToolBar *before, QToolBar *toolbar
#endif
}
+#ifdef QT_MAC_USE_COCOA
+void QMainWindowLayout::updateUnifiedToolbarOffset()
+{
+ QPoint offset(0, 0);
+
+ for (int i = 1; i < qtoolbarsInUnifiedToolbarList.length(); ++i) {
+ offset.setX(offset.x() + qtoolbarsInUnifiedToolbarList.at(i - 1)->size().width());
+ qtoolbarsInUnifiedToolbarList.at(i)->d_func()->toolbar_offset = offset;
+ }
+}
+#endif // QT_MAC_USE_COCOA
+
+
void QMainWindowLayout::removeFromMacToolbar(QToolBar *toolbar)
{
QHash<void *, QToolBar *>::iterator it = unifiedToolbarHash.begin();
@@ -546,11 +560,11 @@ void QMainWindowLayout::fixSizeInUnifiedToolbar(QToolBar *tb) const
QMacCocoaAutoReleasePool pool;
QWidgetItem layoutItem(tb);
QSize size = layoutItem.maximumSize();
- NSSize nssize = NSMakeSize(size.width(), size.height() - 2);
+ NSSize nssize = NSMakeSize(size.width(), size.height());
[item setMaxSize:nssize];
size = layoutItem.minimumSize();
nssize.width = size.width();
- nssize.height = size.height() - 2;
+ nssize.height = size.height();
[item setMinSize:nssize];
}
#else
diff --git a/src/gui/widgets/qmainwindowlayout_p.h b/src/gui/widgets/qmainwindowlayout_p.h
index a37221686d..661d49df2c 100644
--- a/src/gui/widgets/qmainwindowlayout_p.h
+++ b/src/gui/widgets/qmainwindowlayout_p.h
@@ -345,6 +345,7 @@ public:
#ifdef QT_MAC_USE_COCOA
QUnifiedToolbarSurface *unifiedSurface;
+ void updateUnifiedToolbarOffset();
#endif // QT_MAC_USE_COCOA
#endif // Q_WS_MAC
diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp
index b75db45032..130d091bb9 100644
--- a/src/gui/widgets/qvalidator.cpp
+++ b/src/gui/widgets/qvalidator.cpp
@@ -499,6 +499,8 @@ public:
}
QDoubleValidator::Notation notation;
+
+ QValidator::State validateWithLocale(QString & input, QLocalePrivate::NumberMode numMode, const QLocale &locale) const;
};
@@ -654,42 +656,49 @@ QValidator::State QDoubleValidator::validate(QString & input, int &) const
break;
}
+ State currentLocaleValidation = d->validateWithLocale(input, numMode, locale());
+ if (currentLocaleValidation == Acceptable || locale().language() == QLocale::C)
+ return currentLocaleValidation;
+ State cLocaleValidation = d->validateWithLocale(input, numMode, QLocale(QLocale::C));
+ return qMax(currentLocaleValidation, cLocaleValidation);
+}
+
+QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QLocalePrivate::NumberMode numMode, const QLocale &locale) const
+{
+ Q_Q(const QDoubleValidator);
QByteArray buff;
- if (!locale().d()->validateChars(input, numMode, &buff, dec)) {
- QLocale cl(QLocale::C);
- if (!cl.d()->validateChars(input, numMode, &buff, dec))
- return Invalid;
- }
+ if (!locale.d()->validateChars(input, numMode, &buff, q->dec))
+ return QValidator::Invalid;
if (buff.isEmpty())
- return Intermediate;
+ return QValidator::Intermediate;
- if (b >= 0 && buff.startsWith('-'))
- return Invalid;
+ if (q->b >= 0 && buff.startsWith('-'))
+ return QValidator::Invalid;
- if (t < 0 && buff.startsWith('+'))
- return Invalid;
+ if (q->t < 0 && buff.startsWith('+'))
+ return QValidator::Invalid;
bool ok, overflow;
double i = QLocalePrivate::bytearrayToDouble(buff.constData(), &ok, &overflow);
if (overflow)
- return Invalid;
+ return QValidator::Invalid;
if (!ok)
- return Intermediate;
+ return QValidator::Intermediate;
- if (i >= b && i <= t)
- return Acceptable;
+ if (i >= q->b && i <= q->t)
+ return QValidator::Acceptable;
- if (d->notation == StandardNotation) {
- double max = qMax(qAbs(b), qAbs(t));
+ if (notation == QDoubleValidator::StandardNotation) {
+ double max = qMax(qAbs(q->b), qAbs(q->t));
if (max < LLONG_MAX) {
qlonglong n = pow10(numDigits(qlonglong(max))) - 1;
if (qAbs(i) > n)
- return Invalid;
+ return QValidator::Invalid;
}
}
- return Intermediate;
+ return QValidator::Intermediate;
}
diff --git a/src/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro
index ef582267cd..44764a91a2 100644
--- a/src/imports/folderlistmodel/folderlistmodel.pro
+++ b/src/imports/folderlistmodel/folderlistmodel.pro
@@ -15,7 +15,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x20021320
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.files = qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.files = $$DESTDIR/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
index 5722b68005..ad872bae3f 100644
--- a/src/imports/gestures/gestures.pro
+++ b/src/imports/gestures/gestures.pro
@@ -15,7 +15,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x2002131F
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.files = qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.files = $$DESTDIR/qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index fd6f0f69b0..90b50e4659 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -19,7 +19,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x2002131E
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.files = qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.files = $$DESTDIR/qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri
index f03d0accf5..7b2f9ad726 100644
--- a/src/multimedia/audio/audio.pri
+++ b/src/multimedia/audio/audio.pri
@@ -42,8 +42,8 @@ mac {
wince*:LIBS += -lcoredll
} else:symbian {
- INCLUDEPATH += $${EPOCROOT}/epoc32/include/mmf/common
- INCLUDEPATH += $${EPOCROOT}/epoc32/include/mmf/server
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/common
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/server
HEADERS += $$PWD/qaudio_symbian_p.h \
$$PWD/qaudiodeviceinfo_symbian_p.h \
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index ddafa3d9a0..5265915d6a 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -482,19 +482,18 @@ int QAudioInputPrivate::bytesReady() const
qint64 QAudioInputPrivate::read(char* data, qint64 len)
{
- Q_UNUSED(len)
-
// Read in some audio data and write it to QIODevice, pull mode
if ( !handle )
return 0;
- bytesAvailable = checkBytesReady();
+ // bytesAvaiable is saved as a side effect of checkBytesReady().
+ int bytesToRead = checkBytesReady();
- if (bytesAvailable < 0) {
+ if (bytesToRead < 0) {
// bytesAvailable as negative is error code, try to recover from it.
- xrun_recovery(bytesAvailable);
- bytesAvailable = checkBytesReady();
- if (bytesAvailable < 0) {
+ xrun_recovery(bytesToRead);
+ bytesToRead = checkBytesReady();
+ if (bytesToRead < 0) {
// recovery failed must stop and set error.
close();
errorState = QAudio::IOError;
@@ -504,9 +503,11 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
}
}
+ bytesToRead = qMin<qint64>(len, bytesToRead);
+ bytesToRead -= bytesToRead % period_size;
int count=0, err = 0;
while(count < 5) {
- int chunks = bytesAvailable/period_size;
+ int chunks = bytesToRead/period_size;
int frames = chunks*period_frames;
if(frames > (int)buffer_frames)
frames = buffer_frames;
@@ -554,6 +555,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
emit stateChanged(deviceState);
}
} else {
+ bytesAvailable -= err;
totalTimeValue += err;
resuming = false;
if (deviceState != QAudio::ActiveState) {
@@ -566,6 +568,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
} else {
memcpy(data,audioBuffer,err);
+ bytesAvailable -= err;
totalTimeValue += err;
resuming = false;
if (deviceState != QAudio::ActiveState) {
@@ -661,7 +664,7 @@ bool QAudioInputPrivate::deviceReady()
{
if(pullMode) {
// reads some audio data and writes it to QIODevice
- read(0,0);
+ read(0, buffer_size);
} else {
// emits readyRead() so user will call read() on QIODevice to get some audio data
InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
index 1cde15969a..0ec2492a11 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.cpp
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -400,9 +400,12 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
resuming = false;
}
} else {
+ l = qMin<qint64>(len, waveBlocks[header].dwBytesRecorded);
// push mode
- memcpy(p,waveBlocks[header].lpData,waveBlocks[header].dwBytesRecorded);
- l = waveBlocks[header].dwBytesRecorded;
+ memcpy(p, waveBlocks[header].lpData, l);
+
+ len -= l;
+
#ifdef DEBUG_AUDIO
qDebug()<<"IN: "<<waveBlocks[header].dwBytesRecorded<<", OUT: "<<l;
#endif
@@ -457,7 +460,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
mutex.lock();
if(!pullMode) {
- if(l+period_size > len && waveFreeBlockCount == buffer_size/period_size)
+ if(len < period_size || waveFreeBlockCount == buffer_size/period_size)
done = true;
} else {
if(waveFreeBlockCount == buffer_size/period_size)
@@ -568,7 +571,7 @@ bool QAudioInputPrivate::deviceReady()
if(pullMode) {
// reads some audio data and writes it to QIODevice
- read(0,0);
+ read(0, buffer_size);
} else {
// emits readyRead() so user will call read() on QIODevice to get some audio data
InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index 1f304e32cd..1b054e5f03 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -586,7 +586,7 @@ bool QAudioOutputPrivate::deviceReady()
}
}
if ( out < l) {
- // Didnt write all data
+ // Didn't write all data
audioSource->seek(audioSource->pos()-(l-out));
}
if(startup)
diff --git a/src/network/access/qhttp.cpp b/src/network/access/qhttp.cpp
index 13375f8ca1..9c2f79ac34 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -2442,7 +2442,7 @@ void QHttpPrivate::_q_slotSendRequest()
if (proxy.hostName().isEmpty()) {
proxy.setType(QNetworkProxy::NoProxy);
} else if (sslInUse) {
- // Disallow use of cacheing proxy with HTTPS; instead fall back to
+ // Disallow use of caching proxy with HTTPS; instead fall back to
// transparent HTTP CONNECT proxying.
transparentProxyInUse = true;
} else {
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 2ab28c7178..a1c7cf11d2 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include <private/qabstractsocket_p.h>
#include "qhttpnetworkconnection_p.h"
#include "qhttpnetworkconnectionchannel_p.h"
#include "private/qnoncontiguousbytedevice_p.h"
@@ -56,6 +57,7 @@
#ifndef QT_NO_HTTP
#ifndef QT_NO_OPENSSL
+# include <private/qsslsocket_p.h>
# include <QtNetwork/qsslkey.h>
# include <QtNetwork/qsslcipher.h>
# include <QtNetwork/qsslconfiguration.h>
@@ -79,9 +81,9 @@ const int QHttpNetworkConnectionPrivate::defaultRePipelineLength = 2;
QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt)
-: hostName(hostName), port(port), encrypt(encrypt),
- channelCount(defaultChannelCount),
- pendingAuthSignal(false), pendingProxyAuthSignal(false)
+: state(RunningState),
+ hostName(hostName), port(port), encrypt(encrypt),
+ channelCount(defaultChannelCount)
#ifndef QT_NO_NETWORKPROXY
, networkProxy(QNetworkProxy::NoProxy)
#endif
@@ -90,9 +92,9 @@ QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(const QString &host
}
QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt)
-: hostName(hostName), port(port), encrypt(encrypt),
- channelCount(channelCount),
- pendingAuthSignal(false), pendingProxyAuthSignal(false)
+: state(RunningState),
+ hostName(hostName), port(port), encrypt(encrypt),
+ channelCount(channelCount)
#ifndef QT_NO_NETWORKPROXY
, networkProxy(QNetworkProxy::NoProxy)
#endif
@@ -122,6 +124,42 @@ void QHttpNetworkConnectionPrivate::init()
}
}
+void QHttpNetworkConnectionPrivate::pauseConnection()
+{
+ state = PausedState;
+
+ // Disable all socket notifiers
+ for (int i = 0; i < channelCount; i++) {
+#ifndef QT_NO_OPENSSL
+ if (encrypt)
+ QSslSocketPrivate::pauseSocketNotifiers(static_cast<QSslSocket*>(channels[i].socket));
+ else
+#endif
+ QAbstractSocketPrivate::pauseSocketNotifiers(channels[i].socket);
+ }
+}
+
+void QHttpNetworkConnectionPrivate::resumeConnection()
+{
+ state = RunningState;
+ // Enable all socket notifiers
+ for (int i = 0; i < channelCount; i++) {
+#ifndef QT_NO_OPENSSL
+ if (encrypt)
+ QSslSocketPrivate::resumeSocketNotifiers(static_cast<QSslSocket*>(channels[i].socket));
+ else
+#endif
+ QAbstractSocketPrivate::resumeSocketNotifiers(channels[i].socket);
+
+ // Resume pending upload if needed
+ if (channels[i].state == QHttpNetworkConnectionChannel::WritingState)
+ QMetaObject::invokeMethod(&channels[i], "_q_uploadDataReadyRead", Qt::QueuedConnection);
+ }
+
+ // queue _q_startNextRequest
+ QMetaObject::invokeMethod(this->q_func(), "_q_startNextRequest", Qt::QueuedConnection);
+}
+
int QHttpNetworkConnectionPrivate::indexOf(QAbstractSocket *socket) const
{
for (int i = 0; i < channelCount; ++i)
@@ -258,6 +296,13 @@ void QHttpNetworkConnectionPrivate::copyCredentials(int fromChannel, QAuthentica
{
Q_ASSERT(auth);
+ // NTLM is a multi phase authentication. Copying credentials between authenticators would mess things up.
+ if (!isProxy && channels[fromChannel].authMethod == QAuthenticatorPrivate::Ntlm)
+ return;
+ if (isProxy && channels[fromChannel].proxyAuthMethod == QAuthenticatorPrivate::Ntlm)
+ return;
+
+
// select another channel
QAuthenticator* otherAuth = 0;
for (int i = 0; i < channelCount; ++i) {
@@ -283,8 +328,6 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
Q_ASSERT(socket);
Q_ASSERT(reply);
- Q_Q(QHttpNetworkConnection);
-
resend = false;
//create the response header to be used with QAuthenticatorPrivate.
QList<QPair<QByteArray, QByteArray> > fields = reply->header();
@@ -297,10 +340,10 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
QAuthenticator* auth = 0;
if (isProxy) {
auth = &channels[i].proxyAuthenticator;
- channels[i].proxyAuthMehtod = authMethod;
+ channels[i].proxyAuthMethod = authMethod;
} else {
auth = &channels[i].authenticator;
- channels[i].authMehtod = authMethod;
+ channels[i].authMethod = authMethod;
}
//proceed with the authentication.
if (auth->isNull())
@@ -309,46 +352,33 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
priv->parseHttpResponse(fields, isProxy);
if (priv->phase == QAuthenticatorPrivate::Done) {
- if ((isProxy && pendingProxyAuthSignal) ||(!isProxy && pendingAuthSignal)) {
- // drop the request
- reply->d_func()->eraseData();
- channels[i].close();
- channels[i].lastStatus = 0;
- channels[i].state = QHttpNetworkConnectionChannel::Wait4AuthState;
- return false;
- }
- // cannot use this socket until the slot returns
- channels[i].state = QHttpNetworkConnectionChannel::WaitingState;
- socket->blockSignals(true);
+ pauseConnection();
if (!isProxy) {
- pendingAuthSignal = true;
- emit q->authenticationRequired(reply->request(), auth, q);
- pendingAuthSignal = false;
+ emit reply->authenticationRequired(reply->request(), auth);
#ifndef QT_NO_NETWORKPROXY
} else {
- pendingProxyAuthSignal = true;
- emit q->proxyAuthenticationRequired(networkProxy, auth, q);
- pendingProxyAuthSignal = false;
+ emit reply->proxyAuthenticationRequired(networkProxy, auth);
#endif
}
- socket->blockSignals(false);
- // socket free to use
- channels[i].state = QHttpNetworkConnectionChannel::IdleState;
+ resumeConnection();
+
if (priv->phase != QAuthenticatorPrivate::Done) {
// send any pending requests
copyCredentials(i, auth, isProxy);
- QMetaObject::invokeMethod(q, "_q_restartAuthPendingRequests", Qt::QueuedConnection);
}
- } else if (priv->phase == QAuthenticatorPrivate::Start) {
- // If the url's authenticator has a 'user' set we will end up here (phase is only set to 'Done' by
- // parseHttpResponse above if 'user' is empty). So if credentials were supplied with the request,
- // such as in the case of an XMLHttpRequest, this is our only opportunity to cache them.
- emit q->cacheCredentials(reply->request(), auth, q);
}
- // - Changing values in QAuthenticator will reset the 'phase'.
+ // - Changing values in QAuthenticator will reset the 'phase'. Therefore if it is still "Done"
+ // then nothing was filled in by the user or the cache
// - If withCredentials has been set to false (e.g. by QtWebKit for a cross-origin XMLHttpRequest) then
// we need to bail out if authentication is required.
if (priv->phase == QAuthenticatorPrivate::Done || !reply->request().withCredentials()) {
+ // Reset authenticator so the next request on that channel does not get messed up
+ auth = 0;
+ if (isProxy)
+ channels[i].proxyAuthenticator = QAuthenticator();
+ else
+ channels[i].authenticator = QAuthenticator();
+
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
@@ -357,15 +387,9 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
? QNetworkReply::ProxyAuthenticationRequiredError
: QNetworkReply::AuthenticationRequiredError;
reply->d_func()->errorString = errorDetail(errorCode, socket);
- emit q->error(errorCode, reply->d_func()->errorString);
- emit channels[i].reply->finished();
+ emit reply->finishedWithError(errorCode, reply->d_func()->errorString);
// ### at this point the reply could be deleted
socket->close();
- // remove pending request on the other channels
- for (int j = 0; j < channelCount; ++j) {
- if (j != i && channels[j].state == QHttpNetworkConnectionChannel::Wait4AuthState)
- channels[j].state = QHttpNetworkConnectionChannel::IdleState;
- }
return true;
}
//resend the request
@@ -381,8 +405,9 @@ void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket,
int i = indexOf(socket);
- if (channels[i].authMehtod != QAuthenticatorPrivate::None) {
- if (!(channels[i].authMehtod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 401)) {
+ // Send "Authorization" header, but not if it's NTLM and the socket is already authenticated.
+ if (channels[i].authMethod != QAuthenticatorPrivate::None) {
+ if (!(channels[i].authMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 401)) {
QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].authenticator);
if (priv && priv->method != QAuthenticatorPrivate::None) {
QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false));
@@ -390,8 +415,10 @@ void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket,
}
}
}
- if (channels[i].proxyAuthMehtod != QAuthenticatorPrivate::None) {
- if (!(channels[i].proxyAuthMehtod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 407)) {
+
+ // Send "Proxy-Authorization" header, but not if it's NTLM and the socket is already authenticated.
+ if (channels[i].proxyAuthMethod != QAuthenticatorPrivate::None) {
+ if (!(channels[i].proxyAuthMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 407)) {
QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].proxyAuthenticator);
if (priv && priv->method != QAuthenticatorPrivate::None) {
QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false));
@@ -726,6 +753,10 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply)
// although it is called _q_startNextRequest, it will actually start multiple requests when possible
void QHttpNetworkConnectionPrivate::_q_startNextRequest()
{
+ // If the QHttpNetworkConnection is currently paused then bail out immediately
+ if (state == PausedState)
+ return;
+
//resend the necessary ones.
for (int i = 0; i < channelCount; ++i) {
if (channels[i].resendCurrent) {
@@ -776,17 +807,6 @@ void QHttpNetworkConnectionPrivate::_q_startNextRequest()
fillPipeline(channels[i].socket);
}
-void QHttpNetworkConnectionPrivate::_q_restartAuthPendingRequests()
-{
- // send the request using the idle socket
- for (int i = 0 ; i < channelCount; ++i) {
- if (channels[i].state == QHttpNetworkConnectionChannel::Wait4AuthState) {
- channels[i].state = QHttpNetworkConnectionChannel::IdleState;
- if (channels[i].reply)
- channels[i].sendRequest();
- }
- }
-}
void QHttpNetworkConnectionPrivate::readMoreLater(QHttpNetworkReply *reply)
{
@@ -835,33 +855,12 @@ QHttpNetworkReply* QHttpNetworkConnection::sendRequest(const QHttpNetworkRequest
return d->queueRequest(request);
}
-void QHttpNetworkConnection::enableEncryption()
-{
- Q_D(QHttpNetworkConnection);
- d->encrypt = true;
-}
-
bool QHttpNetworkConnection::isEncrypted() const
{
Q_D(const QHttpNetworkConnection);
return d->encrypt;
}
-void QHttpNetworkConnection::setProxyAuthentication(QAuthenticator *authenticator)
-{
- Q_D(QHttpNetworkConnection);
- for (int i = 0; i < d->channelCount; ++i)
- d->channels[i].proxyAuthenticator = *authenticator;
-}
-
-void QHttpNetworkConnection::setAuthentication(const QString &domain, QAuthenticator *authenticator)
-{
- Q_UNUSED(domain); // ### domain ?
- Q_D(QHttpNetworkConnection);
- for (int i = 0; i < d->channelCount; ++i)
- d->channels[i].authenticator = *authenticator;
-}
-
#ifndef QT_NO_NETWORKPROXY
void QHttpNetworkConnection::setCacheProxy(const QNetworkProxy &networkProxy)
{
@@ -954,8 +953,11 @@ void QHttpNetworkConnection::ignoreSslErrors(const QList<QSslError> &errors, int
// e.g. it is for SOCKS proxies which require authentication.
void QHttpNetworkConnectionPrivate::emitProxyAuthenticationRequired(const QHttpNetworkConnectionChannel *chan, const QNetworkProxy &proxy, QAuthenticator* auth)
{
- Q_Q(QHttpNetworkConnection);
- emit q->proxyAuthenticationRequired(proxy, auth, q);
+ // Also pause the connection because socket notifiers may fire while an user
+ // dialog is displaying
+ pauseConnection();
+ emit chan->reply->proxyAuthenticationRequired(proxy, auth);
+ resumeConnection();
int i = indexOf(chan->socket);
copyCredentials(i, auth, true);
}
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index 51666d613a..8461426c44 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -108,43 +108,22 @@ public:
QNetworkProxy transparentProxy() const;
#endif
- //enable encryption
- void enableEncryption();
bool isEncrypted() const;
- //authentication parameters
- void setProxyAuthentication(QAuthenticator *authenticator);
- void setAuthentication(const QString &domain, QAuthenticator *authenticator);
-
#ifndef QT_NO_OPENSSL
void setSslConfiguration(const QSslConfiguration &config);
void ignoreSslErrors(int channel = -1);
void ignoreSslErrors(const QList<QSslError> &errors, int channel = -1);
-
-Q_SIGNALS:
- void sslErrors(const QList<QSslError> &errors);
-#endif
-
-Q_SIGNALS:
-#ifndef QT_NO_NETWORKPROXY
- //cannot be used with queued connection.
- void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
#endif
- void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
- void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
- void error(QNetworkReply::NetworkError errorCode, const QString &detail = QString());
private:
Q_DECLARE_PRIVATE(QHttpNetworkConnection)
Q_DISABLE_COPY(QHttpNetworkConnection)
friend class QHttpNetworkReply;
+ friend class QHttpNetworkReplyPrivate;
friend class QHttpNetworkConnectionChannel;
Q_PRIVATE_SLOT(d_func(), void _q_startNextRequest())
- Q_PRIVATE_SLOT(d_func(), void _q_restartAuthPendingRequests())
};
@@ -160,11 +139,20 @@ public:
static const int defaultPipelineLength;
static const int defaultRePipelineLength;
+ enum ConnectionState {
+ RunningState = 0,
+ PausedState = 1,
+ };
+
QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt);
QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt);
~QHttpNetworkConnectionPrivate();
void init();
+ void pauseConnection();
+ void resumeConnection();
+ ConnectionState state;
+
enum { ChunkSize = 4096 };
int indexOf(QAbstractSocket *socket) const;
@@ -184,7 +172,6 @@ public:
// private slots
void _q_startNextRequest(); // send the next request from the queue
- void _q_restartAuthPendingRequests(); // send the currently blocked request
void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
@@ -203,9 +190,6 @@ public:
const int channelCount;
QHttpNetworkConnectionChannel *channels; // parallel connections to the server
- bool pendingAuthSignal; // there is an incomplete authentication signal
- bool pendingProxyAuthSignal; // there is an incomplete proxy authentication signal
-
qint64 uncompressedBytesAvailable(const QHttpNetworkReply &reply) const;
qint64 uncompressedBytesAvailableNextBlock(const QHttpNetworkReply &reply) const;
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 74c584413c..fe5946a6d7 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -69,8 +69,8 @@ QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
, lastStatus(0)
, pendingEncrypt(false)
, reconnectAttempts(2)
- , authMehtod(QAuthenticatorPrivate::None)
- , proxyAuthMehtod(QAuthenticatorPrivate::None)
+ , authMethod(QAuthenticatorPrivate::None)
+ , proxyAuthMethod(QAuthenticatorPrivate::None)
#ifndef QT_NO_OPENSSL
, ignoreAllSslErrors(false)
#endif
@@ -189,6 +189,7 @@ bool QHttpNetworkConnectionChannel::sendRequest()
|| (!url.password().isEmpty() && url.password() != auth.password())) {
auth.setUser(url.userName());
auth.setPassword(url.password());
+ emit reply->cacheCredentials(request, &auth);
connection->d_func()->copyCredentials(connection->d_func()->indexOf(socket), &auth, false);
}
// clear the userinfo, since we use the same request for resending
@@ -308,7 +309,6 @@ bool QHttpNetworkConnectionChannel::sendRequest()
break;
}
case QHttpNetworkConnectionChannel::ReadingState:
- case QHttpNetworkConnectionChannel::Wait4AuthState:
// ignore _q_bytesWritten in these states
// fall through
default:
@@ -417,7 +417,9 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
}
case QHttpNetworkReplyPrivate::ReadingDataState: {
QHttpNetworkReplyPrivate *replyPrivate = reply->d_func();
- if (replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) {
+ if (socket->state() == QAbstractSocket::ConnectedState &&
+ replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) {
+ // (only do the following when still connected, not when we have already been disconnected and there is still data)
// We already have some HTTP body data. We don't read more from the socket until
// this is fetched by QHttpNetworkAccessHttpBackend. If we would read more,
// we could not limit our read buffer usage.
@@ -795,8 +797,7 @@ void QHttpNetworkConnectionChannel::handleStatus()
? QNetworkReply::ProxyAuthenticationRequiredError
: QNetworkReply::AuthenticationRequiredError;
reply->d_func()->errorString = connection->d_func()->errorDetail(errorCode, socket);
- emit connection->error(errorCode, reply->d_func()->errorString);
- emit reply->finished();
+ emit reply->finishedWithError(errorCode, reply->d_func()->errorString);
}
break;
default:
@@ -972,7 +973,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
{
if (!socket)
return;
- bool send2Reply = false;
QNetworkReply::NetworkError errorCode = QNetworkReply::UnknownNetworkError;
switch (socketError) {
@@ -990,7 +990,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
} else {
- send2Reply = true;
errorCode = QNetworkReply::RemoteHostClosedError;
}
} else {
@@ -1003,7 +1002,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
}
- send2Reply = true;
errorCode = QNetworkReply::TimeoutError;
break;
case QAbstractSocket::ProxyAuthenticationRequiredError:
@@ -1019,18 +1017,14 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
}
QPointer<QHttpNetworkConnection> that = connection;
QString errorString = connection->d_func()->errorDetail(errorCode, socket, socket->errorString());
- if (send2Reply) {
- if (reply) {
- reply->d_func()->errorString = errorString;
- // this error matters only to this reply
- emit reply->finishedWithError(errorCode, errorString);
- }
- // send the next request
- QMetaObject::invokeMethod(that, "_q_startNextRequest", Qt::QueuedConnection);
- } else {
- // the failure affects all requests.
- emit connection->error(errorCode, errorString);
+
+ if (reply) {
+ reply->d_func()->errorString = errorString;
+ emit reply->finishedWithError(errorCode, errorString);
}
+ // send the next request
+ QMetaObject::invokeMethod(that, "_q_startNextRequest", Qt::QueuedConnection);
+
if (that) //signal emission triggered event loop
close();
}
@@ -1061,7 +1055,11 @@ void QHttpNetworkConnectionChannel::_q_sslErrors(const QList<QSslError> &errors)
if (!socket)
return;
//QNetworkReply::NetworkError errorCode = QNetworkReply::ProtocolFailure;
- emit connection->sslErrors(errors);
+ // Also pause the connection because socket notifiers may fire while an user
+ // dialog is displaying
+ connection->d_func()->pauseConnection();
+ emit reply->sslErrors(errors);
+ connection->d_func()->resumeConnection();
}
void QHttpNetworkConnectionChannel::_q_encryptedBytesWritten(qint64 bytes)
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index 4f3a65c3eb..07bb4a69ed 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -95,8 +95,7 @@ public:
WritingState = 2, // writing the data
WaitingState = 4, // waiting for reply
ReadingState = 8, // reading the reply
- Wait4AuthState = 0x10, // blocked for send till the current authentication slot is done
- BusyState = (ConnectingState|WritingState|WaitingState|ReadingState|Wait4AuthState)
+ BusyState = (ConnectingState|WritingState|WaitingState|ReadingState)
};
QAbstractSocket *socket;
bool ssl;
@@ -109,8 +108,8 @@ public:
int lastStatus; // last status received on this channel
bool pendingEncrypt; // for https (send after encrypted)
int reconnectAttempts; // maximum 2 reconnection attempts
- QAuthenticatorPrivate::Method authMehtod;
- QAuthenticatorPrivate::Method proxyAuthMehtod;
+ QAuthenticatorPrivate::Method authMethod;
+ QAuthenticatorPrivate::Method proxyAuthMethod;
QAuthenticator authenticator;
QAuthenticator proxyAuthenticator;
#ifndef QT_NO_OPENSSL
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index 1c55482875..3e98dccab8 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -225,6 +225,11 @@ bool QHttpNetworkReply::isPipeliningUsed() const
return d_func()->pipeliningUsed;
}
+QHttpNetworkConnection* QHttpNetworkReply::connection()
+{
+ return d_func()->connection;
+}
+
QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
: QHttpNetworkHeaderPrivate(newUrl)
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
index 02ce248cde..65d1887660 100644
--- a/src/network/access/qhttpnetworkreply_p.h
+++ b/src/network/access/qhttpnetworkreply_p.h
@@ -136,6 +136,8 @@ public:
bool isPipeliningUsed() const;
+ QHttpNetworkConnection* connection();
+
#ifndef QT_NO_OPENSSL
QSslConfiguration sslConfiguration() const;
void setSslConfiguration(const QSslConfiguration &config);
@@ -154,7 +156,11 @@ Q_SIGNALS:
// FIXME we need to change this to qint64!
void dataReadProgress(int done, int total);
void dataSendProgress(qint64 done, qint64 total);
-
+ void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
+#ifndef QT_NO_NETWORKPROXY
+ void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
+#endif
+ void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
private:
Q_DECLARE_PRIVATE(QHttpNetworkReply)
friend class QHttpNetworkConnection;
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index c3d765b750..d4ecf43b74 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -88,18 +88,6 @@ QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory()
QNetworkAccessBackend *QNetworkAccessManagerPrivate::findBackend(QNetworkAccessManager::Operation op,
const QNetworkRequest &request)
{
- QNetworkRequest::CacheLoadControl mode =
- static_cast<QNetworkRequest::CacheLoadControl>(
- request.attribute(QNetworkRequest::CacheLoadControlAttribute,
- QNetworkRequest::PreferNetwork).toInt());
- if (mode == QNetworkRequest::AlwaysCache
- && (op == QNetworkAccessManager::GetOperation
- || op == QNetworkAccessManager::HeadOperation)) {
- QNetworkAccessBackend *backend = new QNetworkAccessCacheBackend;
- backend->manager = this;
- return backend;
- }
-
if (!factoryDataShutdown) {
QMutexLocker locker(&factoryData()->mutex);
QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin(),
@@ -340,7 +328,7 @@ void QNetworkAccessBackend::authenticationRequired(QAuthenticator *authenticator
void QNetworkAccessBackend::cacheCredentials(QAuthenticator *authenticator)
{
- manager->addCredentials(this->reply->url, authenticator);
+ manager->cacheCredentials(this->reply->url, authenticator);
}
void QNetworkAccessBackend::metaDataChanged()
diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h
index 9f8a01f864..b9a832eaff 100644
--- a/src/network/access/qnetworkaccessbackend_p.h
+++ b/src/network/access/qnetworkaccessbackend_p.h
@@ -115,7 +115,6 @@ public:
virtual bool start();
#endif
virtual void closeDownstreamChannel() = 0;
- virtual bool waitForDownstreamReadyRead(int msecs) = 0;
// slot-like:
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp
index 73491a9436..e78694e449 100644
--- a/src/network/access/qnetworkaccesscachebackend.cpp
+++ b/src/network/access/qnetworkaccesscachebackend.cpp
@@ -132,18 +132,6 @@ void QNetworkAccessCacheBackend::closeUpstreamChannel()
Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
}
-bool QNetworkAccessCacheBackend::waitForDownstreamReadyRead(int)
-{
- Q_ASSERT_X(false, Q_FUNC_INFO , "This function show not have been called!");
- return false;
-}
-
-bool QNetworkAccessCacheBackend::waitForUpstreamBytesWritten(int)
-{
- Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
- return false;
-}
-
void QNetworkAccessCacheBackend::upstreamReadyRead()
{
Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
diff --git a/src/network/access/qnetworkaccesscachebackend_p.h b/src/network/access/qnetworkaccesscachebackend_p.h
index df001ab612..32581d56f1 100644
--- a/src/network/access/qnetworkaccesscachebackend_p.h
+++ b/src/network/access/qnetworkaccesscachebackend_p.h
@@ -69,8 +69,6 @@ public:
void open();
void closeDownstreamChannel();
void closeUpstreamChannel();
- bool waitForDownstreamReadyRead(int msecs);
- bool waitForUpstreamBytesWritten(int msecs);
void upstreamReadyRead();
void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index cd077e7056..5f99f84d31 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -278,12 +278,6 @@ void QNetworkAccessDebugPipeBackend::socketConnected()
{
}
-bool QNetworkAccessDebugPipeBackend::waitForDownstreamReadyRead(int ms)
-{
- Q_UNUSED(ms);
- qCritical("QNetworkAccess: Debug pipe backend does not support waitForReadyRead()");
- return false;
-}
#endif
diff --git a/src/network/access/qnetworkaccessdebugpipebackend_p.h b/src/network/access/qnetworkaccessdebugpipebackend_p.h
index 58a4fd0ac6..918a813936 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend_p.h
+++ b/src/network/access/qnetworkaccessdebugpipebackend_p.h
@@ -71,7 +71,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp
index 710c258466..cf4ce7cde0 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -208,12 +208,6 @@ void QNetworkAccessFileBackend::closeDownstreamChannel()
}
}
-bool QNetworkAccessFileBackend::waitForDownstreamReadyRead(int)
-{
- Q_ASSERT(operation() == QNetworkAccessManager::GetOperation);
- return readMoreFromFile();
-}
-
void QNetworkAccessFileBackend::downstreamReadyWrite()
{
Q_ASSERT_X(operation() == QNetworkAccessManager::GetOperation, "QNetworkAccessFileBackend",
diff --git a/src/network/access/qnetworkaccessfilebackend_p.h b/src/network/access/qnetworkaccessfilebackend_p.h
index 6df8710605..d1dbe8d9c2 100644
--- a/src/network/access/qnetworkaccessfilebackend_p.h
+++ b/src/network/access/qnetworkaccessfilebackend_p.h
@@ -69,7 +69,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp
index da336d0349..1567d980d0 100644
--- a/src/network/access/qnetworkaccessftpbackend.cpp
+++ b/src/network/access/qnetworkaccessftpbackend.cpp
@@ -182,23 +182,6 @@ void QNetworkAccessFtpBackend::closeDownstreamChannel()
#endif
}
-bool QNetworkAccessFtpBackend::waitForDownstreamReadyRead(int ms)
-{
- if (!ftp)
- return false;
-
- if (ftp->bytesAvailable()) {
- ftpReadyRead();
- return true;
- }
-
- if (ms == 0)
- return false;
-
- qCritical("QNetworkAccess: FTP backend does not support waitForReadyRead()");
- return false;
-}
-
void QNetworkAccessFtpBackend::downstreamReadyWrite()
{
if (state == Transferring && ftp && ftp->bytesAvailable())
diff --git a/src/network/access/qnetworkaccessftpbackend_p.h b/src/network/access/qnetworkaccessftpbackend_p.h
index 737fa72988..8a2bfc3a56 100644
--- a/src/network/access/qnetworkaccessftpbackend_p.h
+++ b/src/network/access/qnetworkaccessftpbackend_p.h
@@ -87,7 +87,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index 8b9a99f31c..3c41d85d75 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -71,7 +71,7 @@ static QByteArray makeCacheKey(QNetworkAccessHttpBackend *backend, QNetworkProxy
QUrl copy = backend->url();
bool isEncrypted = copy.scheme().toLower() == QLatin1String("https");
copy.setPort(copy.port(isEncrypted ? DefaultHttpsPort : DefaultHttpPort));
- result = copy.toEncoded(QUrl::RemovePassword | QUrl::RemovePath |
+ result = copy.toEncoded(QUrl::RemoveUserInfo | QUrl::RemovePath |
QUrl::RemoveQuery | QUrl::RemoveFragment);
#ifndef QT_NO_NETWORKPROXY
@@ -338,24 +338,6 @@ void QNetworkAccessHttpBackend::finished()
QNetworkAccessBackend::finished();
}
-void QNetworkAccessHttpBackend::setupConnection()
-{
-#ifndef QT_NO_NETWORKPROXY
- connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-#endif
- connect(http, SIGNAL(authenticationRequired(QHttpNetworkRequest,QAuthenticator*)),
- SLOT(httpAuthenticationRequired(QHttpNetworkRequest,QAuthenticator*)));
- connect(http, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)),
- SLOT(httpCacheCredentials(QHttpNetworkRequest,QAuthenticator*)));
- connect(http, SIGNAL(error(QNetworkReply::NetworkError,QString)),
- SLOT(httpError(QNetworkReply::NetworkError,QString)));
-#ifndef QT_NO_OPENSSL
- connect(http, SIGNAL(sslErrors(QList<QSslError>)),
- SLOT(sslErrors(QList<QSslError>)));
-#endif
-}
-
/*
For a given httpRequest
1) If AlwaysNetwork, return
@@ -367,10 +349,12 @@ void QNetworkAccessHttpBackend::validateCache(QHttpNetworkRequest &httpRequest,
QNetworkRequest::CacheLoadControl CacheLoadControlAttribute =
(QNetworkRequest::CacheLoadControl)request().attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt();
if (CacheLoadControlAttribute == QNetworkRequest::AlwaysNetwork) {
- // forced reload from the network
- // tell any caching proxy servers to reload too
- httpRequest.setHeaderField("Cache-Control", "no-cache");
- httpRequest.setHeaderField("Pragma", "no-cache");
+ // If the request does not already specify preferred cache-control
+ // force reload from the network and tell any caching proxy servers to reload too
+ if (!request().rawHeaderList().contains("Cache-Control")) {
+ httpRequest.setHeaderField("Cache-Control", "no-cache");
+ httpRequest.setHeaderField("Pragma", "no-cache");
+ }
return;
}
@@ -596,12 +580,22 @@ void QNetworkAccessHttpBackend::postRequest()
if (pendingIgnoreAllSslErrors)
httpReply->ignoreSslErrors();
httpReply->ignoreSslErrors(pendingIgnoreSslErrorsList);
+ connect(httpReply, SIGNAL(sslErrors(QList<QSslError>)),
+ SLOT(sslErrors(QList<QSslError>)));
#endif
connect(httpReply, SIGNAL(finished()), SLOT(replyFinished()));
connect(httpReply, SIGNAL(finishedWithError(QNetworkReply::NetworkError,QString)),
SLOT(httpError(QNetworkReply::NetworkError,QString)));
connect(httpReply, SIGNAL(headerChanged()), SLOT(replyHeaderChanged()));
+ connect(httpReply, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)),
+ SLOT(httpCacheCredentials(QHttpNetworkRequest,QAuthenticator*)));
+#ifndef QT_NO_NETWORKPROXY
+ connect(httpReply, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+#endif
+ connect(httpReply, SIGNAL(authenticationRequired(const QHttpNetworkRequest,QAuthenticator*)),
+ SLOT(httpAuthenticationRequired(const QHttpNetworkRequest,QAuthenticator*)));
}
void QNetworkAccessHttpBackend::invalidateCache()
@@ -676,7 +670,6 @@ void QNetworkAccessHttpBackend::open()
cache->addEntry(cacheKey, http);
}
- setupConnection();
postRequest();
}
@@ -685,26 +678,6 @@ void QNetworkAccessHttpBackend::closeDownstreamChannel()
// this indicates that the user closed the stream while the reply isn't finished yet
}
-bool QNetworkAccessHttpBackend::waitForDownstreamReadyRead(int msecs)
-{
- Q_ASSERT(http);
-
- if (httpReply->bytesAvailable()) {
- readFromHttp();
- return true;
- }
-
- if (msecs == 0) {
- // no bytes available in the socket and no waiting
- return false;
- }
-
- // ### FIXME
- qCritical("QNetworkAccess: HTTP backend does not support waitForReadyRead()");
- return false;
-}
-
-
void QNetworkAccessHttpBackend::downstreamReadyWrite()
{
readFromHttp();
@@ -906,29 +879,6 @@ void QNetworkAccessHttpBackend::httpError(QNetworkReply::NetworkError errorCode,
#if defined(QNETWORKACCESSHTTPBACKEND_DEBUG)
qDebug() << "http error!" << errorCode << errorString;
#endif
-#if 0
- static const QNetworkReply::NetworkError conversionTable[] = {
- QNetworkReply::ConnectionRefusedError,
- QNetworkReply::RemoteHostClosedError,
- QNetworkReply::HostNotFoundError,
- QNetworkReply::UnknownNetworkError, // SocketAccessError
- QNetworkReply::UnknownNetworkError, // SocketResourceError
- QNetworkReply::TimeoutError, // SocketTimeoutError
- QNetworkReply::UnknownNetworkError, // DatagramTooLargeError
- QNetworkReply::UnknownNetworkError, // NetworkError
- QNetworkReply::UnknownNetworkError, // AddressInUseError
- QNetworkReply::UnknownNetworkError, // SocketAddressNotAvailableError
- QNetworkReply::UnknownNetworkError, // UnsupportedSocketOperationError
- QNetworkReply::UnknownNetworkError, // UnfinishedSocketOperationError
- QNetworkReply::ProxyAuthenticationRequiredError
- };
- QNetworkReply::NetworkError code;
- if (int(errorCode) >= 0 &&
- uint(errorCode) < (sizeof conversionTable / sizeof conversionTable[0]))
- code = conversionTable[errorCode];
- else
- code = QNetworkReply::UnknownNetworkError;
-#endif
error(errorCode, errorString);
finished();
}
diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
index fb127817d5..fd3b2ec0bc 100644
--- a/src/network/access/qnetworkaccesshttpbackend_p.h
+++ b/src/network/access/qnetworkaccesshttpbackend_p.h
@@ -79,7 +79,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
virtual void setDownstreamLimited(bool b);
@@ -126,7 +125,6 @@ private:
quint64 resumeOffset;
void disconnectFromHttp();
- void setupConnection();
void validateCache(QHttpNetworkRequest &httpRequest, bool &loadedFromCache);
void invalidateCache();
void postRequest();
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 8c17916169..97e79288e0 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -53,6 +53,7 @@
#include "qnetworkaccessftpbackend_p.h"
#include "qnetworkaccessfilebackend_p.h"
#include "qnetworkaccessdebugpipebackend_p.h"
+#include "qnetworkaccesscachebackend_p.h"
#include "qnetworkreplydataimpl_p.h"
#include "qnetworkreplyfileimpl_p.h"
@@ -960,6 +961,26 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
return new QNetworkReplyDataImpl(this, req, op);
}
+ // A request with QNetworkRequest::AlwaysCache does not need any bearer management
+ QNetworkRequest::CacheLoadControl mode =
+ static_cast<QNetworkRequest::CacheLoadControl>(
+ req.attribute(QNetworkRequest::CacheLoadControlAttribute,
+ QNetworkRequest::PreferNetwork).toInt());
+ if (mode == QNetworkRequest::AlwaysCache
+ && (op == QNetworkAccessManager::GetOperation
+ || op == QNetworkAccessManager::HeadOperation)) {
+ // FIXME Implement a QNetworkReplyCacheImpl instead, see QTBUG-15106
+ QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
+ QNetworkReplyImplPrivate *priv = reply->d_func();
+ priv->manager = this;
+ priv->backend = new QNetworkAccessCacheBackend();
+ priv->backend->manager = this->d_func();
+ priv->backend->setParent(reply);
+ priv->backend->reply = priv;
+ priv->setup(op, req, outgoingData);
+ return reply;
+ }
+
#ifndef QT_NO_BEARERMANAGEMENT
// Return a disabled network reply if network access is disabled.
// Except if the scheme is empty or file://.
@@ -1014,16 +1035,8 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
priv->manager = this;
// second step: fetch cached credentials
- if (static_cast<QNetworkRequest::LoadControl>
- (request.attribute(QNetworkRequest::AuthenticationReuseAttribute,
- QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) {
- QNetworkAuthenticationCredential *cred = d->fetchCachedCredentials(url);
- if (cred) {
- url.setUserName(cred->user);
- url.setPassword(cred->password);
- priv->urlForLastAuthentication = url;
- }
- }
+ // This is not done for the time being, we should use signal emissions to request
+ // the credentials from cache.
// third step: find a backend
priv->backend = d->findBackend(op, request);
@@ -1105,7 +1118,9 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend
// don't try the cache for the same URL twice in a row
// being called twice for the same URL means the authentication failed
- if (url != backend->reply->urlForLastAuthentication) {
+ // also called when last URL is empty, e.g. on first call
+ if (backend->reply->urlForLastAuthentication.isEmpty()
+ || url != backend->reply->urlForLastAuthentication) {
QNetworkAuthenticationCredential *cred = fetchCachedCredentials(url, authenticator);
if (cred) {
authenticator->setUser(cred->user);
@@ -1117,7 +1132,7 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend
backend->reply->urlForLastAuthentication = url;
emit q->authenticationRequired(backend->reply->q_func(), authenticator);
- addCredentials(url, authenticator);
+ cacheCredentials(url, authenticator);
}
#ifndef QT_NO_NETWORKPROXY
@@ -1134,7 +1149,7 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac
// possible solution: some tracking inside the authenticator
// or a new function proxyAuthenticationSucceeded(true|false)
if (proxy != backend->reply->lastProxyAuthentication) {
- QNetworkAuthenticationCredential *cred = fetchCachedCredentials(proxy);
+ QNetworkAuthenticationCredential *cred = fetchCachedProxyCredentials(proxy);
if (cred) {
authenticator->setUser(cred->user);
authenticator->setPassword(cred->password);
@@ -1144,10 +1159,10 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac
backend->reply->lastProxyAuthentication = proxy;
emit q->proxyAuthenticationRequired(proxy, authenticator);
- addCredentials(proxy, authenticator);
+ cacheProxyCredentials(proxy, authenticator);
}
-void QNetworkAccessManagerPrivate::addCredentials(const QNetworkProxy &p,
+void QNetworkAccessManagerPrivate::cacheProxyCredentials(const QNetworkProxy &p,
const QAuthenticator *authenticator)
{
Q_ASSERT(authenticator);
@@ -1184,7 +1199,7 @@ void QNetworkAccessManagerPrivate::addCredentials(const QNetworkProxy &p,
}
QNetworkAuthenticationCredential *
-QNetworkAccessManagerPrivate::fetchCachedCredentials(const QNetworkProxy &p,
+QNetworkAccessManagerPrivate::fetchCachedProxyCredentials(const QNetworkProxy &p,
const QAuthenticator *authenticator)
{
QNetworkProxy proxy = p;
@@ -1236,7 +1251,7 @@ QList<QNetworkProxy> QNetworkAccessManagerPrivate::queryProxy(const QNetworkProx
}
#endif
-void QNetworkAccessManagerPrivate::addCredentials(const QUrl &url,
+void QNetworkAccessManagerPrivate::cacheCredentials(const QUrl &url,
const QAuthenticator *authenticator)
{
Q_ASSERT(authenticator);
diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h
index 695842caf9..2c6ee10d05 100644
--- a/src/network/access/qnetworkaccessmanager_p.h
+++ b/src/network/access/qnetworkaccessmanager_p.h
@@ -91,15 +91,15 @@ public:
void createCookieJar() const;
void authenticationRequired(QNetworkAccessBackend *backend, QAuthenticator *authenticator);
- void addCredentials(const QUrl &url, const QAuthenticator *auth);
+ void cacheCredentials(const QUrl &url, const QAuthenticator *auth);
QNetworkAuthenticationCredential *fetchCachedCredentials(const QUrl &url,
const QAuthenticator *auth = 0);
#ifndef QT_NO_NETWORKPROXY
void proxyAuthenticationRequired(QNetworkAccessBackend *backend, const QNetworkProxy &proxy,
QAuthenticator *authenticator);
- void addCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth);
- QNetworkAuthenticationCredential *fetchCachedCredentials(const QNetworkProxy &proxy,
+ void cacheProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth);
+ QNetworkAuthenticationCredential *fetchCachedProxyCredentials(const QNetworkProxy &proxy,
const QAuthenticator *auth = 0);
QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query);
#endif
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 4c4815cd65..010e904b17 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -64,10 +64,10 @@ inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate()
bytesDownloaded(0), lastBytesDownloaded(-1), bytesUploaded(-1), preMigrationDownloaded(-1),
httpStatusCode(0),
state(Idle)
- , downloadBuffer(0)
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadBufferMaximumSize(0)
+ , downloadBuffer(0)
{
}
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 09ec4c2dd6..deb678a5de 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -194,16 +194,12 @@ QT_BEGIN_NAMESPACE
\value CookieLoadControlAttribute
Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
Indicates whether to send 'Cookie' headers in the request.
-
This attribute is set to false by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag}{here} for more information.
-
(This value was introduced in 4.7.)
-
\value CookieSaveControlAttribute
Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
Indicates whether to save 'Cookie' headers received from the server in reply
@@ -211,9 +207,7 @@ QT_BEGIN_NAMESPACE
This attribute is set to false by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag} {here} for more information.
-
(This value was introduced in 4.7.)
\value AuthenticationReuseAttribute
@@ -225,16 +219,12 @@ QT_BEGIN_NAMESPACE
This attribute is set to QNetworkRequest::Manual by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag} {here} for more information.
-
(This value was introduced in 4.7.)
\omitvalue MaximumDownloadBufferSizeAttribute
- (This value was introduced in 4.7.)
\omitvalue DownloadBufferAttribute
- (This value was introduced in 4.7.)
\value User
Special type. Additional information can be passed in
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index f97d833bd5..73f6b94ef1 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -164,9 +164,13 @@ QAuthenticator &QAuthenticator::operator=(const QAuthenticator &other)
{
if (d == other.d)
return *this;
- detach();
- d->user = other.d->user;
- d->password = other.d->password;
+
+ if (d && !d->ref.deref())
+ delete d;
+
+ d = other.d;
+ if (d)
+ d->ref.ref();
return *this;
}
@@ -232,19 +236,21 @@ void QAuthenticator::setUser(const QString &user)
//domain name is present
d->realm.clear();
d->userDomain = user.left(separatorPosn);
- d->user = user.mid(separatorPosn + 1);
+ d->extractedUser = user.mid(separatorPosn + 1);
+ d->user = user;
} else if((separatorPosn = user.indexOf(QLatin1String("@"))) != -1) {
//domain name is present
d->realm.clear();
d->userDomain = user.left(separatorPosn);
- d->user = user.left(separatorPosn);
+ d->extractedUser = user.left(separatorPosn);
+ d->user = user;
} else {
+ d->extractedUser = user;
d->user = user;
d->realm.clear();
d->userDomain.clear();
}
break;
- // For other auth mechanisms, domain name will be part of username
default:
d->user = user;
break;
@@ -1196,7 +1202,7 @@ static QByteArray qCreatev2Hash(const QAuthenticatorPrivate *ctx,
Q_ASSERT(hashKey.size() == 16);
// Assuming the user and domain is always unicode in challenge
QByteArray message =
- qStringAsUcs2Le(ctx->user.toUpper()) +
+ qStringAsUcs2Le(ctx->extractedUser.toUpper()) +
qStringAsUcs2Le(phase3->domainStr);
phase3->v2Hash = qEncodeHmacMd5(hashKey, message);
@@ -1401,8 +1407,8 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
pb.domainStr = ctx->userDomain;
}
- offset = qEncodeNtlmString(pb.user, offset, ctx->user, unicode);
- pb.userStr = ctx->user;
+ offset = qEncodeNtlmString(pb.user, offset, ctx->extractedUser, unicode);
+ pb.userStr = ctx->extractedUser;
offset = qEncodeNtlmString(pb.workstation, offset, ctx->workstation, unicode);
pb.workstationStr = ctx->workstation;
diff --git a/src/network/kernel/qauthenticator_p.h b/src/network/kernel/qauthenticator_p.h
index 4e09360d2a..9f2e607c06 100644
--- a/src/network/kernel/qauthenticator_p.h
+++ b/src/network/kernel/qauthenticator_p.h
@@ -71,6 +71,7 @@ public:
QAtomicInt ref;
QString user;
+ QString extractedUser;
QString password;
QVariantHash options;
Method method;
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index bc5a025915..84f9517d3c 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -426,7 +426,8 @@ template<> void QSharedDataPointer<QNetworkProxyPrivate>::detach()
QNetworkProxy::QNetworkProxy()
: d(0)
{
- globalNetworkProxy()->init();
+ if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy())
+ globalProxy->init();
}
/*!
@@ -441,7 +442,8 @@ QNetworkProxy::QNetworkProxy(ProxyType type, const QString &hostName, quint16 po
const QString &user, const QString &password)
: d(new QNetworkProxyPrivate(type, hostName, port, user, password))
{
- globalNetworkProxy()->init();
+ if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy())
+ globalProxy->init();
}
/*!
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 66cdffb26e..c638e2a94b 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1210,6 +1210,36 @@ void QAbstractSocketPrivate::fetchConnectionParameters()
#endif
}
+
+void QAbstractSocketPrivate::pauseSocketNotifiers(QAbstractSocket *socket)
+{
+ QAbstractSocketEngine *socketEngine = socket->d_func()->socketEngine;
+ if (!socketEngine)
+ return;
+ socket->d_func()->prePauseReadSocketNotifierState = socketEngine->isReadNotificationEnabled();
+ socket->d_func()->prePauseWriteSocketNotifierState = socketEngine->isWriteNotificationEnabled();
+ socket->d_func()->prePauseExceptionSocketNotifierState = socketEngine->isExceptionNotificationEnabled();
+ socketEngine->setReadNotificationEnabled(false);
+ socketEngine->setWriteNotificationEnabled(false);
+ socketEngine->setExceptionNotificationEnabled(false);
+}
+
+void QAbstractSocketPrivate::resumeSocketNotifiers(QAbstractSocket *socket)
+{
+ QAbstractSocketEngine *socketEngine = socket->d_func()->socketEngine;
+ if (!socketEngine)
+ return;
+ socketEngine->setReadNotificationEnabled(socket->d_func()->prePauseReadSocketNotifierState);
+ socketEngine->setWriteNotificationEnabled(socket->d_func()->prePauseWriteSocketNotifierState);
+ socketEngine->setExceptionNotificationEnabled(socket->d_func()->prePauseExceptionSocketNotifierState);
+}
+
+QAbstractSocketEngine* QAbstractSocketPrivate::getSocketEngine(QAbstractSocket *socket)
+{
+ return socket->d_func()->socketEngine;
+}
+
+
/*! \internal
Constructs a new abstract socket of type \a socketType. The \a
diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h
index f610db363e..df09b9275e 100644
--- a/src/network/socket/qabstractsocket.h
+++ b/src/network/socket/qabstractsocket.h
@@ -64,6 +64,7 @@ class QAuthenticator;
class Q_NETWORK_EXPORT QAbstractSocket : public QIODevice
{
Q_OBJECT
+ Q_ENUMS(SocketType NetworkLayerProtocol SocketError SocketState SocketOption)
public:
enum SocketType {
TcpSocket,
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index 6c333d31ca..8ca83fc65e 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -155,6 +155,13 @@ public:
QAbstractSocket::SocketState state;
QAbstractSocket::SocketError socketError;
+
+ bool prePauseReadSocketNotifierState;
+ bool prePauseWriteSocketNotifierState;
+ bool prePauseExceptionSocketNotifierState;
+ static void pauseSocketNotifiers(QAbstractSocket*);
+ static void resumeSocketNotifiers(QAbstractSocket*);
+ static QAbstractSocketEngine* getSocketEngine(QAbstractSocket*);
};
QT_END_NAMESPACE
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 560f5f6f87..c218d89ea4 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -119,7 +119,7 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName)
// subsequent call to accept will not block in any case
//
// This change can be removed once more generic fix to select thread
- // syncronization problem is implemented.
+ // synchronization problem is implemented.
int flags = fcntl(listenSocket, F_GETFL, 0);
if (-1 == flags
|| -1 == (fcntl(listenSocket, F_SETFL, flags | O_NONBLOCK))) {
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index f952cee574..dbf443eece 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -714,6 +714,8 @@ bool QNativeSocketEnginePrivate::nativeBind(const QHostAddress &a, quint16 port)
address = QHostAddress(QHostAddress::Any);
}
break;
+ default:
+ break;
}
struct sockaddr_in sockAddrIPv4;
@@ -799,7 +801,7 @@ int QNativeSocketEnginePrivate::nativeAccept()
{
int acceptedDescriptor = WSAAccept(socketDescriptor, 0,0,0,0);
if (acceptedDescriptor != -1 && QAbstractEventDispatcher::instance()) {
- // Becuase of WSAAsyncSelect() WSAAccept returns a non blocking socket
+ // Because of WSAAsyncSelect() WSAAccept returns a non blocking socket
// with the same attributes as the listening socket including the current
// WSAAsyncSelect(). To be able to change the socket to blocking mode the
// WSAAsyncSelect() call must be cancled.
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index c9f421fc3c..a7527208c2 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -2035,6 +2035,20 @@ void QSslSocketPrivate::createPlainSocket(QIODevice::OpenMode openMode)
q->setReadBufferSize(readBufferMaxSize);
}
+void QSslSocketPrivate::pauseSocketNotifiers(QSslSocket *socket)
+{
+ if (!socket->d_func()->plainSocket)
+ return;
+ QAbstractSocketPrivate::pauseSocketNotifiers(socket->d_func()->plainSocket);
+}
+
+void QSslSocketPrivate::resumeSocketNotifiers(QSslSocket *socket)
+{
+ if (!socket->d_func()->plainSocket)
+ return;
+ QAbstractSocketPrivate::resumeSocketNotifiers(socket->d_func()->plainSocket);
+}
+
/*!
\internal
*/
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 2910538892..426b07ae21 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -51,6 +51,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qdir.h>
#include <QtCore/qdiriterator.h>
+#include <QtCore/qelapsedtimer.h>
#include <QtCore/qfile.h>
#include <QtCore/qfileinfo.h>
#include <QtCore/qmutex.h>
@@ -574,7 +575,7 @@ void QSslSocketPrivate::resetDefaultCiphers()
#if defined(Q_OS_SYMBIAN)
CSymbianCertificateRetriever::CSymbianCertificateRetriever() : CActive(CActive::EPriorityStandard),
- iSequenceError(KErrNone)
+ iCertificatePtr(0,0,0), iSequenceError(KErrNone)
{
}
@@ -618,6 +619,11 @@ void CSymbianCertificateRetriever::doThreadEntryL()
iCertStore = CUnifiedCertStore::NewLC(qt_s60GetRFs(), EFalse);
iCertFilter = CCertAttributeFilter::NewLC();
+ // only interested in CA certs
+ iCertFilter->SetOwnerType(ECACertificate);
+ // only interested in X.509 format (we don't support WAP formats)
+ iCertFilter->SetFormat(EX509Certificate);
+
// Kick off the sequence by initializing the cert store
iState = Initializing;
iCertStore->Initialize(iStatus);
@@ -637,6 +643,7 @@ void CSymbianCertificateRetriever::doThreadEntryL()
TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams)
{
+ User::SetCritical(User::EProcessCritical);
CTrapCleanup* cleanupStack = CTrapCleanup::New();
CSymbianCertificateRetriever* self = (CSymbianCertificateRetriever*) aParams;
@@ -658,7 +665,17 @@ void CSymbianCertificateRetriever::ConstructL()
void CSymbianCertificateRetriever::DoCancel()
{
- // We never cancel the sequence
+ switch(iState) {
+ case Initializing:
+ iCertStore->CancelInitialize();
+ break;
+ case Listing:
+ iCertStore->CancelList();
+ break;
+ case RetrievingCertificates:
+ iCertStore->CancelGetCert();
+ break;
+ }
}
TInt CSymbianCertificateRetriever::RunError(TInt aError)
@@ -671,37 +688,51 @@ TInt CSymbianCertificateRetriever::RunError(TInt aError)
void CSymbianCertificateRetriever::GetCertificateL()
{
- CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex];
- iCertificateData.resize(certInfo->Size());
- TPtr8 des((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
- iCertStore->Retrieve(*certInfo, des, iStatus);
- iState = RetrievingCertificates;
- SetActive();
+ if (iCurrentCertIndex < iCertInfos.Count()) {
+ CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex++];
+ iCertificateData = QByteArray();
+ QT_TRYCATCH_LEAVING(iCertificateData.resize(certInfo->Size()));
+ iCertificatePtr.Set((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "getting " << qt_TDesC2QString(certInfo->Label()) << " size=" << certInfo->Size();
+ qDebug() << "format=" << certInfo->CertificateFormat();
+ qDebug() << "ownertype=" << certInfo->CertificateOwnerType();
+ qDebug() << "type=" << hex << certInfo->Type().iUid;
+#endif
+ iCertStore->Retrieve(*certInfo, iCertificatePtr, iStatus);
+ iState = RetrievingCertificates;
+ SetActive();
+ } else {
+ //reached end of list
+ CActiveScheduler::Stop();
+ }
}
void CSymbianCertificateRetriever::RunL()
{
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "CSymbianCertificateRetriever::RunL status " << iStatus.Int() << " count " << iCertInfos.Count() << " index " << iCurrentCertIndex;
+#endif
switch (iState) {
case Initializing:
+ User::LeaveIfError(iStatus.Int()); // initialise fail means pointless to continue
iState = Listing;
iCertStore->List(iCertInfos, *iCertFilter, iStatus);
SetActive();
break;
case Listing:
+ User::LeaveIfError(iStatus.Int()); // listing fail means pointless to continue
iCurrentCertIndex = 0;
GetCertificateL();
break;
case RetrievingCertificates:
- iCertificates->append(iCertificateData);
- iCertificateData = QByteArray();
- iCurrentCertIndex++;
- if (iCurrentCertIndex < iCertInfos.Count())
- GetCertificateL();
+ if (iStatus.Int() == KErrNone)
+ iCertificates->append(iCertificateData);
else
- // Stop the scheduler to return to the thread entry function
- CActiveScheduler::Stop();
+ qWarning() << "CSymbianCertificateRetriever: failed to retreive a certificate, error " << iStatus.Int();
+ GetCertificateL();
break;
}
}
@@ -710,6 +741,10 @@ void CSymbianCertificateRetriever::RunL()
QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
{
ensureInitialized();
+#ifdef QSSLSOCKET_DEBUG
+ QElapsedTimer timer;
+ timer.start();
+#endif
QList<QSslCertificate> systemCerts;
#if defined(Q_OS_MAC)
CFArrayRef cfCerts;
@@ -808,10 +843,18 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
retriever->GetCertificates(certs);
foreach (const QByteArray &encodedCert, certs) {
QSslCertificate cert(encodedCert, QSsl::Der);
- if (!cert.isNull())
+ if (!cert.isNull()) {
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "imported certificate: " << cert.issuerInfo(QSslCertificate::CommonName);
+#endif
systemCerts.append(cert);
+ }
}
#endif
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "systemCaCertificates retrieval time " << timer.elapsed() << "ms";
+ qDebug() << "imported " << systemCerts.count() << " certificates";
+#endif
return systemCerts;
}
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index dec98ae5f9..b59a6c9999 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -165,6 +165,7 @@ private:
CCertAttributeFilter* iCertFilter;
TInt iCurrentCertIndex;
QByteArray iCertificateData;
+ TPtr8 iCertificatePtr;
QList<QByteArray>* iCertificates;
TInt iSequenceError;
};
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index 72b3ef73a0..94f5f3936b 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -142,6 +142,8 @@ public:
// The socket itself, including private slots.
QTcpSocket *plainSocket;
void createPlainSocket(QIODevice::OpenMode openMode);
+ static void pauseSocketNotifiers(QSslSocket*);
+ static void resumeSocketNotifiers(QSslSocket*);
void _q_connectedSlot();
void _q_hostFoundSlot();
void _q_disconnectedSlot();
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
index 559a6fd62d..167a7d26bd 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
@@ -63,8 +63,9 @@ QGLRect QGL2PEXVertexArray::boundingRect() const
void QGL2PEXVertexArray::addClosingLine(int index)
{
- if (QPointF(vertexArray.at(index)) != QPointF(vertexArray.last()))
- vertexArray.add(vertexArray.at(index));
+ QPointF point(vertexArray.at(index));
+ if (point != QPointF(vertexArray.last()))
+ vertexArray.add(point);
}
void QGL2PEXVertexArray::addCentroid(const QVectorPath &path, int subPathIndex)
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
index 46029b9aea..b8c1018f59 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
@@ -93,7 +93,7 @@ struct QGLRect
GLfloat right;
GLfloat bottom;
- operator QRectF() {return QRectF(left, top, right-left, bottom-top);}
+ operator QRectF() const {return QRectF(left, top, right-left, bottom-top);}
};
class QGL2PEXVertexArray
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
index d24f3023ef..fa11dd72e7 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
@@ -72,7 +72,7 @@
The position shaders for brushes look scary. This is because many of the
calculations which logically belong in the fragment shader have been moved
into the vertex shader to improve performance. This is why the position
- calculation is in a seperate shader. Not only does it calculate the
+ calculation is in a separate shader. Not only does it calculate the
position, but it also calculates some data to be passed to the fragment
shader as a varying. It is optimal to move as much of the calculation as
possible into the vertex shader as this is executed less often.
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 14c26b9bea..85e4eabac5 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -872,6 +872,35 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
// Tag it for later so that if the same path is drawn twice, it is assumed to be static and thus cachable
path.makeCacheable();
+ if (!device->format().stencil()) {
+ // If there is no stencil buffer, triangulate the path instead.
+
+ QRectF bbox = path.controlPointRect();
+ // If the path doesn't fit within these limits, it is possible that the triangulation will fail.
+ bool withinLimits = (bbox.left() > -0x8000 * inverseScale)
+ && (bbox.right() < 0x8000 * inverseScale)
+ && (bbox.top() > -0x8000 * inverseScale)
+ && (bbox.bottom() < 0x8000 * inverseScale);
+ if (withinLimits) {
+ QTriangleSet polys = qTriangulate(path, QTransform().scale(1 / inverseScale, 1 / inverseScale));
+
+ QVarLengthArray<float> vertices(polys.vertices.size());
+ for (int i = 0; i < polys.vertices.size(); ++i)
+ vertices[i] = float(inverseScale * polys.vertices.at(i));
+
+ prepareForDraw(currentBrush.isOpaque());
+ setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, vertices.constData());
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint)
+ glDrawElements(GL_TRIANGLES, polys.indices.size(), GL_UNSIGNED_INT, polys.indices.data());
+ else
+ glDrawElements(GL_TRIANGLES, polys.indices.size(), GL_UNSIGNED_SHORT, polys.indices.data());
+ } else {
+ // We can't handle big, concave painter paths with OpenGL without stencil buffer.
+ qWarning("Painter path exceeds +/-32767 pixels.");
+ }
+ return;
+ }
+
// The path is too complicated & needs the stencil technique
vertexCoordinateArray.clear();
vertexCoordinateArray.addPath(path, inverseScale, false);
@@ -1350,8 +1379,8 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
ensureActive();
- QFontEngineGlyphCache::Type glyphType = textItem->fontEngine->glyphFormat >= 0
- ? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
+ QFontEngineGlyphCache::Type glyphType = textItem->fontEngine()->glyphFormat >= 0
+ ? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat)
: d->glyphCacheType;
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
if (d->device->alphaRequested() || state()->matrix.type() > QTransform::TxTranslate
@@ -1430,7 +1459,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
{
QStaticTextItem staticTextItem;
staticTextItem.chars = const_cast<QChar *>(ti.chars);
- staticTextItem.fontEngine = ti.fontEngine;
+ staticTextItem.setFontEngine(ti.fontEngine);
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
staticTextItem.numGlyphs = glyphs.size();
@@ -1476,18 +1505,19 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(cacheKey, glyphType, QTransform());
- if (!cache || cache->cacheType() != glyphType) {
+ (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform());
+ if (!cache || cache->cacheType() != glyphType || cache->context() == 0) {
cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform());
- staticTextItem->fontEngine->setGlyphCache(cacheKey, cache);
+ staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache);
+ cache->insert(ctx, cache);
}
bool recreateVertexArrays = false;
if (staticTextItem->userDataNeedsUpdate)
recreateVertexArrays = true;
- else if (staticTextItem->userData == 0)
+ else if (staticTextItem->userData() == 0)
recreateVertexArrays = true;
- else if (staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData)
+ else if (staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData)
recreateVertexArrays = true;
// We only need to update the cache with new glyphs if we are actually going to recreate the vertex arrays.
@@ -1495,8 +1525,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
// cache so this text is performed before we test if the cache size has changed.
if (recreateVertexArrays) {
cache->setPaintEnginePrivate(this);
- cache->populate(staticTextItem->fontEngine, staticTextItem->numGlyphs, staticTextItem->glyphs,
- staticTextItem->glyphPositions);
+ cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ staticTextItem->glyphs, staticTextItem->glyphPositions);
cache->fillInPendingGlyphs();
}
@@ -1517,14 +1547,14 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
if (staticTextItem->useBackendOptimizations) {
QOpenGLStaticTextUserData *userData = 0;
- if (staticTextItem->userData == 0
- || staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData) {
+ if (staticTextItem->userData() == 0
+ || staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData) {
userData = new QOpenGLStaticTextUserData();
staticTextItem->setUserData(userData);
} else {
- userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData);
+ userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData());
}
// Use cache if backend optimizations is turned on
@@ -1543,7 +1573,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
vertexCoordinates->clear();
textureCoordinates->clear();
- bool supportsSubPixelPositions = staticTextItem->fontEngine->supportsSubPixelPositions();
+ bool supportsSubPixelPositions = staticTextItem->fontEngine()->supportsSubPixelPositions();
for (int i=0; i<staticTextItem->numGlyphs; ++i) {
QFixed subPixelPosition;
if (supportsSubPixelPositions)
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index b8576cb18f..7954d77f37 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -54,11 +54,11 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled;
#endif
QGLTextureGlyphCache::QGLTextureGlyphCache(const QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix)
- : QImageTextureGlyphCache(type, matrix)
+ : QImageTextureGlyphCache(type, matrix), QGLContextGroupResourceBase()
, ctx(context)
, pex(0)
- , m_filterMode(Nearest)
, m_blitProgram(0)
+ , m_filterMode(Nearest)
{
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
qDebug(" -> QGLTextureGlyphCache() %p for context %p.", this, ctx);
@@ -208,8 +208,8 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
{
QString source;
- source.append(qglslMainWithTexCoordsVertexShader);
- source.append(qglslUntransformedPositionVertexShader);
+ source.append(QLatin1String(qglslMainWithTexCoordsVertexShader));
+ source.append(QLatin1String(qglslUntransformedPositionVertexShader));
QGLShader *vertexShader = new QGLShader(QGLShader::Vertex, m_blitProgram);
vertexShader->compileSourceCode(source);
@@ -219,8 +219,8 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
{
QString source;
- source.append(qglslMainFragmentShader);
- source.append(qglslImageSrcFragmentShader);
+ source.append(QLatin1String(qglslMainFragmentShader));
+ source.append(QLatin1String(qglslImageSrcFragmentShader));
QGLShader *fragmentShader = new QGLShader(QGLShader::Fragment, m_blitProgram);
fragmentShader->compileSourceCode(source);
@@ -238,10 +238,10 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_textureCoordinateArray);
m_blitProgram->bind();
- QGLContextPrivate* ctx_d = const_cast<QGLContextPrivate *>(ctx->d_func());
- ctx_d->setVertexAttribArrayEnabled(QT_VERTEX_COORDS_ATTR, true);
- ctx_d->setVertexAttribArrayEnabled(QT_TEXTURE_COORDS_ATTR, true);
- ctx_d->setVertexAttribArrayEnabled(QT_OPACITY_ATTR, false);
+ m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR));
+ m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR));
+ m_blitProgram->disableAttributeArray(int(QT_OPACITY_ATTR));
+
blitProgram = m_blitProgram;
} else {
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index f75cf683af..572da82ef1 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -98,7 +98,7 @@ struct QGLGlyphTexture
int m_height;
};
-class Q_OPENGL_EXPORT QGLTextureGlyphCache : public QImageTextureGlyphCache
+class Q_OPENGL_EXPORT QGLTextureGlyphCache : public QImageTextureGlyphCache, public QGLContextGroupResourceBase
{
public:
QGLTextureGlyphCache(const QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix);
@@ -140,6 +140,8 @@ public:
FilterMode filterMode() const { return m_filterMode; }
void setFilterMode(FilterMode m) { m_filterMode = m; }
+ void freeResource(void *) { ctx = 0; }
+
private:
QGLContextGroupResource<QGLGlyphTexture> m_textureResource;
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index f316db6e7b..cf45239958 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -136,7 +136,12 @@ Q_GLOBAL_STATIC(QGLDefaultOverlayFormat, defaultOverlayFormatInstance)
Q_GLOBAL_STATIC(QGLSignalProxy, theSignalProxy)
QGLSignalProxy *QGLSignalProxy::instance()
{
- return theSignalProxy();
+ QGLSignalProxy *proxy = theSignalProxy();
+ if (proxy && proxy->thread() != qApp->thread()) {
+ if (proxy->thread() == QThread::currentThread())
+ proxy->moveToThread(qApp->thread());
+ }
+ return proxy;
}
@@ -1650,12 +1655,23 @@ const QGLContext *qt_gl_transfer_context(const QGLContext *ctx)
return 0;
}
+QGLContextPrivate::QGLContextPrivate(QGLContext *context)
+ : internal_context(false)
+ , q_ptr(context)
+{
+ group = new QGLContextGroup(context);
+ texture_destroyer = new QGLTextureDestroyer;
+ texture_destroyer->moveToThread(qApp->thread());
+}
+
QGLContextPrivate::~QGLContextPrivate()
{
if (!group->m_refs.deref()) {
Q_ASSERT(group->context() == q_ptr);
delete group;
}
+
+ delete texture_destroyer;
}
void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format)
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index 2ac4cb6b9a..4f10e5c53a 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -425,6 +425,7 @@ private:
friend class QGLSharedResourceGuard;
friend class QGLPixmapBlurFilter;
friend class QGLExtensions;
+ friend class QGLTexture;
friend QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags();
#ifdef Q_WS_MAC
public:
diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp
index 27f7ad9a41..8902099cf2 100644
--- a/src/opengl/qgl_egl.cpp
+++ b/src/opengl/qgl_egl.cpp
@@ -88,7 +88,7 @@ void qt_eglproperties_set_glformat(QEglProperties& eglProperties, const QGLForma
// put in the list before 32-bit configs. So, to make sure 16-bit is preffered over 32-bit,
// we must set the red/green/blue sizes to zero. This has an unfortunate consequence that
// if the application sets the red/green/blue size to 5/6/5 on the QGLFormat, they will
- // probably get a 32-bit config, even when there's an RGB565 config avaliable. Oh well.
+ // probably get a 32-bit config, even when there's an RGB565 config available. Oh well.
// Now normalize the values so -1 becomes 0
redSize = redSize > 0 ? redSize : 0;
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 8c7f15cc4e..8285f06379 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -319,6 +319,7 @@ private:
};
class QGLTexture;
+class QGLTextureDestroyer;
// This probably needs to grow to GL_MAX_VERTEX_ATTRIBS, but 3 is ok for now as that's
// all the GL2 engine uses:
@@ -330,7 +331,7 @@ class QGLContextPrivate
{
Q_DECLARE_PUBLIC(QGLContext)
public:
- explicit QGLContextPrivate(QGLContext *context) : internal_context(false), q_ptr(context) {group = new QGLContextGroup(context);}
+ explicit QGLContextPrivate(QGLContext *context);
~QGLContextPrivate();
QGLTexture *bindTexture(const QImage &image, GLenum target, GLint format,
QGLContext::BindOptions options);
@@ -430,6 +431,7 @@ public:
GLuint default_fbo;
QPaintEngine *active_engine;
QHash<QGLContextResourceBase *, void *> m_resources;
+ QGLTextureDestroyer *texture_destroyer;
bool vertexAttributeArraysEnabledState[QT_GL_VERTEX_ARRAY_TRACKED_COUNT];
@@ -447,20 +449,6 @@ public:
static void setCurrentContext(QGLContext *context);
};
-// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
-class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
-{
- Q_OBJECT
-public:
- QGLSignalProxy() : QObject() {}
- void emitAboutToDestroyContext(const QGLContext *context) {
- emit aboutToDestroyContext(context);
- }
- static QGLSignalProxy *instance();
-Q_SIGNALS:
- void aboutToDestroyContext(const QGLContext *context);
-};
-
Q_DECLARE_OPERATORS_FOR_FLAGS(QGLExtensions::Extensions)
// Temporarily make a context current if not already current or
@@ -503,6 +491,56 @@ private:
QGLContext *m_ctx;
};
+class QGLTextureDestroyer : public QObject
+{
+ Q_OBJECT
+public:
+ QGLTextureDestroyer() : QObject() {
+ qRegisterMetaType<GLuint>("GLuint");
+ connect(this, SIGNAL(freeTexture(QGLContext *, QPixmapData *, GLuint)),
+ this, SLOT(freeTexture_slot(QGLContext *, QPixmapData *, GLuint)));
+ }
+ void emitFreeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+ emit freeTexture(context, boundPixmap, id);
+ }
+
+Q_SIGNALS:
+ void freeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id);
+
+private slots:
+ void freeTexture_slot(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+#if defined(Q_WS_X11)
+ if (boundPixmap) {
+ QGLContext *oldContext = const_cast<QGLContext *>(QGLContext::currentContext());
+ context->makeCurrent();
+ // Although glXReleaseTexImage is a glX call, it must be called while there
+ // is a current context - the context the pixmap was bound to a texture in.
+ // Otherwise the release doesn't do anything and you get BadDrawable errors
+ // when you come to delete the context.
+ QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+ glDeleteTextures(1, &id);
+ oldContext->makeCurrent();
+ return;
+ }
+#endif
+ QGLShareContextScope scope(context);
+ glDeleteTextures(1, &id);
+ }
+};
+
+// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
+class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
+{
+ Q_OBJECT
+public:
+ void emitAboutToDestroyContext(const QGLContext *context) {
+ emit aboutToDestroyContext(context);
+ }
+ static QGLSignalProxy *instance();
+Q_SIGNALS:
+ void aboutToDestroyContext(const QGLContext *context);
+};
+
class QGLTexture {
public:
QGLTexture(QGLContext *ctx = 0, GLuint tx_id = 0, GLenum tx_target = GL_TEXTURE_2D,
@@ -519,16 +557,10 @@ public:
~QGLTexture() {
if (options & QGLContext::MemoryManagedBindOption) {
Q_ASSERT(context);
- QGLShareContextScope scope(context);
-#if defined(Q_WS_X11)
- // Although glXReleaseTexImage is a glX call, it must be called while there
- // is a current context - the context the pixmap was bound to a texture in.
- // Otherwise the release doesn't do anything and you get BadDrawable errors
- // when you come to delete the context.
- if (boundPixmap)
- QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+#if !defined(Q_WS_X11)
+ QPixmapData *boundPixmap = 0;
#endif
- glDeleteTextures(1, &id);
+ context->d_ptr->texture_destroyer->emitFreeTexture(context, boundPixmap, id);
}
}
diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp
index 1f7e60a3a9..21b1ab6dba 100644
--- a/src/opengl/qgl_x11egl.cpp
+++ b/src/opengl/qgl_x11egl.cpp
@@ -376,7 +376,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmap *pixmap, cons
checkedForEglImageTFP = true;
// We need to be able to create an EGLImage from a native pixmap, which was split
- // into a seperate EGL extension, EGL_KHR_image_pixmap. It is possible to have
+ // into a separate EGL extension, EGL_KHR_image_pixmap. It is possible to have
// eglCreateImageKHR & eglDestroyImageKHR without support for pixmaps, so we must
// check we have the EGLImage from pixmap functionality.
if (QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) {
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 688167880f..8915b5e4af 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -324,6 +324,10 @@ void QGLFBOGLPaintDevice::setFBO(QGLFramebufferObject* f,
fboFormat.setStencil(true);
} else if (attachment == QGLFramebufferObject::Depth) {
fboFormat.setDepth(true);
+ fboFormat.setStencil(false);
+ } else {
+ fboFormat.setDepth(false);
+ fboFormat.setStencil(false);
}
GLenum format = f->format().internalTextureFormat();
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 74b6b9af45..a04d93093e 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4918,7 +4918,7 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
d->flushDrawQueue();
// make sure the glyphs we want to draw are in the cache
- qt_glyph_cache()->cacheGlyphs(d->device->context(), textItem->fontEngine, textItem->glyphs,
+ qt_glyph_cache()->cacheGlyphs(d->device->context(), textItem->fontEngine(), textItem->glyphs,
textItem->numGlyphs);
d->setGradientOps(Qt::SolidPattern, QRectF()); // turns off gradient ops
@@ -4941,13 +4941,13 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- bool antialias = !(textItem->fontEngine->fontDef.styleStrategy & QFont::NoAntialias)
+ bool antialias = !(textItem->fontEngine()->fontDef.styleStrategy & QFont::NoAntialias)
&& (d->matrix.type() > QTransform::TxTranslate);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
for (int i=0; i< textItem->numGlyphs; ++i) {
- QGLGlyphCoord *g = qt_glyph_cache()->lookup(textItem->fontEngine, textItem->glyphs[i]);
+ QGLGlyphCoord *g = qt_glyph_cache()->lookup(textItem->fontEngine(), textItem->glyphs[i]);
// we don't cache glyphs with no width/height
if (!g)
@@ -5003,7 +5003,7 @@ void QOpenGLPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
{
QStaticTextItem staticTextItem;
staticTextItem.chars = const_cast<QChar *>(ti.chars);
- staticTextItem.fontEngine = ti.fontEngine;
+ staticTextItem.setFontEngine(ti.fontEngine);
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
staticTextItem.numGlyphs = glyphs.size();
diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp
index 2c11a0b441..5cbc836791 100644
--- a/src/opengl/qpixmapdata_x11gl_egl.cpp
+++ b/src/opengl/qpixmapdata_x11gl_egl.cpp
@@ -93,7 +93,7 @@ public:
if (rgbConfig == argbConfig)
argbContext = rgbContext;
- // Otherwise, create a seperate context to be used for ARGB pixmaps:
+ // Otherwise, create a separate context to be used for ARGB pixmaps:
if (!argbContext) {
argbContext = new QEglContext;
argbContext->setConfig(argbConfig);
@@ -314,7 +314,7 @@ QPaintEngine* QX11GLPixmapData::paintEngine() const
Q_ASSERT(ctx->d_func()->eglContext == 0);
ctx->d_func()->eglContext = hasAlphaChannel() ? sharedContexts()->argbContext : sharedContexts()->rgbContext;
- // While we use a seperate QGLContext for each pixmap, the underlying QEglContext is
+ // While we use a separate QGLContext for each pixmap, the underlying QEglContext is
// the same. So we must use a "fake" QGLContext and fool the texture cache into thinking
// each pixmap's QGLContext is sharing with this central one. The only place this is
// going to fail is where we the underlying EGL RGB and ARGB contexts aren't sharing.
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index ce9d11a307..aea203f9c8 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -55,6 +55,8 @@
#include <QtGui/private/qfontengine_p.h>
#include <QtGui/private/qpainterpath_p.h>
#include <QtGui/private/qstatictext_p.h>
+#include <QtGui/QApplication>
+#include <QtGui/QDesktopWidget>
#include <QtCore/qmath.h>
#include <QDebug>
#include <QSet>
@@ -3060,6 +3062,21 @@ void qt_vg_drawVGImageStencil
vgDrawImage(vgImg);
}
+bool QVGPaintEngine::canVgWritePixels(const QImage &image) const
+{
+ Q_D(const QVGPaintEngine);
+ // vgWritePixels ignores masking, blending and xforms so we can only use it if
+ // ALL of the following conditions are true:
+ // - It is a simple translate, or a scale of -1 on the y-axis (inverted)
+ // - The opacity is totally opaque
+ // - The composition mode is "source" OR "source over" provided the image is opaque
+ return ( d->imageTransform.type() <= QTransform::TxScale
+ && d->imageTransform.m11() == 1.0 && qAbs(d->imageTransform.m22()) == 1.0)
+ && d->opacity == 1.0f
+ && (d->blendMode == VG_BLEND_SRC || (d->blendMode == VG_BLEND_SRC_OVER &&
+ !image.hasAlphaChannel()));
+}
+
void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
QPixmapData *pd = pm.pixmapData();
@@ -3074,9 +3091,18 @@ void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF
drawVGImage(d, r, vgpd->toVGImage(), vgpd->size(), sr);
else
drawVGImage(d, r, vgpd->toVGImage(d->opacity), vgpd->size(), sr);
- } else {
- drawImage(r, *(pd->buffer()), sr, Qt::AutoColor);
+
+ if(!vgpd->failedToAlloc)
+ return;
+
+ // try to reallocate next time if reasonable small pixmap
+ QSize screenSize = QApplication::desktop()->screenGeometry().size();
+ if (pm.size().width() <= screenSize.width()
+ && pm.size().height() <= screenSize.height())
+ vgpd->failedToAlloc = false;
}
+
+ drawImage(r, *(pd->buffer()), sr, Qt::AutoColor);
}
void QVGPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pm)
@@ -3093,9 +3119,18 @@ void QVGPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pm)
drawVGImage(d, pos, vgpd->toVGImage());
else
drawVGImage(d, pos, vgpd->toVGImage(d->opacity));
- } else {
- drawImage(pos, *(pd->buffer()));
+
+ if (!vgpd->failedToAlloc)
+ return;
+
+ // try to reallocate next time if reasonable small pixmap
+ QSize screenSize = QApplication::desktop()->screenGeometry().size();
+ if (pm.size().width() <= screenSize.width()
+ && pm.size().height() <= screenSize.height())
+ vgpd->failedToAlloc = false;
}
+
+ drawImage(pos, *(pd->buffer()));
}
void QVGPaintEngine::drawImage
@@ -3116,9 +3151,31 @@ void QVGPaintEngine::drawImage
QRectF(QPointF(0, 0), sr.size()));
}
} else {
- // Monochrome images need to use the vgChildImage() path.
- vgImg = toVGImage(image, flags);
- drawVGImage(d, r, vgImg, image.size(), sr);
+ if (canVgWritePixels(image) && (r.size() == sr.size()) && !flags) {
+ // Optimization for straight blits, no blending
+ int x = sr.x();
+ int y = sr.y();
+ int bpp = image.depth() >> 3; // bytes
+ int offset = 0;
+ int bpl = image.bytesPerLine();
+ if (d->imageTransform.m22() < 0) {
+ // inverted
+ offset = ((y + sr.height()) * bpl) - ((image.width() - x) * bpp);
+ bpl = -bpl;
+ } else {
+ offset = (y * bpl) + (x * bpp);
+ }
+ const uchar *bits = image.constBits() + offset;
+
+ QPointF mapped = d->imageTransform.map(r.topLeft());
+ vgWritePixels(bits, bpl, qt_vg_image_to_vg_format(image.format()),
+ mapped.x(), mapped.y() - sr.height(), r.width(), r.height());
+ return;
+ } else {
+ // Monochrome images need to use the vgChildImage() path.
+ vgImg = toVGImage(image, flags);
+ drawVGImage(d, r, vgImg, image.size(), sr);
+ }
}
vgDestroyImage(vgImg);
}
@@ -3127,10 +3184,21 @@ void QVGPaintEngine::drawImage(const QPointF &pos, const QImage &image)
{
Q_D(QVGPaintEngine);
VGImage vgImg;
- if (d->simpleTransform || d->opacity == 1.0f)
+ if (canVgWritePixels(image)) {
+ // Optimization for straight blits, no blending
+ bool inverted = (d->imageTransform.m22() < 0);
+ const uchar *bits = inverted ? image.constBits() + image.byteCount() : image.constBits();
+ int bpl = inverted ? -image.bytesPerLine() : image.bytesPerLine();
+
+ QPointF mapped = d->imageTransform.map(pos);
+ vgWritePixels(bits, bpl, qt_vg_image_to_vg_format(image.format()),
+ mapped.x(), mapped.y() - image.height(), image.width(), image.height());
+ return;
+ } else if (d->simpleTransform || d->opacity == 1.0f) {
vgImg = toVGImage(image);
- else
+ } else {
vgImg = toVGImageWithOpacity(image, d->opacity);
+ }
drawVGImage(d, pos, vgImg);
vgDestroyImage(vgImg);
}
@@ -3407,7 +3475,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
- drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine,
+ drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine(),
QPointF(0, 0), textItem->glyphPositions);
}
@@ -3610,6 +3678,7 @@ void QVGPaintEngine::restoreState(QPaintEngine::DirtyFlags dirty)
d->maskIsSet = false;
d->scissorMask = false;
d->maskRect = QRect();
+ d->scissorDirty = true;
clipEnabledChanged();
}
diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h
index 75cf053d6c..dc981376cb 100644
--- a/src/openvg/qpaintengine_vg_p.h
+++ b/src/openvg/qpaintengine_vg_p.h
@@ -170,6 +170,7 @@ private:
bool isDefaultClipRegion(const QRegion& region);
bool isDefaultClipRect(const QRect& rect);
bool clearRect(const QRectF &rect, const QColor &color);
+ bool canVgWritePixels(const QImage &image) const;
};
QT_END_NAMESPACE
diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp
index e8ec3338d2..509882bf8c 100644
--- a/src/openvg/qpixmapdata_vg.cpp
+++ b/src/openvg/qpixmapdata_vg.cpp
@@ -65,6 +65,7 @@ QVGPixmapData::QVGPixmapData(PixelType type)
recreate = true;
inImagePool = false;
inLRU = false;
+ failedToAlloc = false;
#if !defined(QT_NO_EGL)
context = 0;
qt_vg_register_pixmap(this);
@@ -155,6 +156,9 @@ void QVGPixmapData::resize(int wid, int ht)
void QVGPixmapData::fromImage
(const QImage &image, Qt::ImageConversionFlags flags)
{
+ if(image.isNull())
+ return;
+
QImage img = image;
createPixmapForImage(img, flags, false);
}
@@ -203,10 +207,19 @@ void QVGPixmapData::createPixmapForImage(QImage &image, Qt::ImageConversionFlags
else
resize(image.width(), image.height());
- if (inPlace && image.data_ptr()->convertInPlace(sourceFormat(), flags))
+ QImage::Format format = sourceFormat();
+ int d = image.depth();
+ if (d == 1 || d == 16 || d == 24 || (d == 32 && !image.hasAlphaChannel()))
+ format = QImage::Format_RGB32;
+ else if (!(flags & Qt::NoOpaqueDetection) && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels())
+ format = sourceFormat();
+ else
+ format = QImage::Format_RGB32;
+
+ if (inPlace && image.data_ptr()->convertInPlace(format, flags))
source = image;
else
- source = image.convertToFormat(sourceFormat());
+ source = image.convertToFormat(format);
recreate = true;
}
@@ -278,7 +291,7 @@ QPaintEngine* QVGPixmapData::paintEngine() const
VGImage QVGPixmapData::toVGImage()
{
- if (!isValid())
+ if (!isValid() || failedToAlloc)
return VG_INVALID_HANDLE;
#if !defined(QT_NO_EGL)
@@ -294,11 +307,13 @@ VGImage QVGPixmapData::toVGImage()
if (vgImage == VG_INVALID_HANDLE) {
vgImage = QVGImagePool::instance()->createImageForPixmap
- (VG_sARGB_8888_PRE, w, h, VG_IMAGE_QUALITY_FASTER, this);
+ (qt_vg_image_to_vg_format(source.format()), w, h, VG_IMAGE_QUALITY_FASTER, this);
// Bail out if we run out of GPU memory - try again next time.
- if (vgImage == VG_INVALID_HANDLE)
+ if (vgImage == VG_INVALID_HANDLE) {
+ failedToAlloc = true;
return VG_INVALID_HANDLE;
+ }
inImagePool = true;
} else if (inImagePool) {
@@ -309,7 +324,7 @@ VGImage QVGPixmapData::toVGImage()
vgImageSubData
(vgImage,
source.constBits(), source.bytesPerLine(),
- VG_sARGB_8888_PRE, 0, 0, w, h);
+ qt_vg_image_to_vg_format(source.format()), 0, 0, w, h);
}
recreate = false;
diff --git a/src/openvg/qpixmapdata_vg_p.h b/src/openvg/qpixmapdata_vg_p.h
index 114d5454b1..7ffdc85b70 100644
--- a/src/openvg/qpixmapdata_vg_p.h
+++ b/src/openvg/qpixmapdata_vg_p.h
@@ -143,7 +143,9 @@ private:
QVGPixmapData *nextLRU;
QVGPixmapData *prevLRU;
bool inLRU;
+ bool failedToAlloc;
friend class QVGImagePool;
+ friend class QVGPaintEngine;
#if !defined(QT_NO_EGL)
QVGPixmapData *next;
diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp
index e2a99c209b..e4edfcbc80 100644
--- a/src/openvg/qvg_symbian.cpp
+++ b/src/openvg/qvg_symbian.cpp
@@ -165,7 +165,6 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
bool deleteSourceBitmap = false;
-
#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
// Rasterize extended bitmaps
diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp
index a8b8911176..184ceb49b2 100644
--- a/src/plugins/bearer/connman/qconnmanengine.cpp
+++ b/src/plugins/bearer/connman/qconnmanengine.cpp
@@ -170,13 +170,26 @@ bool QConnmanEngine::hasIdentifier(const QString &id)
void QConnmanEngine::connectToId(const QString &id)
{
QMutexLocker locker(&mutex);
- QConnmanConnectThread *thread;
- thread = new QConnmanConnectThread(this);
- thread->setServicePath(serviceFromId(id));
- thread->setIdentifier(id);
- connect(thread,SIGNAL(connectionError(QString,QBearerEngineImpl::ConnectionError)),
- this,SIGNAL(connectionError(QString,QBearerEngineImpl::ConnectionError)));
- thread->start();
+ QString servicePath = serviceFromId(id);
+ QConnmanServiceInterface serv(servicePath);
+ if(!serv.isValid()) {
+ emit connectionError(id, QBearerEngineImpl::InterfaceLookupError);
+ } else {
+ if(serv.getType() != "cellular") {
+
+ serv.connect();
+ } else {
+ QOfonoManagerInterface ofonoManager(0);
+ QString modemPath = ofonoManager.currentModem().path();
+ QOfonoDataConnectionManagerInterface dc(modemPath,0);
+ foreach(const QDBusObjectPath dcPath,dc.getPrimaryContexts()) {
+ if(dcPath.path().contains(servicePath.section("_",-1))) {
+ QOfonoPrimaryDataContextInterface primaryContext(dcPath.path(),0);
+ primaryContext.setActive(true);
+ }
+ }
+ }
+ }
}
void QConnmanEngine::disconnectFromId(const QString &id)
@@ -791,62 +804,6 @@ bool QConnmanEngine::requiresPolling() const
return false;
}
-
-QConnmanConnectThread::QConnmanConnectThread(QObject *parent)
- :QThread(parent),
- servicePath(), identifier()
-{
-}
-
-QConnmanConnectThread::~QConnmanConnectThread()
-{
-}
-
-void QConnmanConnectThread::stop()
-{
- if(currentThread() != this) {
- QMetaObject::invokeMethod(this, "quit",
- Qt::QueuedConnection);
- } else {
- quit();
- }
- wait();
-}
-
-void QConnmanConnectThread::run()
-{
- QConnmanServiceInterface serv(servicePath);
- if(!serv.isValid()) {
- emit connectionError(identifier, QBearerEngineImpl::InterfaceLookupError);
- } else {
- if(serv.getType() != "cellular") {
- serv.connect();
- } else {
- QOfonoManagerInterface ofonoManager(0);
- QString modemPath = ofonoManager.currentModem().path();
- QOfonoDataConnectionManagerInterface dc(modemPath,0);
- foreach(const QDBusObjectPath dcPath,dc.getPrimaryContexts()) {
- if(dcPath.path().contains(servicePath.section("_",-1))) {
- QOfonoPrimaryDataContextInterface primaryContext(dcPath.path(),0);
- primaryContext.setActive(true);
- }
- }
- }
- }
-}
-
-void QConnmanConnectThread::setServicePath(const QString &path)
-{
- QMutexLocker locker(&mutex);
- servicePath = path;
-}
-
-void QConnmanConnectThread::setIdentifier(const QString &id)
-{
- QMutexLocker locker(&mutex);
- identifier = id;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DBUS
diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h
index 569bbc7a73..2a2308f17d 100644
--- a/src/plugins/bearer/connman/qconnmanengine.h
+++ b/src/plugins/bearer/connman/qconnmanengine.h
@@ -59,14 +59,12 @@
#include <QMap>
#include <QVariant>
-#include <QtCore/qthread.h>
#ifndef QT_NO_BEARERMANAGEMENT
#ifndef QT_NO_DBUS
QT_BEGIN_NAMESPACE
-class QConnmanConnectThread;
class QConnmanEngine : public QBearerEngineImpl
{
Q_OBJECT
@@ -141,33 +139,8 @@ private:
bool isRoamingAllowed(const QString &context);
protected:
bool requiresPolling() const;
- QConnmanConnectThread *connThread;
};
-class QConnmanConnectThread : public QThread
-{
- Q_OBJECT
-
-public:
- QConnmanConnectThread(QObject *parent = 0);
- ~QConnmanConnectThread();
- bool keepRunning;
- void stop();
- void setServicePath(const QString &path);
- void setIdentifier(const QString &id);
-
-Q_SIGNALS:
- void connectionError(const QString &id, QBearerEngineImpl::ConnectionError error);
-
-protected:
- void run();
- QString servicePath;
- QString identifier;
-
-private:
- QMutex mutex;
-
-};
QT_END_NAMESPACE
diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
index e94ae5ddc7..b66298eb4d 100644
--- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp
+++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
@@ -106,7 +106,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -338,7 +338,7 @@ void QConnmanNetworkInterface::connectNotify(const char *signal)
this->path(),
QLatin1String(CONNMAN_NETWORK_INTERFACE),
QLatin1String("PropertyChanged"),
- this,SIGNAL(propertyChanged(QString,QDBusVariant))) ) {
+ this,SIGNAL(propertyChanged(QString,QDBusVariant)))) {
qWarning() << "network properties not connected";
}
}
@@ -353,7 +353,7 @@ void QConnmanNetworkInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -538,7 +538,7 @@ void QConnmanServiceInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -569,10 +569,9 @@ QVariant QConnmanServiceInterface::getProperty(const QString &property)
return var;
}
-// clearProperty
void QConnmanServiceInterface::connect()
{
- QDBusReply<QVariantMap> reply = this->call(QLatin1String("Connect"));
+ this->asyncCall(QLatin1String("Connect"));
}
void QConnmanServiceInterface::disconnect()
@@ -866,7 +865,7 @@ void QConnmanTechnologyInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -1031,7 +1030,7 @@ void QConnmanDeviceInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
diff --git a/src/plugins/bearer/connman/qofonoservice_linux.cpp b/src/plugins/bearer/connman/qofonoservice_linux.cpp
index 955f4b13c6..52f596b4c9 100644
--- a/src/plugins/bearer/connman/qofonoservice_linux.cpp
+++ b/src/plugins/bearer/connman/qofonoservice_linux.cpp
@@ -262,7 +262,7 @@ void QOfonoModemInterface::connectNotify(const char *signal)
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}}
void QOfonoModemInterface::disconnectNotify(const char *signal)
@@ -385,7 +385,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -483,7 +483,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -586,7 +586,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -675,7 +675,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -794,7 +794,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro
index 922a501963..90078e9290 100644
--- a/src/plugins/bearer/corewlan/corewlan.pro
+++ b/src/plugins/bearer/corewlan/corewlan.pro
@@ -1,7 +1,7 @@
TARGET = qcorewlanbearer
include(../../qpluginbase.pri)
-QT = core gui network
+QT = core network
LIBS += -framework Foundation -framework SystemConfiguration
contains(QT_CONFIG, corewlan) {
@@ -16,9 +16,10 @@ HEADERS += qcorewlanengine.h \
../qbearerengine_impl.h
SOURCES += main.cpp \
- qcorewlanengine.mm \
../qnetworksession_impl.cpp
+OBJECTIVE_SOURCES += qcorewlanengine.mm
+
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/bearer
target.path += $$[QT_INSTALL_PLUGINS]/bearer
INSTALLS += target
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index db577fd4fc..23dd14aa09 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -64,12 +64,17 @@
#include <Foundation/NSLock.h>
#include <SystemConfiguration/SCNetworkConfiguration.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
#include "private/qcore_mac_p.h"
#include <net/if.h>
#include <ifaddrs.h>
+inline QString qt_NSStringToQString(const NSString *nsstr)
+{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
+
+inline NSString *qt_QStringToNSString(const QString &qstr)
+{ return [reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr)) autorelease]; }
+
@interface QT_MANGLE_NAMESPACE(QNSListener) : NSObject
{
@@ -93,11 +98,12 @@
- (id) init
{
[locker lock];
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
notificationCenter = [NSNotificationCenter defaultCenter];
currentInterface = [CWInterface interfaceWithName:nil];
[notificationCenter addObserver:self selector:@selector(notificationHandler:) name:kCWPowerDidChangeNotification object:nil];
[locker unlock];
+ [autoreleasepool release];
return self;
}
@@ -161,10 +167,10 @@ void QScanThread::quit()
void QScanThread::run()
{
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
QStringList found;
mutex.lock();
- CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)];
+ CWInterface *currentInterface = [CWInterface interfaceWithName:qt_QStringToNSString(interfaceName)];
mutex.unlock();
if([currentInterface power]) {
@@ -182,14 +188,14 @@ void QScanThread::run()
for(uint row=0; row < [apArray count]; row++ ) {
apNetwork = [apArray objectAtIndex:row];
- const QString networkSsid = qt_mac_NSStringToQString([apNetwork ssid]);
+ const QString networkSsid = qt_NSStringToQString([apNetwork ssid]);
const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
found.append(id);
QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
bool known = isKnownSsid(networkSsid);
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString( [currentInterface ssid])) {
+ if( networkSsid == qt_NSStringToQString( [currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -232,7 +238,7 @@ void QScanThread::run()
}
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString([currentInterface ssid])) {
+ if( networkSsid == qt_NSStringToQString([currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -251,6 +257,7 @@ void QScanThread::run()
}
}
emit networksChanged();
+ [autoreleasepool release];
}
QStringList QScanThread::foundNetwork(const QString &id, const QString &name, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose)
@@ -290,7 +297,7 @@ void QScanThread::getUserConfigurations()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
userProfiles.clear();
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
@@ -310,10 +317,10 @@ void QScanThread::getUserConfigurations()
NSArray *thisSsidarray = [prefNetDict valueForKey:@"SSID_STR"];
for(NSString *ssidkey in thisSsidarray) {
- QString thisSsid = qt_mac_NSStringToQString(ssidkey);
+ QString thisSsid = qt_NSStringToQString(ssidkey);
if(!userProfiles.contains(thisSsid)) {
QMap <QString,QString> map;
- map.insert(thisSsid, qt_mac_NSStringToQString(nsInterfaceName));
+ map.insert(thisSsid, qt_NSStringToQString(nsInterfaceName));
userProfiles.insert(thisSsid, map);
}
}
@@ -322,7 +329,7 @@ void QScanThread::getUserConfigurations()
// 802.1X user profiles
QString userProfilePath = QDir::homePath() + "/Library/Preferences/com.apple.eap.profiles.plist";
- NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_mac_QStringToNSString(userProfilePath)] autorelease];
+ NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_QStringToNSString(userProfilePath)] autorelease];
if(eapDict != nil) {
NSString *profileStr= @"Profiles";
NSString *nameStr = @"UserDefinedName";
@@ -341,15 +348,15 @@ void QScanThread::getUserConfigurations()
QString ssid;
for(int i = 0; i < dictSize; i++) {
if([nameStr isEqualToString:keys[i]]) {
- networkName = qt_mac_NSStringToQString(objects[i]);
+ networkName = qt_NSStringToQString(objects[i]);
}
if([networkSsidStr isEqualToString:keys[i]]) {
- ssid = qt_mac_NSStringToQString(objects[i]);
+ ssid = qt_NSStringToQString(objects[i]);
}
if(!userProfiles.contains(networkName)
&& !ssid.isEmpty()) {
QMap<QString,QString> map;
- map.insert(ssid, qt_mac_NSStringToQString(nsInterfaceName));
+ map.insert(ssid, qt_NSStringToQString(nsInterfaceName));
userProfiles.insert(networkName, map);
}
}
@@ -358,6 +365,7 @@ void QScanThread::getUserConfigurations()
}
}
}
+ [autoreleasepool release];
}
QString QScanThread::getSsidFromNetworkName(const QString &name)
@@ -434,7 +442,7 @@ QCoreWlanEngine::~QCoreWlanEngine()
void QCoreWlanEngine::initialize()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
if([[CWInterface supportedInterfaces] count] > 0 && !listener) {
listener = [[QT_MANGLE_NAMESPACE(QNSListener) alloc] init];
@@ -446,6 +454,7 @@ void QCoreWlanEngine::initialize()
storeSession = NULL;
startNetworkChangeLoop();
+ [autoreleasepool release];
}
@@ -466,11 +475,11 @@ bool QCoreWlanEngine::hasIdentifier(const QString &id)
void QCoreWlanEngine::connectToId(const QString &id)
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
QString interfaceString = getInterfaceFromId(id);
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
if ([wifiInterface power]) {
NSError *err = nil;
@@ -488,9 +497,9 @@ void QCoreWlanEngine::connectToId(const QString &id)
NSArray *array = [CW8021XProfile allUser8021XProfiles];
for (NSUInteger i = 0; i < [array count]; ++i) {
- const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([[array objectAtIndex:i] userDefinedName])));
+ const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] userDefinedName])));
- const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([[array objectAtIndex:i] ssid])));
+ const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] ssid])));
if (id == networkNameHashCheck || id == ssidHash) {
const QString thisName = scanThread->getSsidFromNetworkName(id);
@@ -523,7 +532,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
[NSNumber numberWithBool:YES], kCWScanKeyMerge,
[NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType,
[NSNumber numberWithInteger:100], kCWScanKeyRestTime,
- qt_mac_QStringToNSString(wantedSsid), kCWScanKeySSID,
+ qt_QStringToNSString(wantedSsid), kCWScanKeySSID,
nil];
NSArray *scanArray = [wifiInterface scanForNetworksWithParameters:scanParameters error:&err];
@@ -532,7 +541,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
for(uint row=0; row < [scanArray count]; row++ ) {
CWNetwork *apNetwork = [scanArray objectAtIndex:row];
- if(wantedSsid == qt_mac_NSStringToQString([apNetwork ssid])) {
+ if(wantedSsid == qt_NSStringToQString([apNetwork ssid])) {
if(!using8021X) {
SecKeychainAttribute attributes[3];
@@ -599,18 +608,19 @@ void QCoreWlanEngine::connectToId(const QString &id)
return;
}
} else {
- qDebug() <<"associate ERROR"<< qt_mac_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"associate ERROR"<< qt_NSStringToQString([err localizedDescription ]);
}
}
} //end scan network
} else {
- qDebug() <<"scan ERROR"<< qt_mac_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"scan ERROR"<< qt_NSStringToQString([err localizedDescription ]);
}
emit connectionError(id, InterfaceLookupError);
}
locker.unlock();
emit connectionError(id, InterfaceLookupError);
+ [autoreleasepool release];
}
void QCoreWlanEngine::disconnectFromId(const QString &id)
@@ -618,10 +628,10 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
QMutexLocker locker(&mutex);
QString interfaceString = getInterfaceFromId(id);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
[wifiInterface disassociate];
if ([[wifiInterface interfaceState]intValue] != kCWInterfaceStateInactive) {
@@ -629,6 +639,7 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
emit connectionError(id, DisconnectionError);
locker.relock();
}
+ [autoreleasepool release];
}
void QCoreWlanEngine::requestUpdate()
@@ -641,27 +652,30 @@ void QCoreWlanEngine::doRequestUpdate()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
for (uint row = 0; row < [wifiInterfaces count]; ++row) {
- scanThread->interfaceName = qt_mac_NSStringToQString([wifiInterfaces objectAtIndex:row]);
+ scanThread->interfaceName = qt_NSStringToQString([wifiInterfaces objectAtIndex:row]);
scanThread->start();
}
locker.unlock();
+ [autoreleasepool release];
}
bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
{
QMutexLocker locker(&mutex);
-
+ bool haswifi = false;
if(hasWifi) {
- QMacCocoaAutoReleasePool pool;
- CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(wifiDeviceName)];
- if([defaultInterface power])
- return true;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
+ CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_QStringToNSString(wifiDeviceName)];
+ if([defaultInterface power]) {
+ haswifi = true;
+ }
+ [autoreleasepool release];
}
- return false;
+ return haswifi;
}
@@ -853,7 +867,7 @@ quint64 QCoreWlanEngine::bytesReceived(const QString &id)
quint64 QCoreWlanEngine::startTime(const QString &identifier)
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
quint64 timestamp = 0;
NSString *filePath = @"/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist";
@@ -884,7 +898,7 @@ quint64 QCoreWlanEngine::startTime(const QString &identifier)
bool ok = false;
for(int i = 0; i < dictSize; i++) {
if([ssidStr isEqualToString:keys[i]]) {
- const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString(objects[i])));
+ const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString(objects[i])));
if(ident == identifier) {
ok = true;
}
@@ -900,6 +914,7 @@ quint64 QCoreWlanEngine::startTime(const QString &identifier)
}
}
}
+ [autoreleasepool release];
return timestamp;
}
diff --git a/src/plugins/bearer/icd/icd.pro b/src/plugins/bearer/icd/icd.pro
index 464cc1c609..6700cdaaa8 100644
--- a/src/plugins/bearer/icd/icd.pro
+++ b/src/plugins/bearer/icd/icd.pro
@@ -1,7 +1,7 @@
TARGET = qicdbearer
include(../../qpluginbase.pri)
-QT += network dbus
+QT = core network dbus
QMAKE_CXXFLAGS *= $$QT_CFLAGS_DBUS $$QT_CFLAGS_CONNSETTINGS
LIBS += $$QT_LIBS_CONNSETTINGS
diff --git a/src/plugins/bearer/icd/maemo_icd.cpp b/src/plugins/bearer/icd/maemo_icd.cpp
index 4f879e34c8..57ab0a84ef 100644
--- a/src/plugins/bearer/icd/maemo_icd.cpp
+++ b/src/plugins/bearer/icd/maemo_icd.cpp
@@ -508,6 +508,7 @@ uint IcdPrivate::state(QList<IcdStateResult>& state_results)
mInterface.clear();
while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
mDBus->synchronousDispatch(1000);
+ QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall);
}
if (time(0)>(started+timeout_secs)) {
@@ -685,6 +686,7 @@ uint IcdPrivate::addrinfo(QList<IcdAddressInfoResult>& addr_results)
mInterface.clear();
while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
mDBus->synchronousDispatch(1000);
+ QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall);
}
if (time(0)>(started+timeout_secs)) {
diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp
index 37434e373e..8d0f587112 100644
--- a/src/plugins/bearer/icd/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp
@@ -679,7 +679,7 @@ void QNetworkSessionPrivateImpl::open()
if (serviceConfig.isValid()) {
lastError = QNetworkSession::OperationNotSupportedError;
emit QNetworkSessionPrivate::error(lastError);
- } else if (!isOpen) {
+ } else if (!opened) {
if (publicConfig.type() == QNetworkConfiguration::UserChoice) {
/* Caller is trying to connect to default IAP.
* At this time we will not know the IAP details so we just
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 85723cebd2..c5a39e1f6d 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -1078,7 +1078,7 @@ void QNetworkSessionPrivateImpl::RunL()
TInt error = KErrNone;
QNetworkConfiguration newActiveConfig = activeConfiguration();
if (!newActiveConfig.isValid()) {
- // RConnection startup was successfull but no configuration
+ // RConnection startup was successful but no configuration
// was found. That indicates that user has chosen to create a
// new WLAN configuration (from scan results), but that new
// configuration does not have access to Internet (Internet
diff --git a/src/plugins/bearer/symbian/symbian.pri b/src/plugins/bearer/symbian/symbian.pri
index e874945c7a..8d92f57b68 100644
--- a/src/plugins/bearer/symbian/symbian.pri
+++ b/src/plugins/bearer/symbian/symbian.pri
@@ -1,7 +1,7 @@
TARGET = qsymbianbearer
include(../../qpluginbase.pri)
-QT += network
+QT = core network
HEADERS += ../symbianengine.h \
../qnetworksession_impl.h
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index 4869eba55e..c16a242b96 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -55,6 +55,7 @@
#include <private/qpixmap_raster_p.h>
#include <private/qimagepixmapcleanuphooks_p.h>
+
QT_BEGIN_NAMESPACE
class SurfaceCache;
@@ -112,7 +113,11 @@ public:
static inline int cacheCost(const QImage &img) { return img.width() * img.height() * img.depth() / 8; }
#endif
- void prepareForBlit(bool alpha);
+ enum BlitFlag {
+ HasAlpha = 0x1,
+ Premultiplied = 0x2
+ };
+ void prepareForBlit(uint blitFlags);
IDirectFBSurface *surface;
@@ -616,7 +621,12 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
bool release;
IDirectFBSurface *imgSurface = d->getSurface(image, &release);
- d->prepareForBlit(QDirectFBScreen::hasAlphaChannel(imgSurface));
+ uint blitFlags = 0;
+ if (image.hasAlphaChannel())
+ blitFlags |= QDirectFBPaintEnginePrivate::HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(image.format()))
+ blitFlags |= QDirectFBPaintEnginePrivate::Premultiplied;
+ d->prepareForBlit(blitFlags);
CLIPPED_PAINT(d->blit(r, imgSurface, sr));
if (release) {
#if (Q_DIRECTFB_VERSION >= 0x010000)
@@ -655,8 +665,14 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
QRasterPaintEngine::drawImage(r, *img, sr);
} else {
QDirectFBPaintEnginePrivate::unlock(dfbData);
- d->prepareForBlit(pixmap.hasAlphaChannel());
IDirectFBSurface *s = dfbData->directFBSurface();
+ uint blitFlags = 0;
+ if (pixmap.hasAlphaChannel())
+ blitFlags |= QDirectFBPaintEnginePrivate::HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(dfbData->pixelFormat()))
+ blitFlags |= QDirectFBPaintEnginePrivate::Premultiplied;
+
+ d->prepareForBlit(blitFlags);
CLIPPED_PAINT(d->blit(r, s, sr));
}
}
@@ -978,7 +994,7 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m
break;
case QPainter::CompositionMode_SourceOver:
compositionModeStatus &= ~PorterDuff_AlwaysBlend;
- surface->SetPorterDuff(surface, DSPD_NONE);
+ surface->SetPorterDuff(surface, DSPD_SRC_OVER);
break;
case QPainter::CompositionMode_DestinationOver:
surface->SetPorterDuff(surface, DSPD_DST_OVER);
@@ -1031,13 +1047,18 @@ void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
}
}
-void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha)
+void QDirectFBPaintEnginePrivate::prepareForBlit(uint flags)
{
- DFBSurfaceBlittingFlags blittingFlags = alpha ? DSBLIT_BLEND_ALPHACHANNEL : DSBLIT_NOFX;
+ DFBSurfaceBlittingFlags blittingFlags = DSBLIT_NOFX;
+ if (flags & Premultiplied)
+ blittingFlags |= DSBLIT_SRC_PREMULTIPLY;
+ if (flags & HasAlpha)
+ blittingFlags |= DSBLIT_BLEND_ALPHACHANNEL;
if (opacity != 255) {
blittingFlags |= DSBLIT_BLEND_COLORALPHA;
+ surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
}
- surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
+
surface->SetBlittingFlags(surface, blittingFlags);
}
@@ -1154,13 +1175,18 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
QPointF offset = off;
Q_ASSERT(transform.type() <= QTransform::TxScale);
- prepareForBlit(pixmap.hasAlphaChannel());
QPixmapData *data = pixmap.pixmapData();
Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
+ IDirectFBSurface *sourceSurface = dfbData->directFBSurface();
+ uint blitFlags = 0;
+ if (dfbData->hasAlphaChannel())
+ blitFlags |= HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(dfbData->pixelFormat()))
+ blitFlags |= Premultiplied;
+ prepareForBlit(blitFlags);
QDirectFBPaintEnginePrivate::unlock(dfbData);
const QSize pixmapSize = dfbData->size();
- IDirectFBSurface *sourceSurface = dfbData->directFBSurface();
if (transform.isScaling()) {
Q_ASSERT(supportsStretchBlit());
Q_ASSERT(qMin(transform.m11(), transform.m22()) >= 0);
diff --git a/src/plugins/graphicssystems/meego/dithering.cpp b/src/plugins/graphicssystems/meego/dithering.cpp
index ba6b99b460..1a2e3fa24a 100644
--- a/src/plugins/graphicssystems/meego/dithering.cpp
+++ b/src/plugins/graphicssystems/meego/dithering.cpp
@@ -54,6 +54,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
+#include <QVarLengthArray>
// Gets a component (red = 1, green = 2...) from a RGBA data structure.
// data is unsigned char. stride is the number of bytes per line.
@@ -67,7 +68,7 @@
// Writes(ads) a new value to the diffusion accumulator. accumulator is a short.
// x, y is a position in the accumulation buffer. y can be 0 or 1 -- we operate on two lines at time.
-#define ACCUMULATE(accumulator, x, y, width, v) if (x < width && x > 0) accumulator[(y * width) + x] += v
+#define ACCUMULATE(accumulator, x, y, width, v) if (x < width && x >= 0) accumulator[(y * width) + x] += v
// Clamps a value to be in 0..255 range.
#define CLAMP_256(v) if (v > 255) v = 255; if (v < 0) v = 0;
@@ -75,8 +76,13 @@
// Converts incoming RGB32 (QImage::Format_RGB32) to RGB565. Returns the newly allocated data.
unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int height, int stride)
{
+ // Output line stride. Aligned to 4 bytes.
+ int alignedWidth = width;
+ if (alignedWidth % 2 > 0)
+ alignedWidth++;
+
// Will store output
- unsigned short *out = (unsigned short *) malloc(width * height * 2);
+ unsigned short *out = (unsigned short *) malloc(alignedWidth * height * 2);
// Lookup tables for the 8bit => 6bit and 8bit => 5bit conversion
unsigned char lookup_8bit_to_5bit[256];
@@ -95,23 +101,27 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
int x, y, c; // Pixel we're processing. c is component number (0, 1, 2 for r, b, b)
short component[3]; // Stores the new components (r, g, b) for pixel produced during conversion
short diff; // The difference between the converted value and the original one. To be accumulated.
- short accumulator[3][width * 2]; // Three acumulators for r, g, b. Each accumulator is two lines.
+ QVarLengthArray <short> accumulatorData(3 * width * 2); // Data for three acumulators for r, g, b. Each accumulator is two lines.
+ short *accumulator[3]; // Helper for accessing the accumulator on a per-channel basis more easily.
+ accumulator[0] = accumulatorData.data();
+ accumulator[1] = accumulatorData.data() + width;
+ accumulator[2] = accumulatorData.data() + (width * 2);
// Produce the conversion lookup tables.
for (i = 0; i < 256; i++) {
lookup_8bit_to_5bit[i] = round(i / 8.0);
- if (lookup_8bit_to_5bit[i] > 31)
- lookup_8bit_to_5bit[i] -= 1;
// Before bitshifts: (i * 8) - (... * 8 * 8)
lookup_8bit_to_5bit_diff[i] = (i << 3) - (lookup_8bit_to_5bit[i] << 6);
+ if (lookup_8bit_to_5bit[i] > 31)
+ lookup_8bit_to_5bit[i] -= 1;
lookup_8bit_to_6bit[i] = round(i / 4.0);
- if (lookup_8bit_to_6bit[i] > 63)
- lookup_8bit_to_6bit[i] -= 1;
// Before bitshifts: (i * 8) - (... * 4 * 8)
lookup_8bit_to_6bit_diff[i] = (i << 3) - (lookup_8bit_to_6bit[i] << 5);
+ if (lookup_8bit_to_6bit[i] > 63)
+ lookup_8bit_to_6bit[i] -= 1;
}
// Clear the accumulators
@@ -169,7 +179,7 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
}
// Write the newly produced pixel
- PUT_565(out, x, y, width, component[2], component[1], component[0]);
+ PUT_565(out, x, y, alignedWidth, component[2], component[1], component[0]);
}
}
@@ -178,10 +188,16 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
// Converts incoming RGBA32 (QImage::Format_ARGB32_Premultiplied) to RGB565. Returns the newly allocated data.
// This function is similar (yet different) to the _565 variant but it makes sense to duplicate it here for simplicity.
+// The output has each scan line aligned to 4 bytes (as expected by GL by default).
unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, int height, int stride)
{
+ // Output line stride. Aligned to 4 bytes.
+ int alignedWidth = width;
+ if (alignedWidth % 2 > 0)
+ alignedWidth++;
+
// Will store output
- unsigned short *out = (unsigned short *) malloc(width * height * 2);
+ unsigned short *out = (unsigned short *) malloc(alignedWidth * 2 * height);
// Lookup tables for the 8bit => 4bit conversion
unsigned char lookup_8bit_to_4bit[256];
@@ -195,16 +211,21 @@ unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, in
int x, y, c; // Pixel we're processing. c is component number (0, 1, 2, 3 for r, b, b, a)
short component[4]; // Stores the new components (r, g, b, a) for pixel produced during conversion
short diff; // The difference between the converted value and the original one. To be accumulated.
- short accumulator[4][width * 2]; // Four acumulators for r, g, b, a. Each accumulator is two lines.
+ QVarLengthArray <short> accumulatorData(4 * width * 2); // Data for three acumulators for r, g, b. Each accumulator is two lines.
+ short *accumulator[4]; // Helper for accessing the accumulator on a per-channel basis more easily.
+ accumulator[0] = accumulatorData.data();
+ accumulator[1] = accumulatorData.data() + width;
+ accumulator[2] = accumulatorData.data() + (width * 2);
+ accumulator[3] = accumulatorData.data() + (width * 3);
// Produce the conversion lookup tables.
for (i = 0; i < 256; i++) {
lookup_8bit_to_4bit[i] = round(i / 16.0);
- if (lookup_8bit_to_4bit[i] > 15)
- lookup_8bit_to_4bit[i] -= 1;
-
// Before bitshifts: (i * 8) - (... * 16 * 8)
lookup_8bit_to_4bit_diff[i] = (i << 3) - (lookup_8bit_to_4bit[i] << 7);
+
+ if (lookup_8bit_to_4bit[i] > 15)
+ lookup_8bit_to_4bit[i] = 15;
}
// Clear the accumulators
@@ -259,7 +280,25 @@ unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, in
}
// Write the newly produced pixel
- PUT_4444(out, x, y, width, component[0], component[1], component[2], component[3]);
+ PUT_4444(out, x, y, alignedWidth, component[0], component[1], component[2], component[3]);
+ }
+ }
+
+ return out;
+}
+
+unsigned char* convertBGRA32_to_RGBA32(const unsigned char *in, int width, int height, int stride)
+{
+ unsigned char *out = (unsigned char *) malloc(stride * height);
+
+ // For each line...
+ for (int y = 0; y < height; y++) {
+ // For each column
+ for (int x = 0; x < width; x++) {
+ out[(stride * y) + (x * 4) + 0] = in[(stride * y) + (x * 4) + 2];
+ out[(stride * y) + (x * 4) + 1] = in[(stride * y) + (x * 4) + 1];
+ out[(stride * y) + (x * 4) + 2] = in[(stride * y) + (x * 4) + 0];
+ out[(stride * y) + (x * 4) + 3] = in[(stride * y) + (x * 4) + 3];
}
}
diff --git a/src/plugins/graphicssystems/meego/qmeegoextensions.cpp b/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
index 611c962f38..dff80a4da5 100644
--- a/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
@@ -47,6 +47,7 @@ bool QMeeGoExtensions::initialized = false;
bool QMeeGoExtensions::hasImageShared = false;
bool QMeeGoExtensions::hasSurfaceScaling = false;
bool QMeeGoExtensions::hasLockSurface = false;
+bool QMeeGoExtensions::hasFenceSync = false;
/* Extension funcs */
@@ -54,8 +55,12 @@ typedef EGLBoolean (EGLAPIENTRY *eglQueryImageNOKFunc)(EGLDisplay, EGLImageKHR,
typedef EGLNativeSharedImageTypeNOK (EGLAPIENTRY *eglCreateSharedImageNOKFunc)(EGLDisplay, EGLImageKHR, EGLint*);
typedef EGLBoolean (EGLAPIENTRY *eglDestroySharedImageNOKFunc)(EGLDisplay, EGLNativeSharedImageTypeNOK);
typedef EGLBoolean (EGLAPIENTRY *eglSetSurfaceScalingNOKFunc)(EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHRFunc)(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHRFunc)(EGLDisplay display, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHRFunc)(EGLDisplay, EGLSurface, const EGLint*);
+typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHRFunc)(EGLDisplay, EGLSurface);
+typedef EGLSyncKHR (EGLAPIENTRY *eglCreateSyncKHRFunc)(EGLDisplay, EGLenum, const EGLint*);
+typedef EGLBoolean (EGLAPIENTRY *eglDestroySyncKHRFunc)(EGLDisplay, EGLSyncKHR);
+typedef EGLint (EGLAPIENTRY *eglClientWaitSyncKHRFunc)(EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR);
+typedef EGLBoolean (EGLAPIENTRY *eglGetSyncAttribKHRFunc)(EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
static eglQueryImageNOKFunc _eglQueryImageNOK = 0;
static eglCreateSharedImageNOKFunc _eglCreateSharedImageNOK = 0;
@@ -63,6 +68,10 @@ static eglDestroySharedImageNOKFunc _eglDestroySharedImageNOK = 0;
static eglSetSurfaceScalingNOKFunc _eglSetSurfaceScalingNOK = 0;
static eglLockSurfaceKHRFunc _eglLockSurfaceKHR = 0;
static eglUnlockSurfaceKHRFunc _eglUnlockSurfaceKHR = 0;
+static eglCreateSyncKHRFunc _eglCreateSyncKHR = 0;
+static eglDestroySyncKHRFunc _eglDestroySyncKHR = 0;
+static eglClientWaitSyncKHRFunc _eglClientWaitSyncKHR = 0;
+static eglGetSyncAttribKHRFunc _eglGetSyncAttribKHR = 0;
/* Public */
@@ -76,15 +85,15 @@ void QMeeGoExtensions::ensureInitialized()
EGLNativeSharedImageTypeNOK QMeeGoExtensions::eglCreateSharedImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLint *props)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
-
+
return _eglCreateSharedImageNOK(dpy, image, props);
}
bool QMeeGoExtensions::eglQueryImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLint prop, EGLint *v)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
return _eglQueryImageNOK(dpy, image, prop, v);
@@ -92,7 +101,7 @@ bool QMeeGoExtensions::eglQueryImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLin
bool QMeeGoExtensions::eglDestroySharedImageNOK(EGLDisplay dpy, EGLNativeSharedImageTypeNOK img)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
return _eglDestroySharedImageNOK(dpy, img);
@@ -100,7 +109,7 @@ bool QMeeGoExtensions::eglDestroySharedImageNOK(EGLDisplay dpy, EGLNativeSharedI
bool QMeeGoExtensions::eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surface, int x, int y, int width, int height)
{
- if (! hasSurfaceScaling)
+ if (!hasSurfaceScaling)
qFatal("EGL_NOK_surface_scaling not found but trying to use capability!");
return _eglSetSurfaceScalingNOK(dpy, surface, x, y, width, height);
@@ -108,7 +117,7 @@ bool QMeeGoExtensions::eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surfac
bool QMeeGoExtensions::eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
{
- if (! hasLockSurface)
+ if (!hasLockSurface)
qFatal("EGL_KHR_lock_surface2 not found but trying to use capability!");
return _eglLockSurfaceKHR(display, surface, attrib_list);
@@ -116,19 +125,51 @@ bool QMeeGoExtensions::eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface,
bool QMeeGoExtensions::eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
{
- if (! hasLockSurface)
+ if (!hasLockSurface)
qFatal("EGL_KHR_lock_surface2 not found but trying to use capability!");
return _eglUnlockSurfaceKHR(display, surface);
}
+EGLSyncKHR QMeeGoExtensions::eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglCreateSyncKHR(dpy, type, attrib_list);
+}
+
+bool QMeeGoExtensions::eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglDestroySyncKHR(dpy, sync);
+}
+
+EGLint QMeeGoExtensions::eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglClientWaitSyncKHR(dpy, sync, flags, timeout);
+}
+
+EGLBoolean QMeeGoExtensions::eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglGetSyncAttribKHR(dpy, sync, attribute, value);
+}
+
/* Private */
void QMeeGoExtensions::initialize()
{
QGLContext *ctx = (QGLContext *) QGLContext::currentContext();
qt_resolve_eglimage_gl_extensions(ctx);
-
+
if (QEgl::hasExtension("EGL_NOK_image_shared")) {
qDebug("MeegoGraphics: found EGL_NOK_image_shared");
_eglQueryImageNOK = (eglQueryImageNOKFunc) eglGetProcAddress("eglQueryImageNOK");
@@ -136,15 +177,15 @@ void QMeeGoExtensions::initialize()
_eglDestroySharedImageNOK = (eglDestroySharedImageNOKFunc) eglGetProcAddress("eglDestroySharedImageNOK");
_eglLockSurfaceKHR = (eglLockSurfaceKHRFunc) eglGetProcAddress("eglLockSurfaceKHR");
_eglUnlockSurfaceKHR = (eglUnlockSurfaceKHRFunc) eglGetProcAddress("eglUnlockSurfaceKHR");
-
+
Q_ASSERT(_eglQueryImageNOK && _eglCreateSharedImageNOK && _eglDestroySharedImageNOK);
hasImageShared = true;
}
-
+
if (QEgl::hasExtension("EGL_NOK_surface_scaling")) {
qDebug("MeegoGraphics: found EGL_NOK_surface_scaling");
_eglSetSurfaceScalingNOK = (eglSetSurfaceScalingNOKFunc) eglGetProcAddress("eglSetSurfaceScalingNOK");
-
+
Q_ASSERT(_eglSetSurfaceScalingNOK);
hasSurfaceScaling = true;
}
@@ -153,9 +194,20 @@ void QMeeGoExtensions::initialize()
qDebug("MeegoGraphics: found EGL_KHR_lock_surface2");
_eglLockSurfaceKHR = (eglLockSurfaceKHRFunc) eglGetProcAddress("eglLockSurfaceKHR");
_eglUnlockSurfaceKHR = (eglUnlockSurfaceKHRFunc) eglGetProcAddress("eglUnlockSurfaceKHR");
-
+
Q_ASSERT(_eglLockSurfaceKHR && _eglUnlockSurfaceKHR);
hasLockSurface = true;
}
+
+ if (QEgl::hasExtension("EGL_KHR_fence_sync")) {
+ qDebug("MeegoGraphics: found EGL_KHR_fence_sync");
+ _eglCreateSyncKHR = (eglCreateSyncKHRFunc) eglGetProcAddress("eglCreateSyncKHR");
+ _eglDestroySyncKHR = (eglDestroySyncKHRFunc) eglGetProcAddress("eglDestroySyncKHR");
+ _eglClientWaitSyncKHR = (eglClientWaitSyncKHRFunc) eglGetProcAddress("eglClientWaitSyncKHR");
+ _eglGetSyncAttribKHR = (eglGetSyncAttribKHRFunc) eglGetProcAddress("eglGetSyncAttribKHR");
+
+ Q_ASSERT(_eglCreateSyncKHR && _eglDestroySyncKHR && _eglClientWaitSyncKHR && _eglGetSyncAttribKHR);
+ hasFenceSync = true;
+ }
}
diff --git a/src/plugins/graphicssystems/meego/qmeegoextensions.h b/src/plugins/graphicssystems/meego/qmeegoextensions.h
index 9e78caf19b..49a1e3098b 100644
--- a/src/plugins/graphicssystems/meego/qmeegoextensions.h
+++ b/src/plugins/graphicssystems/meego/qmeegoextensions.h
@@ -77,6 +77,23 @@ typedef void* EGLNativeSharedImageTypeNOK;
#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
#endif
+#ifndef EGL_SYNC_FENCE_KHR
+#define EGL_SYNC_FENCE_KHR 0x30F9
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+typedef void* EGLSyncKHR;
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+#endif
+
/* Class */
class QMeeGoExtensions
@@ -90,6 +107,10 @@ public:
static bool eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surface, int x, int y, int width, int height);
static bool eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
static bool eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface);
+ static EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+ static bool eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
+ static EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+ static EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
private:
static void initialize();
@@ -98,6 +119,7 @@ private:
static bool hasImageShared;
static bool hasSurfaceScaling;
static bool hasLockSurface;
+ static bool hasFenceSync;
};
#endif
diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
index 96fbd6c81d..063af135e4 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
@@ -82,12 +82,12 @@ QWindowSurface* QMeeGoGraphicsSystem::createWindowSurface(QWidget *widget) const
QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const
{
- // Long story short: without this it's possible to hit an
- // unitialized paintDevice due to a Qt bug too complex to even
- // explain here... not to mention fix without going crazy.
+ // Long story short: without this it's possible to hit an
+ // unitialized paintDevice due to a Qt bug too complex to even
+ // explain here... not to mention fix without going crazy.
// MDK
QGLShareContextScope ctx(qt_gl_share_widget()->context());
-
+
return new QRasterPixmapData(type);
}
@@ -103,8 +103,8 @@ QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData *origin)
if (QMeeGoPixmapData::sharedImagesMap.contains(rawResource))
return new QMeeGoPixmapData();
- }
-
+ }
+
return new QRasterPixmapData(origin->pixelType());
}
@@ -151,12 +151,11 @@ void QMeeGoGraphicsSystem::setTranslucent(bool translucent)
QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handle, const QImage &softImage)
{
if (softImage.format() != QImage::Format_ARGB32_Premultiplied &&
- softImage.format() != QImage::Format_ARGB32 &&
softImage.format() != QImage::Format_RGB32) {
- qFatal("For egl shared images, the soft image has to be ARGB32, ARGB32_Premultiplied or RGB32");
+ qFatal("For egl shared images, the soft image has to be ARGB32_Premultiplied or RGB32");
return NULL;
}
-
+
if (QMeeGoGraphicsSystem::meeGoRunning()) {
QMeeGoPixmapData *pmd = new QMeeGoPixmapData;
pmd->fromEGLSharedImage(handle, softImage);
@@ -178,9 +177,9 @@ QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handl
void QMeeGoGraphicsSystem::updateEGLSharedImagePixmap(QPixmap *pixmap)
{
QMeeGoPixmapData *pmd = (QMeeGoPixmapData *) pixmap->pixmapData();
-
+
// Basic sanity check to make sure this is really a QMeeGoPixmapData...
- if (pmd->classId() != QPixmapData::OpenGLClass)
+ if (pmd->classId() != QPixmapData::OpenGLClass)
qFatal("Trying to updated EGLSharedImage pixmap but it's not really a shared image pixmap!");
pmd->updateFromSoftImage();
@@ -219,10 +218,10 @@ QPixmapData* QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(Qt::HANDLE ha
return new QMeeGoLivePixmapData(handle);
}
-QImage* QMeeGoGraphicsSystem::lockLiveTexture(QPixmap* pixmap)
+QImage* QMeeGoGraphicsSystem::lockLiveTexture(QPixmap* pixmap, void* fenceSync)
{
QMeeGoLivePixmapData *pixmapData = static_cast<QMeeGoLivePixmapData*>(pixmap->data_ptr().data());
- return pixmapData->lock();
+ return pixmapData->lock(fenceSync);
}
bool QMeeGoGraphicsSystem::releaseLiveTexture(QPixmap *pixmap, QImage *image)
@@ -237,6 +236,20 @@ Qt::HANDLE QMeeGoGraphicsSystem::getLiveTextureHandle(QPixmap *pixmap)
return pixmapData->handle();
}
+void* QMeeGoGraphicsSystem::createFenceSync()
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ return QMeeGoExtensions::eglCreateSyncKHR(QEgl::display(), EGL_SYNC_FENCE_KHR, NULL);
+}
+
+void QMeeGoGraphicsSystem::destroyFenceSync(void *fenceSync)
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ QMeeGoExtensions::eglDestroySyncKHR(QEgl::display(), fenceSync);
+}
+
/* C API */
int qt_meego_image_to_egl_shared_image(const QImage &image)
@@ -289,9 +302,9 @@ QPixmapData* qt_meego_pixmapdata_from_live_texture_handle(Qt::HANDLE handle)
return QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(handle);
}
-QImage* qt_meego_live_texture_lock(QPixmap *pixmap)
+QImage* qt_meego_live_texture_lock(QPixmap *pixmap, void *fenceSync)
{
- return QMeeGoGraphicsSystem::lockLiveTexture(pixmap);
+ return QMeeGoGraphicsSystem::lockLiveTexture(pixmap, fenceSync);
}
bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image)
@@ -302,4 +315,14 @@ bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image)
Qt::HANDLE qt_meego_live_texture_get_handle(QPixmap *pixmap)
{
return QMeeGoGraphicsSystem::getLiveTextureHandle(pixmap);
-} \ No newline at end of file
+}
+
+void* qt_meego_create_fence_sync(void)
+{
+ return QMeeGoGraphicsSystem::createFenceSync();
+}
+
+void qt_meego_destroy_fence_sync(void* fs)
+{
+ return QMeeGoGraphicsSystem::destroyFenceSync(fs);
+}
diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.h b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
index 2697f0fd46..1e50f001af 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.h
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
@@ -69,10 +69,13 @@ public:
static QPixmapData *pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
static QPixmapData *pixmapDataFromLiveTextureHandle(Qt::HANDLE handle);
- static QImage *lockLiveTexture(QPixmap* pixmap);
+ static QImage *lockLiveTexture(QPixmap* pixmap, void* fenceSync);
static bool releaseLiveTexture(QPixmap *pixmap, QImage *image);
static Qt::HANDLE getLiveTextureHandle(QPixmap *pixmap);
+ static void* createFenceSync();
+ static void destroyFenceSync(void* fenceSync);
+
private:
static bool meeGoRunning();
static EGLSurface getSurfaceForLiveTexturePixmap(QPixmap *pixmap);
@@ -95,9 +98,11 @@ extern "C" {
Q_DECL_EXPORT void qt_meego_set_translucent(bool translucent);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_with_new_live_texture(int w, int h, QImage::Format format);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_from_live_texture_handle(Qt::HANDLE handle);
- Q_DECL_EXPORT QImage* qt_meego_live_texture_lock(QPixmap *pixmap);
+ Q_DECL_EXPORT QImage* qt_meego_live_texture_lock(QPixmap *pixmap, void *fenceSync);
Q_DECL_EXPORT bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image);
Q_DECL_EXPORT Qt::HANDLE qt_meego_live_texture_get_handle(QPixmap *pixmap);
+ Q_DECL_EXPORT void* qt_meego_create_fence_sync(void);
+ Q_DECL_EXPORT void qt_meego_destroy_fence_sync(void* fs);
}
#endif
diff --git a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
index 405b765726..16096c98b5 100644
--- a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
@@ -40,7 +40,6 @@
****************************************************************************/
#include "qmeegolivepixmapdata.h"
-#include "qmeegoextensions.h"
#include "qmeegorasterpixmapdata.h"
#include <private/qimage_p.h>
#include <private/qwindowsurface_gl_p.h>
@@ -171,11 +170,18 @@ QPixmapData *QMeeGoLivePixmapData::createCompatiblePixmapData() const
return new QMeeGoRasterPixmapData(pixelType());
}
-QImage* QMeeGoLivePixmapData::lock()
+QImage* QMeeGoLivePixmapData::lock(EGLSyncKHR fenceSync)
{
QGLShareContextScope ctx(qt_gl_share_widget()->context());
QMeeGoExtensions::ensureInitialized();
+ if (fenceSync) {
+ QMeeGoExtensions::eglClientWaitSyncKHR(QEgl::display(),
+ fenceSync,
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR,
+ EGL_FOREVER_KHR);
+ }
+
void *data = 0;
int pitch = 0;
EGLSurface surface = 0;
@@ -214,7 +220,6 @@ bool QMeeGoLivePixmapData::release(QImage* /*img*/)
if (QMeeGoExtensions::eglUnlockSurfaceKHR(QEgl::display(), getSurfaceForBackingPixmap())) {
lockedImage = QImage();
- glFinish();
return true;
} else {
lockedImage = QImage();
@@ -229,7 +234,7 @@ Qt::HANDLE QMeeGoLivePixmapData::handle()
bool QMeeGoLivePixmapData::scroll(int dx, int dy, const QRect &rect)
{
- lock();
+ lock(NULL);
if (!lockedImage.isNull())
qt_scrollRectInImage(lockedImage, rect, QPoint(dx, dy));
diff --git a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
index 1d647f0a33..2c6854eb9a 100644
--- a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
@@ -43,6 +43,7 @@
#define MLIVEPIXMAPDATA_H
#include <private/qpixmapdata_gl_p.h>
+#include "qmeegoextensions.h"
class QMeeGoLivePixmapData : public QGLPixmapData
{
@@ -50,16 +51,16 @@ public:
QMeeGoLivePixmapData(int w, int h, QImage::Format format);
QMeeGoLivePixmapData(Qt::HANDLE h);
~QMeeGoLivePixmapData();
-
+
QPixmapData *createCompatiblePixmapData() const;
bool scroll(int dx, int dy, const QRect &rect);
void initializeThroughEGLImage();
-
- QImage* lock();
+
+ QImage* lock(EGLSyncKHR fenceSync);
bool release(QImage *img);
Qt::HANDLE handle();
-
+
EGLSurface getSurfaceForBackingPixmap();
void destroySurfaceForPixmapData(QPixmapData* pmd);
diff --git a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
index 02a42735c9..eb63692774 100644
--- a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
@@ -51,6 +51,7 @@
// from dithering.cpp
extern unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int height, int stride);
extern unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, int height, int stride);
+extern unsigned char* convertBGRA32_to_RGBA32(const unsigned char *in, int width, int height, int stride);
static EGLint preserved_image_attribs[] = { EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE };
@@ -146,8 +147,8 @@ Qt::HANDLE QMeeGoPixmapData::imageToEGLSharedImage(const QImage &image)
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
if (image.hasAlphaChannel() && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels()) {
- void *converted = convertARGB32_to_RGBA4444(image.bits(), image.width(), image.height(), image.bytesPerLine());
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, converted);
+ void *converted = convertBGRA32_to_RGBA32(image.bits(), image.width(), image.height(), image.bytesPerLine());
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, converted);
free(converted);
} else {
void *converted = convertRGB32_to_RGB565(image.bits(), image.width(), image.height(), image.bytesPerLine());
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro
index ade9023e24..2188505a4a 100644
--- a/src/plugins/phonon/mmf/mmf.pro
+++ b/src/plugins/phonon/mmf/mmf.pro
@@ -18,7 +18,7 @@ symbian {
# This is necessary because both epoc32/include and Phonon contain videoplayer.h.
# By making /epoc32/include the first SYSTEMINCLUDE, we ensure that
# '#include <videoplayer.h>' picks up the Symbian header, as intended.
- PREPEND_INCLUDEPATH = $$EPOCROOT/epoc32/include
+ PREPEND_INCLUDEPATH = $${EPOCROOT}epoc32/include
PREPEND_INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty
diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro
new file mode 100644
index 0000000000..1069220442
--- /dev/null
+++ b/src/plugins/s60/feedback/feedback.pro
@@ -0,0 +1,18 @@
+include(../../qpluginbase.pri)
+
+TARGET = qtactilefeedback$${QT_LIBINFIX}
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60/feedback
+
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) {
+ HEADERS += qtactileFeedback.h
+ SOURCES += qtactileFeedback_s60.cpp
+
+ LIBS += -ltouchfeedback
+}
+
+load(data_caging_paths)
+
+TARGET.UID3=0x200315B4
diff --git a/src/plugins/s60/feedback/qtactileFeedback.h b/src/plugins/s60/feedback/qtactileFeedback.h
new file mode 100644
index 0000000000..7c4cc291fc
--- /dev/null
+++ b/src/plugins/s60/feedback/qtactileFeedback.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QEvent>
+#include <QWidget>
+
+#include "private/qs60style_feedbackinterface_p.h"
+
+class QTactileFeedback : public TactileFeedbackInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(TactileFeedbackInterface)
+
+ public:
+ void touchFeedback(QEvent *event, const QWidget *widget);
+ };
diff --git a/src/plugins/s60/feedback/qtactileFeedback_s60.cpp b/src/plugins/s60/feedback/qtactileFeedback_s60.cpp
new file mode 100644
index 0000000000..c2f1d346cf
--- /dev/null
+++ b/src/plugins/s60/feedback/qtactileFeedback_s60.cpp
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QObject>
+#include <QSlider>
+#include <QScrollBar>
+
+#include <QtCore/qplugin.h>
+#include "qtactileFeedback.h"
+
+#include <touchfeedback.h>
+
+void QTactileFeedback::touchFeedback(QEvent *event, const QWidget *widget)
+{
+ //Lets share the global instance for touch feedback (you are NOT allowed to try and delete it!).
+ MTouchFeedback* feedback = MTouchFeedback::Instance();
+
+ //If the widget itself is not handling focus, try to use focusProxy widget.
+ const QWidget *w = ((widget->focusPolicy() == Qt::NoFocus) && (widget->focusProxy())) ? widget->focusProxy() : widget;
+
+ //Only give tactile feedback for enabled widgets that take focus.
+ if (feedback && w && w->isEnabled() && w->isWidgetType() && w->isVisible()) {
+ //Scrollbars are 'special' that they don't take focus (nor they have focusProxy), yet we'd like to have tactile feedback for them
+ if (w->focusPolicy() == Qt::NoFocus)
+ if (!qobject_cast<const QScrollBar *>(w))
+ return;
+
+ //Don't give tactile feedback for widgets that are outside topmost dialog.
+ QWidget *dialog = QApplication::activeModalWidget();
+ if (dialog) {
+ QList<const QWidget *> allChildren = dialog->findChildren<const QWidget *>();
+ if (!allChildren.contains(w))
+ return;
+ }
+
+ //Widget specific tactile feedback.
+ if (qobject_cast<const QSlider *>(w) || qobject_cast<const QScrollBar *>(w))
+ feedback->InstantFeedback(ETouchFeedbackSensitive);
+ else
+ feedback->InstantFeedback(ETouchFeedbackBasic);
+ }
+}
+
+Q_EXPORT_PLUGIN2("feedback", QTactileFeedback);
diff --git a/src/plugins/s60/s60.pro b/src/plugins/s60/s60.pro
index c999fff656..ffcd170f46 100644
--- a/src/plugins/s60/s60.pro
+++ b/src/plugins/s60/s60.pro
@@ -6,6 +6,10 @@ symbian {
SUBDIRS += 3_1 3_2
}
+ contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) {
+ SUBDIRS += feedback
+ }
+
# 5.0 is used also for Symbian3 and later
SUBDIRS += 5_0
} \ No newline at end of file
diff --git a/src/qt3support/canvas/q3canvas.cpp b/src/qt3support/canvas/q3canvas.cpp
index 959c4352b5..1b4706d0f1 100644
--- a/src/qt3support/canvas/q3canvas.cpp
+++ b/src/qt3support/canvas/q3canvas.cpp
@@ -1030,7 +1030,7 @@ void Q3Canvas::setUpdatePeriod(int ms)
The advance takes place in two phases. In phase 0, the
Q3CanvasItem::advance() function of each Q3CanvasItem::animated()
- canvas item is called with paramater 0. Then all these canvas
+ canvas item is called with parameter 0. Then all these canvas
items are called again, with parameter 1. In phase 0, the canvas
items should not change position, merely examine other items on
the canvas for which special processing is required, such as
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index d84a85b4d6..f8cd1edae8 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -2914,7 +2914,7 @@ QString Q3TextDocument::selectedText(int id, bool asRichText) const
}
}
// ### workaround for plain text export until we get proper
- // mime types: turn unicode line seperators into the more
+ // mime types: turn unicode line separators into the more
// widely understood \n. Makes copy and pasting code snipplets
// from within Assistent possible
QChar* uc = (QChar*) s.unicode();
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index 6e275777f9..9e88df7211 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -26,7 +26,7 @@ EXPORTS
?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 25 NONAME ABSENT ; void QMetaPropertyBuilder::setReadable(bool)
?d_func@QDeclarativeExpression@@AAEPAVQDeclarativeExpressionPrivate@@XZ @ 26 NONAME ; class QDeclarativeExpressionPrivate * QDeclarativeExpression::d_func(void)
??1QDeclarativeDomValueValueSource@@QAE@XZ @ 27 NONAME ABSENT ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void)
- ??_EQDeclarativeStateGroup@@UAE@I@Z @ 28 NONAME ABSENT ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int)
+ ??_EQDeclarativeStateGroup@@UAE@I@Z @ 28 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int)
?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 29 NONAME ABSENT ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const
?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 30 NONAME ABSENT ; class QString QDeclarativeAnchors::tr(char const *, char const *, int)
?location@QDeclarativeCustomParserNode@@QBE?AULocation@QDeclarativeParser@@XZ @ 31 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserNode::location(void) const
@@ -39,7 +39,7 @@ EXPORTS
??0QDeclarativeEngine@@QAE@PAVQObject@@@Z @ 38 NONAME ; QDeclarativeEngine::QDeclarativeEngine(class QObject *)
??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 39 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &)
?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 40 NONAME ABSENT ; void QDeclarativeListModel::set(int, class QScriptValue const &)
- ?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 41 NONAME ABSENT ; class QString QDeclarativeState::tr(char const *, char const *, int)
+ ?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString QDeclarativeState::tr(char const *, char const *, int)
?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 42 NONAME ABSENT ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const
?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 43 NONAME ABSENT ; void QMetaPropertyBuilder::setUser(bool)
?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 44 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *)
@@ -50,7 +50,7 @@ EXPORTS
??1QDeclarativeText@@UAE@XZ @ 49 NONAME ABSENT ; QDeclarativeText::~QDeclarativeText(void)
?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 50 NONAME ABSENT ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void)
?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 51 NONAME ABSENT ; bool QMetaPropertyBuilder::isDesignable(void) const
- ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 52 NONAME ABSENT ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int)
+ ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 52 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int)
?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 53 NONAME ; class QList<class QDeclarativeError> QDeclarativeView::errors(void) const
??0QPacket@@QAE@ABV0@@Z @ 54 NONAME ABSENT ; QPacket::QPacket(class QPacket const &)
??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 55 NONAME ABSENT ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void)
@@ -59,7 +59,7 @@ EXPORTS
??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 58 NONAME ABSENT ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int)
??0QDeclarativeDomObject@@QAE@XZ @ 59 NONAME ABSENT ; QDeclarativeDomObject::QDeclarativeDomObject(void)
?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 60 NONAME ABSENT ; class QList<class QDeclarativeError> QDeclarativeDomDocument::errors(void) const
- ?toChanged@QDeclarativeTransition@@IAEXXZ @ 61 NONAME ABSENT ; void QDeclarativeTransition::toChanged(void)
+ ?toChanged@QDeclarativeTransition@@IAEXXZ @ 61 NONAME ; void QDeclarativeTransition::toChanged(void)
?objectOwnership@QDeclarativeEngine@@SA?AW4ObjectOwnership@1@PAVQObject@@@Z @ 62 NONAME ; enum QDeclarativeEngine::ObjectOwnership QDeclarativeEngine::objectOwnership(class QObject *)
??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 63 NONAME ABSENT ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *)
?value@QDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 64 NONAME ; class QVariant QDeclarativePropertyMap::value(class QString const &) const
@@ -71,9 +71,9 @@ EXPORTS
??1QDeclarativeDebugClient@@UAE@XZ @ 70 NONAME ABSENT ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void)
?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 71 NONAME ABSENT ; class QString QPacketProtocol::trUtf8(char const *, char const *)
?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 72 NONAME ABSENT ; class QString QDeclarativeListModel::trUtf8(char const *, char const *)
- ?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 73 NONAME ABSENT ; void * QDeclarativeState::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 73 NONAME ; void * QDeclarativeState::qt_metacast(char const *)
??1QDeclarativeDebugContextReference@@QAE@XZ @ 74 NONAME ABSENT ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void)
- ?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 75 NONAME ABSENT ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void)
?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 76 NONAME ABSENT ; bool QDeclarativeDomValue::isInvalid(void) const
?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 77 NONAME ABSENT ; class QString QDeclarativeText::trUtf8(char const *, char const *, int)
??0QDeclarativeListReference@@QAE@ABV0@@Z @ 78 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QDeclarativeListReference const &)
@@ -84,7 +84,7 @@ EXPORTS
?imageType@QDeclarativeImageProvider@@QBE?AW4ImageType@1@XZ @ 83 NONAME ; enum QDeclarativeImageProvider::ImageType QDeclarativeImageProvider::imageType(void) const
??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 84 NONAME ABSENT ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int)
?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ABSENT ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 86 NONAME ABSENT ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const
+ ?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 86 NONAME ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const
?asScript@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 87 NONAME ; class QString QDeclarativeParser::Variant::asScript(void) const
?qt_metacast@QDeclarativeExtensionPlugin@@UAEPAXPBD@Z @ 88 NONAME ; void * QDeclarativeExtensionPlugin::qt_metacast(char const *)
?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 89 NONAME ABSENT ; class QString QDeclarativeDomObject::objectId(void) const
@@ -130,7 +130,7 @@ EXPORTS
?top@QDeclarativeScaleGrid@@QBEHXZ @ 129 NONAME ABSENT ; int QDeclarativeScaleGrid::top(void) const
?setExpression@QDeclarativeExpression@@QAEXABVQString@@@Z @ 130 NONAME ; void QDeclarativeExpression::setExpression(class QString const &)
??1QDeclarativeDebugEngineReference@@QAE@XZ @ 131 NONAME ABSENT ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void)
- ??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 132 NONAME ABSENT ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *)
+ ??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 132 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *)
?transform_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 133 NONAME ; void QDeclarativeItemPrivate::transform_clear(class QDeclarativeListProperty<class QGraphicsTransform> *)
?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 134 NONAME ABSENT ; struct QMetaObject const QDeclarativeValueType::staticMetaObject
?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 135 NONAME ABSENT ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const
@@ -165,7 +165,7 @@ EXPORTS
?subFocusItemChange@QDeclarativeItemPrivate@@UAEXXZ @ 164 NONAME ; void QDeclarativeItemPrivate::subFocusItemChange(void)
?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 165 NONAME ABSENT ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const
?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 166 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &)
- ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 167 NONAME ABSENT ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 167 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *)
?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 168 NONAME ABSENT ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &)
??1QDeclarativeItemPrivate@@UAE@XZ @ 169 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(void)
?clear@QDeclarativePropertyMap@@QAEXABVQString@@@Z @ 170 NONAME ; void QDeclarativePropertyMap::clear(class QString const &)
@@ -173,7 +173,7 @@ EXPORTS
?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 172 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeEngine *)
?insert@QDeclarativePropertyMap@@QAEXABVQString@@ABVQVariant@@@Z @ 173 NONAME ; void QDeclarativePropertyMap::insert(class QString const &, class QVariant const &)
??1QDeclarativeContext@@UAE@XZ @ 174 NONAME ; QDeclarativeContext::~QDeclarativeContext(void)
- ?operationCount@QDeclarativeState@@QBEHXZ @ 175 NONAME ABSENT ; int QDeclarativeState::operationCount(void) const
+ ?operationCount@QDeclarativeState@@QBEHXZ @ 175 NONAME ; int QDeclarativeState::operationCount(void) const
?getStaticMetaObject@QDeclarativeItem@@SAABUQMetaObject@@XZ @ 176 NONAME ; struct QMetaObject const & QDeclarativeItem::getStaticMetaObject(void)
?qtAnimationStateChanged@QDeclarativeBehavior@@AAEXW4State@QAbstractAnimation@@0@Z @ 177 NONAME ABSENT ; void QDeclarativeBehavior::qtAnimationStateChanged(enum QAbstractAnimation::State, enum QAbstractAnimation::State)
?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 178 NONAME ABSENT ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int)
@@ -188,7 +188,7 @@ EXPORTS
?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 187 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const
??0QDeclarativeComponent@@QAE@PAVQObject@@@Z @ 188 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QObject *)
?qt_metacast@QDeclarativeItem@@UAEPAXPBD@Z @ 189 NONAME ; void * QDeclarativeItem::qt_metacast(char const *)
- ?changes@QDeclarativeState@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 190 NONAME ABSENT ; class QDeclarativeListProperty<class QDeclarativeStateOperation> QDeclarativeState::changes(void)
+ ?changes@QDeclarativeState@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 190 NONAME ; class QDeclarativeListProperty<class QDeclarativeStateOperation> QDeclarativeState::changes(void)
?resizeEvent@QDeclarativeView@@MAEXPAVQResizeEvent@@@Z @ 191 NONAME ; void QDeclarativeView::resizeEvent(class QResizeEvent *)
?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 192 NONAME ABSENT ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const
?wrapMode@QDeclarativeText@@QBE?AW4WrapMode@1@XZ @ 193 NONAME ABSENT ; enum QDeclarativeText::WrapMode QDeclarativeText::wrapMode(void) const
@@ -216,7 +216,7 @@ EXPORTS
?parentChanged@QDeclarativeItem@@IAEXPAV1@@Z @ 215 NONAME ; void QDeclarativeItem::parentChanged(class QDeclarativeItem *)
?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 216 NONAME ABSENT ; int QDeclarativeDebugFileReference::columnNumber(void) const
??0QDeclarativeListModel@@AAE@_NPAVQObject@@@Z @ 217 NONAME ABSENT ; QDeclarativeListModel::QDeclarativeListModel(bool, class QObject *)
- ?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 218 NONAME ABSENT ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *)
+ ?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 218 NONAME ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *)
?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 219 NONAME ABSENT ; bool QDeclarativeDomProperty::isValid(void) const
?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 220 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *)
?statusChanged@QDeclarativeView@@IAEXW4Status@1@@Z @ 221 NONAME ; void QDeclarativeView::statusChanged(enum QDeclarativeView::Status)
@@ -241,7 +241,7 @@ EXPORTS
??1QDeclarativeScaleGrid@@UAE@XZ @ 240 NONAME ABSENT ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void)
?idString@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 241 NONAME ABSENT ; class QString QDeclarativeDebugObjectReference::idString(void) const
?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 242 NONAME ABSENT ; class QByteArray QDeclarativeDomObject::customTypeData(void) const
- ?stop@QDeclarativeTransition@@QAEXXZ @ 243 NONAME ABSENT ; void QDeclarativeTransition::stop(void)
+ ?stop@QDeclarativeTransition@@QAEXXZ @ 243 NONAME ; void QDeclarativeTransition::stop(void)
?data@QDeclarativeListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 244 NONAME ABSENT ; class QHash<int, class QVariant> QDeclarativeListModel::data(int, class QList<int> const &) const
?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 245 NONAME ABSENT ; float QDeclarativeAnchors::verticalCenterOffset(void) const
?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 246 NONAME ABSENT ; struct QMetaObject const * QDeclarativeText::metaObject(void) const
@@ -288,19 +288,19 @@ EXPORTS
?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 287 NONAME ABSENT ; int QDeclarativeDebugWatch::queryId(void) const
?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 288 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *, int)
?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 289 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject
- ?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 290 NONAME ABSENT ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *)
+ ?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 290 NONAME ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *)
?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 291 NONAME ABSENT ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const
?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 292 NONAME ABSENT ; class QString QDeclarativeDebugQuery::tr(char const *, char const *)
?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 293 NONAME ABSENT ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const
- ?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 294 NONAME ABSENT ; void QDeclarativeState::setName(class QString const &)
- ?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 295 NONAME ABSENT ; void QDeclarativeTransition::setReversed(bool)
+ ?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 294 NONAME ; void QDeclarativeState::setName(class QString const &)
+ ?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 295 NONAME ; void QDeclarativeTransition::setReversed(bool)
?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 296 NONAME ABSENT ; int QDeclarativeDebugService::idForObject(class QObject *)
?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 297 NONAME ABSENT ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 298 NONAME ABSENT ; class QString QDeclarativeTransition::fromState(void) const
+ ?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 298 NONAME ; class QString QDeclarativeTransition::fromState(void) const
??1QDeclarativeExpression@@UAE@XZ @ 299 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void)
?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 300 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &)
?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 301 NONAME ABSENT ; void QMetaObjectBuilder::removeMethod(int)
- ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ABSENT ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const
+ ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const
?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ABSENT ; int QMetaObjectBuilder::methodCount(void) const
?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ABSENT ; class QFont QDeclarativeText::font(void) const
?completeCreate@QDeclarativeComponent@@UAEXXZ @ 305 NONAME ; void QDeclarativeComponent::completeCreate(void)
@@ -320,7 +320,7 @@ EXPORTS
?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 319 NONAME ABSENT ; class QString QDeclarativeValueType::tr(char const *, char const *, int)
?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 320 NONAME ABSENT ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const
??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 321 NONAME ABSENT ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *)
- ?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 322 NONAME ABSENT ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 322 NONAME ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
?type@Variant@QDeclarativeParser@@QBE?AW4Type@12@XZ @ 323 NONAME ; enum QDeclarativeParser::Variant::Type QDeclarativeParser::Variant::type(void) const
??6QDeclarativeInfo@@QAEAAV0@_N@Z @ 324 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(bool)
?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 325 NONAME ABSENT ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const
@@ -357,8 +357,8 @@ EXPORTS
??1QDeclarativePropertyPrivate@@QAE@XZ @ 356 NONAME ABSENT ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void)
?setBaselineOffset@QDeclarativeItem@@QAEXM@Z @ 357 NONAME ; void QDeclarativeItem::setBaselineOffset(float)
??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 358 NONAME ABSENT ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void)
- ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 359 NONAME ABSENT ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int)
- ?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 360 NONAME ABSENT ; void QDeclarativeStateGroup::setState(class QString const &)
+ ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 359 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int)
+ ?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 360 NONAME ; void QDeclarativeStateGroup::setState(class QString const &)
??_EQDeclarativeImageProvider@@UAE@I@Z @ 361 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(unsigned int)
?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 362 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *)
?isLoading@QDeclarativeComponent@@QBE_NXZ @ 363 NONAME ; bool QDeclarativeComponent::isLoading(void) const
@@ -413,11 +413,11 @@ EXPORTS
??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 412 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *)
?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 413 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty<class QObject> *)
?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 414 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *)
- ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 415 NONAME ABSENT ; void QDeclarativeTransition::setToState(class QString const &)
+ ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 415 NONAME ; void QDeclarativeTransition::setToState(class QString const &)
?requestPixmap@QDeclarativeImageProvider@@UAE?AVQPixmap@@ABVQString@@PAVQSize@@ABV4@@Z @ 416 NONAME ; class QPixmap QDeclarativeImageProvider::requestPixmap(class QString const &, class QSize *, class QSize const &)
?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 417 NONAME ABSENT ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const
?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 418 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void)
- ?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 419 NONAME ABSENT ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const
+ ?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 419 NONAME ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const
?keyReleasePreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 420 NONAME ; void QDeclarativeItem::keyReleasePreHandler(class QKeyEvent *)
?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 421 NONAME ABSENT ; void QDeclarativeListModel::append(class QScriptValue const &)
??1QDeclarativeDebugObjectReference@@QAE@XZ @ 422 NONAME ABSENT ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void)
@@ -437,10 +437,10 @@ EXPORTS
?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 436 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *)
?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 437 NONAME ABSENT ; void QDeclarativeText::styleColorChanged(class QColor const &)
?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 438 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void)
- ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 439 NONAME ABSENT ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 439 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int)
?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 440 NONAME ABSENT ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 441 NONAME ; class QList<class QDeclarativeError> QDeclarativeCustomParser::errors(void) const
- ?statesProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 442 NONAME ABSENT ; class QDeclarativeListProperty<class QDeclarativeState> QDeclarativeStateGroup::statesProperty(void)
+ ?statesProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 442 NONAME ; class QDeclarativeListProperty<class QDeclarativeState> QDeclarativeStateGroup::statesProperty(void)
?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 443 NONAME ABSENT ; class QList<int> QDeclarativeListModel::roles(void) const
?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 444 NONAME ABSENT ; class QByteArray QMetaEnumBuilder::name(void) const
??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 445 NONAME ABSENT ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int)
@@ -456,11 +456,11 @@ EXPORTS
?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 455 NONAME ABSENT ; char const * QDeclarativeMetaType::interfaceIId(int)
?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 456 NONAME ABSENT ; bool QDeclarativeDomDynamicProperty::isValid(void) const
?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 457 NONAME ABSENT ; void QDeclarativeAnchors::baselineChanged(void)
- ?name@QDeclarativeState@@QBE?AVQString@@XZ @ 458 NONAME ABSENT ; class QString QDeclarativeState::name(void) const
+ ?name@QDeclarativeState@@QBE?AVQString@@XZ @ 458 NONAME ; class QString QDeclarativeState::name(void) const
??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 459 NONAME ABSENT ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &)
?qt_metacall@QDeclarativeContext@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 460 NONAME ; int QDeclarativeContext::qt_metacall(enum QMetaObject::Call, int, void * *)
??_EQDeclarativeValueType@@UAE@I@Z @ 461 NONAME ABSENT ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int)
- ?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ABSENT ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *)
?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 463 NONAME ABSENT ; bool QDeclarativeDebugService::isEnabled(void) const
?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 464 NONAME ABSENT ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State)
??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 465 NONAME ABSENT ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int)
@@ -504,7 +504,7 @@ EXPORTS
??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 503 NONAME ABSENT ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &)
?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 504 NONAME ABSENT ; class QString QPacketProtocol::tr(char const *, char const *)
?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 505 NONAME ABSENT ; void QDeclarativeText::setFont(class QFont const &)
- ?fromChanged@QDeclarativeTransition@@IAEXXZ @ 506 NONAME ABSENT ; void QDeclarativeTransition::fromChanged(void)
+ ?fromChanged@QDeclarativeTransition@@IAEXXZ @ 506 NONAME ; void QDeclarativeTransition::fromChanged(void)
?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 507 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &)
?setHeight@QDeclarativeItemPrivate@@UAEXM@Z @ 508 NONAME ; void QDeclarativeItemPrivate::setHeight(float)
??0Variant@QDeclarativeParser@@QAE@ABV01@@Z @ 509 NONAME ; QDeclarativeParser::Variant::Variant(class QDeclarativeParser::Variant const &)
@@ -527,7 +527,7 @@ EXPORTS
??0QDeclarativeDomValue@@QAE@XZ @ 526 NONAME ABSENT ; QDeclarativeDomValue::QDeclarativeDomValue(void)
?init@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItem@@@Z @ 527 NONAME ; void QDeclarativeItemPrivate::init(class QDeclarativeItem *)
?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 528 NONAME ABSENT ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int)
- ?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 529 NONAME ABSENT ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 529 NONAME ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void)
?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 530 NONAME ABSENT ; bool QMetaPropertyBuilder::isResettable(void) const
?focusScopeItemChange@QDeclarativeItemPrivate@@UAEX_N@Z @ 531 NONAME ; void QDeclarativeItemPrivate::focusScopeItemChange(bool)
?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 532 NONAME ABSENT ; void QDeclarativeAnchors::bottomMarginChanged(void)
@@ -551,7 +551,7 @@ EXPORTS
??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 550 NONAME ABSENT ; QDeclarativeListModel::QDeclarativeListModel(class QObject *)
?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 551 NONAME ABSENT ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *)
?setColumn@QDeclarativeError@@QAEXH@Z @ 552 NONAME ; void QDeclarativeError::setColumn(int)
- ??1QDeclarativeTransition@@UAE@XZ @ 553 NONAME ABSENT ; QDeclarativeTransition::~QDeclarativeTransition(void)
+ ??1QDeclarativeTransition@@UAE@XZ @ 553 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(void)
??AQDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 554 NONAME ; class QVariant QDeclarativePropertyMap::operator[](class QString const &) const
?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 555 NONAME ABSENT ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
?qdeclarativeelement_destructor@QDeclarativePrivate@@YAXPAVQObject@@@Z @ 556 NONAME ; void QDeclarativePrivate::qdeclarativeelement_destructor(class QObject *)
@@ -589,8 +589,8 @@ EXPORTS
?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 588 NONAME ABSENT ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &)
?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 589 NONAME ABSENT ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *)
?size@QDeclarativePropertyMap@@QBEHXZ @ 590 NONAME ; int QDeclarativePropertyMap::size(void) const
- ?cancel@QDeclarativeState@@QAEXXZ @ 591 NONAME ABSENT ; void QDeclarativeState::cancel(void)
- ?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 592 NONAME ABSENT ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?cancel@QDeclarativeState@@QAEXXZ @ 591 NONAME ; void QDeclarativeState::cancel(void)
+ ?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 592 NONAME ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *)
??0QDeclarativePropertyPrivate@@QAE@XZ @ 593 NONAME ABSENT ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void)
?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 594 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void)
?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 595 NONAME ABSENT ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int)
@@ -599,7 +599,7 @@ EXPORTS
?evaluateEnum@QDeclarativeCustomParser@@IBEHABVQByteArray@@@Z @ 598 NONAME ; int QDeclarativeCustomParser::evaluateEnum(class QByteArray const &) const
?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 599 NONAME ABSENT ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State)
?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 600 NONAME ABSENT ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const
- ?transitionsProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 601 NONAME ABSENT ; class QDeclarativeListProperty<class QDeclarativeTransition> QDeclarativeStateGroup::transitionsProperty(void)
+ ?transitionsProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 601 NONAME ; class QDeclarativeListProperty<class QDeclarativeTransition> QDeclarativeStateGroup::transitionsProperty(void)
?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 602 NONAME ABSENT ; class QByteArray QDeclarativeType::typeName(void) const
?asStringList@Variant@QDeclarativeParser@@QBE?AVQStringList@@XZ @ 603 NONAME ; class QStringList QDeclarativeParser::Variant::asStringList(void) const
?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 604 NONAME ABSENT ; void QMetaEnumBuilder::removeKey(int)
@@ -612,7 +612,7 @@ EXPORTS
??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 611 NONAME ABSENT ; QDeclarativePen::QDeclarativePen(class QObject *)
?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 612 NONAME ABSENT ; class QString QPacketProtocol::trUtf8(char const *, char const *, int)
?setContextObject@QDeclarativeContext@@QAEXPAVQObject@@@Z @ 613 NONAME ; void QDeclarativeContext::setContextObject(class QObject *)
- ??_EQDeclarativeState@@UAE@I@Z @ 614 NONAME ABSENT ; QDeclarativeState::~QDeclarativeState(unsigned int)
+ ??_EQDeclarativeState@@UAE@I@Z @ 614 NONAME ; QDeclarativeState::~QDeclarativeState(unsigned int)
?expression@QDeclarativeExpression@@QBE?AVQString@@XZ @ 615 NONAME ; class QString QDeclarativeExpression::expression(void) const
??1QDeclarativeDomDocument@@QAE@XZ @ 616 NONAME ABSENT ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void)
?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 617 NONAME ABSENT ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int)
@@ -621,15 +621,15 @@ EXPORTS
?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 620 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *)
??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 621 NONAME ABSENT ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *)
?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 622 NONAME ABSENT ; class QString QDeclarativeDebugEngineReference::name(void) const
- ??_EQDeclarativeTransition@@UAE@I@Z @ 623 NONAME ABSENT ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int)
+ ??_EQDeclarativeTransition@@UAE@I@Z @ 623 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int)
??0QDeclarativeAction@@QAE@ABV0@@Z @ 624 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &)
- ?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 625 NONAME ABSENT ; class QString QDeclarativeState::extends(void) const
+ ?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 625 NONAME ; class QString QDeclarativeState::extends(void) const
?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserProperty@@ABVQString@@@Z @ 626 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserProperty const &, class QString const &)
??0QDeclarativeCustomParserNode@@QAE@XZ @ 627 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void)
?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 628 NONAME ABSENT ; class QString QDeclarativeDomImport::version(void) const
?smooth@QDeclarativeItem@@QBE_NXZ @ 629 NONAME ; bool QDeclarativeItem::smooth(void) const
??1QDeclarativeInfo@@QAE@XZ @ 630 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void)
- ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 631 NONAME ABSENT ; void * QDeclarativeStateOperation::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 631 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *)
??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 632 NONAME ABSENT ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &)
?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 633 NONAME ABSENT ; bool QDeclarativePropertyPrivate::isValueType(void) const
??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 634 NONAME ABSENT ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &)
@@ -640,7 +640,7 @@ EXPORTS
?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 639 NONAME ABSENT ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
?d_func@QDeclarativeItem@@AAEPAVQDeclarativeItemPrivate@@XZ @ 640 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItem::d_func(void)
?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 641 NONAME ABSENT ; class QString QDeclarativeDomValueBinding::binding(void) const
- ?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 642 NONAME ABSENT ; bool QDeclarativeStateGroup::updateAutoState(void)
+ ?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 642 NONAME ; bool QDeclarativeStateGroup::updateAutoState(void)
?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 643 NONAME ABSENT ; class QString QDeclarativeDebugService::tr(char const *, char const *)
?tr@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 644 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *, int)
??1QDeclarativeProperty@@QAE@XZ @ 645 NONAME ; QDeclarativeProperty::~QDeclarativeProperty(void)
@@ -678,11 +678,11 @@ EXPORTS
?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 677 NONAME ABSENT ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const
?baseUrl@QDeclarativeContext@@QBE?AVQUrl@@XZ @ 678 NONAME ; class QUrl QDeclarativeContext::baseUrl(void) const
?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 679 NONAME ABSENT ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?isNamed@QDeclarativeState@@QBE_NXZ @ 680 NONAME ABSENT ; bool QDeclarativeState::isNamed(void) const
+ ?isNamed@QDeclarativeState@@QBE_NXZ @ 680 NONAME ; bool QDeclarativeState::isNamed(void) const
?isString@Variant@QDeclarativeParser@@QBE_NXZ @ 681 NONAME ; bool QDeclarativeParser::Variant::isString(void) const
?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 682 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &)
?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 683 NONAME ABSENT ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int)
- ?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 684 NONAME ABSENT ; void * QDeclarativeTransition::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 684 NONAME ; void * QDeclarativeTransition::qt_metacast(char const *)
??1QDeclarativePixmap@@QAE@XZ @ 685 NONAME ; QDeclarativePixmap::~QDeclarativePixmap(void)
?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 686 NONAME ABSENT ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *)
?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 687 NONAME ABSENT ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void)
@@ -694,7 +694,7 @@ EXPORTS
??0QDeclarativeDebugObjectReference@@QAE@XZ @ 693 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void)
?staticMetaObject@QDeclarativeExtensionPlugin@@2UQMetaObject@@B @ 694 NONAME ; struct QMetaObject const QDeclarativeExtensionPlugin::staticMetaObject
?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 695 NONAME ABSENT ; bool QDeclarativeScaleGrid::isNull(void) const
- ??_EQDeclarativeStateOperation@@UAE@I@Z @ 696 NONAME ABSENT ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int)
+ ??_EQDeclarativeStateOperation@@UAE@I@Z @ 696 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int)
??6QDeclarativeInfo@@QAEAAV0@H@Z @ 697 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(int)
??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 698 NONAME ABSENT ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void)
?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 699 NONAME ABSENT ; class QString QDeclarativeRectangle::tr(char const *, char const *, int)
@@ -718,7 +718,7 @@ EXPORTS
?qt_metacast@QDeclarativeView@@UAEPAXPBD@Z @ 717 NONAME ; void * QDeclarativeView::qt_metacast(char const *)
?mapToItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 718 NONAME ; class QScriptValue QDeclarativeItem::mapToItem(class QScriptValue const &, float, float) const
?setPluginPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 719 NONAME ; void QDeclarativeEngine::setPluginPathList(class QStringList const &)
- ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 720 NONAME ABSENT ; struct QMetaObject const * QDeclarativeState::metaObject(void) const
+ ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 720 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const
?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 721 NONAME ABSENT ; class QRectF QDeclarativeRectangle::boundingRect(void) const
?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 722 NONAME ABSENT ; class QString QDeclarativeDomImport::uri(void) const
?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 723 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *)
@@ -769,13 +769,13 @@ EXPORTS
?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 768 NONAME ABSENT ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *)
?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 769 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const
?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 770 NONAME ABSENT ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *)
- ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 771 NONAME ABSENT ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const
+ ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 771 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const
?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 772 NONAME ABSENT ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *)
?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 773 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int)
?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 774 NONAME ABSENT ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const
?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 775 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const
?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 776 NONAME ABSENT ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const
- ?reversible@QDeclarativeTransition@@QBE_NXZ @ 777 NONAME ABSENT ; bool QDeclarativeTransition::reversible(void) const
+ ?reversible@QDeclarativeTransition@@QBE_NXZ @ 777 NONAME ; bool QDeclarativeTransition::reversible(void) const
?invalidPacket@QPacketProtocol@@IAEXXZ @ 778 NONAME ABSENT ; void QPacketProtocol::invalidPacket(void)
??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 779 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int)
?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 780 NONAME ABSENT ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const
@@ -809,7 +809,7 @@ EXPORTS
?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 808 NONAME ABSENT ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *)
?resetHeight@QDeclarativeItemPrivate@@UAEXXZ @ 809 NONAME ; void QDeclarativeItemPrivate::resetHeight(void)
?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 810 NONAME ABSENT ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *)
- ??1QDeclarativeStateOperation@@UAE@XZ @ 811 NONAME ABSENT ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void)
+ ??1QDeclarativeStateOperation@@UAE@XZ @ 811 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void)
??_EQDeclarativeDebugQuery@@UAE@I@Z @ 812 NONAME ABSENT ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int)
?update@QDeclarativeAbstractBinding@@QAEXXZ @ 813 NONAME ABSENT ; void QDeclarativeAbstractBinding::update(void)
?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 814 NONAME ABSENT ; class QString QDeclarativeBehavior::tr(char const *, char const *, int)
@@ -819,12 +819,12 @@ EXPORTS
??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 818 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *)
?valueChanged@QDeclarativeExpression@@IAEXXZ @ 819 NONAME ; void QDeclarativeExpression::valueChanged(void)
??_EQDeclarativeView@@UAE@I@Z @ 820 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int)
- ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 821 NONAME ABSENT ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 821 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int)
?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 822 NONAME ABSENT ; class QByteArray QMetaMethodBuilder::tag(void) const
?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 823 NONAME ABSENT ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void)
?setContext@QDeclarativeScriptString@@QAEXPAVQDeclarativeContext@@@Z @ 824 NONAME ; void QDeclarativeScriptString::setContext(class QDeclarativeContext *)
?addImageProvider@QDeclarativeEngine@@QAEXABVQString@@PAVQDeclarativeImageProvider@@@Z @ 825 NONAME ; void QDeclarativeEngine::addImageProvider(class QString const &, class QDeclarativeImageProvider *)
- ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 826 NONAME ABSENT ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const
+ ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 826 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const
?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 827 NONAME ; void QDeclarativeItem::stateChanged(class QString const &)
?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 828 NONAME ABSENT ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment)
??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 829 NONAME ABSENT ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &)
@@ -852,7 +852,7 @@ EXPORTS
?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 851 NONAME ABSENT ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const
??1QDeclarativeDebugQuery@@UAE@XZ @ 852 NONAME ABSENT ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void)
?data_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 853 NONAME ; void QDeclarativeItemPrivate::data_append(class QDeclarativeListProperty<class QObject> *, class QObject *)
- ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 854 NONAME ABSENT ; class QString QDeclarativeState::tr(char const *, char const *)
+ ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 854 NONAME ; class QString QDeclarativeState::tr(char const *, char const *)
?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 855 NONAME ABSENT ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int)
?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 856 NONAME ABSENT ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *)
?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 857 NONAME ABSENT ; float QDeclarativeAnchors::bottomMargin(void) const
@@ -887,7 +887,7 @@ EXPORTS
?setHeight@QDeclarativeItem@@QAEXM@Z @ 886 NONAME ; void QDeclarativeItem::setHeight(float)
??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 887 NONAME ABSENT ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &)
?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 888 NONAME ABSENT ; int QDeclarativeDomDynamicProperty::position(void) const
- ?animations@QDeclarativeTransition@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 889 NONAME ABSENT ; class QDeclarativeListProperty<class QDeclarativeAbstractAnimation> QDeclarativeTransition::animations(void)
+ ?animations@QDeclarativeTransition@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 889 NONAME ; class QDeclarativeListProperty<class QDeclarativeAbstractAnimation> QDeclarativeTransition::animations(void)
?tr@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 890 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *, int)
??_EQMetaObjectBuilder@@UAE@I@Z @ 891 NONAME ABSENT ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int)
?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 892 NONAME ABSENT ; class QByteArray QDeclarativeDomProperty::propertyName(void) const
@@ -906,7 +906,7 @@ EXPORTS
?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 905 NONAME ABSENT ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const
?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 906 NONAME ABSENT ; void QDeclarativeAnchors::setRightMargin(float)
?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 907 NONAME ABSENT ; class QByteArray QMetaObjectBuilder::className(void) const
- ??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 908 NONAME ABSENT ; QDeclarativeState::QDeclarativeState(class QObject *)
+ ??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 908 NONAME ; QDeclarativeState::QDeclarativeState(class QObject *)
?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 909 NONAME ABSENT ; class QList<class QDeclarativeDebugContextReference> QDeclarativeDebugContextReference::contexts(void) const
?keyReleaseEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 910 NONAME ; void QDeclarativeItem::keyReleaseEvent(class QKeyEvent *)
?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 911 NONAME ABSENT ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *)
@@ -950,7 +950,7 @@ EXPORTS
?value@QMetaEnumBuilder@@QBEHH@Z @ 949 NONAME ABSENT ; int QMetaEnumBuilder::value(int) const
??_EQDeclarativeExpression@@UAE@I@Z @ 950 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(unsigned int)
?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 951 NONAME ABSENT ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &)
- ?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 952 NONAME ABSENT ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject
+ ?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 952 NONAME ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject
?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 953 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *)
?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 954 NONAME ABSENT ; void QDeclarativeAnchors::verticalCenterChanged(void)
?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 955 NONAME ABSENT ; bool QMetaPropertyBuilder::isScriptable(void) const
@@ -967,11 +967,11 @@ EXPORTS
?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 966 NONAME ABSENT ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void)
??1QDeclarativeNetworkAccessManagerFactory@@UAE@XZ @ 967 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(void)
?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 968 NONAME ABSENT ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat)
- ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 969 NONAME ABSENT ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *)
+ ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 969 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *)
?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 970 NONAME ABSENT ; class QByteArray QDeclarativeType::qmlTypeName(void) const
?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 971 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *)
?isProperty@QDeclarativeProperty@@QBE_NXZ @ 972 NONAME ; bool QDeclarativeProperty::isProperty(void) const
- ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 973 NONAME ABSENT ; class QList<class QDeclarativeState *> QDeclarativeStateGroup::states(void) const
+ ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 973 NONAME ; class QList<class QDeclarativeState *> QDeclarativeStateGroup::states(void) const
??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 974 NONAME ABSENT ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void)
?isValid@QDeclarativeDomObject@@QBE_NXZ @ 975 NONAME ABSENT ; bool QDeclarativeDomObject::isValid(void) const
?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 976 NONAME ABSENT ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject
@@ -1001,15 +1001,15 @@ EXPORTS
?setDescription@QDeclarativeError@@QAEXABVQString@@@Z @ 1000 NONAME ; void QDeclarativeError::setDescription(class QString const &)
??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@@Z @ 1001 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &)
??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 1002 NONAME ABSENT ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void)
- ?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 1003 NONAME ABSENT ; void QDeclarativeTransition::setReversible(bool)
+ ?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 1003 NONAME ; void QDeclarativeTransition::setReversible(bool)
?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1004 NONAME ABSENT ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const
??0QDeclarativeDomList@@QAE@XZ @ 1005 NONAME ABSENT ; QDeclarativeDomList::QDeclarativeDomList(void)
?hasActiveFocus@QDeclarativeItem@@QBE_NXZ @ 1006 NONAME ; bool QDeclarativeItem::hasActiveFocus(void) const
?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1007 NONAME ABSENT ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &)
- ?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1008 NONAME ABSENT ; class QString QDeclarativeTransition::toState(void) const
+ ?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1008 NONAME ; class QString QDeclarativeTransition::toState(void) const
??0QDeclarativeDomDocument@@QAE@XZ @ 1009 NONAME ABSENT ; QDeclarativeDomDocument::QDeclarativeDomDocument(void)
- ?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 1010 NONAME ABSENT ; void QDeclarativeState::setWhen(class QDeclarativeBinding *)
- ?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1011 NONAME ABSENT ; bool QDeclarativeState::isWhenKnown(void) const
+ ?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 1010 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *)
+ ?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1011 NONAME ; bool QDeclarativeState::isWhenKnown(void) const
?agent@QDeclarativeListModel@@QAEPAVQDeclarativeListModelWorkerAgent@@XZ @ 1012 NONAME ABSENT ; class QDeclarativeListModelWorkerAgent * QDeclarativeListModel::agent(void)
?engine@QDeclarativeExpression@@QBEPAVQDeclarativeEngine@@XZ @ 1013 NONAME ; class QDeclarativeEngine * QDeclarativeExpression::engine(void) const
??_EQDeclarativeDebugWatch@@UAE@I@Z @ 1014 NONAME ABSENT ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int)
@@ -1018,10 +1018,10 @@ EXPORTS
?setFill@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 1017 NONAME ABSENT ; void QDeclarativeAnchors::setFill(class QGraphicsObject *)
?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 1018 NONAME ABSENT ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment)
??0QDeclarativeScriptString@@QAE@ABV0@@Z @ 1019 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(class QDeclarativeScriptString const &)
- ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1020 NONAME ABSENT ; class QString QDeclarativeTransition::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1020 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *)
?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1021 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const
?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 1022 NONAME ABSENT ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *)
- ?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 1023 NONAME ABSENT ; void QDeclarativeTransition::reversibleChanged(void)
+ ?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 1023 NONAME ; void QDeclarativeTransition::reversibleChanged(void)
??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 1024 NONAME ABSENT ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &)
?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1025 NONAME ABSENT ; class QString QDeclarativeDebugObjectReference::name(void) const
?anchorLines@QDeclarativeItemPrivate@@QBEPAUAnchorLines@1@XZ @ 1026 NONAME ; struct QDeclarativeItemPrivate::AnchorLines * QDeclarativeItemPrivate::anchorLines(void) const
@@ -1089,7 +1089,7 @@ EXPORTS
??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 1088 NONAME ABSENT ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &)
?bottom@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1089 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::bottom(void) const
?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1090 NONAME ABSENT ; class QIODevice * QPacketProtocol::device(void)
- ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1091 NONAME ABSENT ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1091 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *)
?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 1092 NONAME ABSENT ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *)
?metaObject@QDeclarativeComponent@@UBEPBUQMetaObject@@XZ @ 1093 NONAME ; struct QMetaObject const * QDeclarativeComponent::metaObject(void) const
?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABV?$QList@VQDeclarativeError@@@@@Z @ 1094 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QList<class QDeclarativeError> const &)
@@ -1109,7 +1109,7 @@ EXPORTS
?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1108 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &)
??0QDeclarativeDebugFileReference@@QAE@XZ @ 1109 NONAME ABSENT ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void)
?mapFromItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 1110 NONAME ; class QScriptValue QDeclarativeItem::mapFromItem(class QScriptValue const &, float, float) const
- ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1111 NONAME ABSENT ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1111 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int)
?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1112 NONAME ABSENT ; class QString QPacketProtocol::tr(char const *, char const *, int)
?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1113 NONAME ABSENT ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const
?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1114 NONAME ABSENT ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &)
@@ -1122,8 +1122,8 @@ EXPORTS
?qt_metacall@QDeclarativeComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1121 NONAME ; int QDeclarativeComponent::qt_metacall(enum QMetaObject::Call, int, void * *)
?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 1122 NONAME ABSENT ; class QString QDeclarativeDebugService::tr(char const *, char const *, int)
?staticMetaObject@QDeclarativeEngine@@2UQMetaObject@@B @ 1123 NONAME ; struct QMetaObject const QDeclarativeEngine::staticMetaObject
- ?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 1124 NONAME ABSENT ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject
- ?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1125 NONAME ABSENT ; class QList<class QDeclarativeAction> QDeclarativeStateOperation::actions(void)
+ ?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 1124 NONAME ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject
+ ?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1125 NONAME ; class QList<class QDeclarativeAction> QDeclarativeStateOperation::actions(void)
?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1126 NONAME ABSENT ; class QByteArray QDeclarativeDomObject::objectClassName(void) const
??8QDeclarativeProperty@@QBE_NABV0@@Z @ 1127 NONAME ; bool QDeclarativeProperty::operator==(class QDeclarativeProperty const &) const
??1QDeclarativeDomValue@@QAE@XZ @ 1128 NONAME ABSENT ; QDeclarativeDomValue::~QDeclarativeDomValue(void)
@@ -1141,7 +1141,7 @@ EXPORTS
??1QDeclarativeItem@@UAE@XZ @ 1140 NONAME ; QDeclarativeItem::~QDeclarativeItem(void)
?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1141 NONAME ABSENT ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 1142 NONAME ABSENT ; struct QMetaObject const QListModelInterface::staticMetaObject
- ?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 1143 NONAME ABSENT ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const
+ ?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 1143 NONAME ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const
?sourceFile@QDeclarativeExpression@@QBE?AVQString@@XZ @ 1144 NONAME ; class QString QDeclarativeExpression::sourceFile(void) const
??_EQDeclarativeAnchors@@UAE@I@Z @ 1145 NONAME ABSENT ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int)
?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 1146 NONAME ABSENT ; void QMetaPropertyBuilder::removeNotifySignal(void)
@@ -1153,7 +1153,7 @@ EXPORTS
?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1152 NONAME ABSENT ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &)
??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 1153 NONAME ABSENT ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &)
?width@QDeclarativePen@@QBEHXZ @ 1154 NONAME ABSENT ; int QDeclarativePen::width(void) const
- ?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 1155 NONAME ABSENT ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void)
+ ?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 1155 NONAME ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void)
??6QDeclarativeInfo@@QAEAAV0@P6AAAVQTextStream@@AAV1@@Z@Z @ 1156 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStream & (*)(class QTextStream &))
?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 1157 NONAME ABSENT ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *)
?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 1158 NONAME ABSENT ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const
@@ -1168,13 +1168,13 @@ EXPORTS
??0QDeclarativeError@@QAE@XZ @ 1167 NONAME ; QDeclarativeError::QDeclarativeError(void)
?hasValue@QDeclarativeOpenMetaObject@@QBE_NH@Z @ 1168 NONAME ABSENT ; bool QDeclarativeOpenMetaObject::hasValue(int) const
?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1169 NONAME ; class QObject * QDeclarativeProperty::object(void) const
- ?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 1170 NONAME ABSENT ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const
+ ?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 1170 NONAME ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const
?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@H@Z @ 1171 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, int) const
?focusChanged@QDeclarativeItemPrivate@@UAEX_N@Z @ 1172 NONAME ; void QDeclarativeItemPrivate::focusChanged(bool)
?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 1173 NONAME ABSENT ; int QDeclarativeDebugObjectReference::contextDebugId(void) const
?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 1174 NONAME ABSENT ; class QUrl QDeclarativeDebugFileReference::url(void) const
?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1175 NONAME ABSENT ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
- ??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 1176 NONAME ABSENT ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *)
+ ??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 1176 NONAME ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *)
?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 1177 NONAME ABSENT ; void QDeclarativeAbstractBinding::destroy(void)
?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 1178 NONAME ABSENT ; void * QDeclarativeDebugService::qt_metacast(char const *)
?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 1179 NONAME ABSENT ; void * QDeclarativeValueType::qt_metacast(char const *)
@@ -1190,14 +1190,14 @@ EXPORTS
?d_func@QDeclarativePropertyMap@@AAEPAVQDeclarativePropertyMapPrivate@@XZ @ 1189 NONAME ; class QDeclarativePropertyMapPrivate * QDeclarativePropertyMap::d_func(void)
?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1190 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *)
?rect@QDeclarativePixmap@@QBE?AVQRect@@XZ @ 1191 NONAME ; class QRect QDeclarativePixmap::rect(void) const
- ??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 1192 NONAME ABSENT ; QDeclarativeTransition::QDeclarativeTransition(class QObject *)
+ ??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 1192 NONAME ; QDeclarativeTransition::QDeclarativeTransition(class QObject *)
?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1193 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const
?setObjectOwnership@QDeclarativeEngine@@SAXPAVQObject@@W4ObjectOwnership@1@@Z @ 1194 NONAME ; void QDeclarativeEngine::setObjectOwnership(class QObject *, enum QDeclarativeEngine::ObjectOwnership)
?tr@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 1195 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *, int)
?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1196 NONAME ABSENT ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *)
??_EQDeclarativeText@@UAE@I@Z @ 1197 NONAME ABSENT ; QDeclarativeText::~QDeclarativeText(unsigned int)
?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 1198 NONAME ABSENT ; void QDeclarativeAnchors::setLeftMargin(float)
- ?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1199 NONAME ABSENT ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const
+ ?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1199 NONAME ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const
?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 1200 NONAME ABSENT ; class QString QDeclarativeAbstractBinding::expression(void) const
??6QDeclarativeInfo@@QAEAAV0@N@Z @ 1201 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(double)
?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 1202 NONAME ABSENT ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *)
@@ -1210,12 +1210,12 @@ EXPORTS
??0QDeclarativePropertyValueInterceptor@@QAE@XZ @ 1209 NONAME ; QDeclarativePropertyValueInterceptor::QDeclarativePropertyValueInterceptor(void)
?isValid@QDeclarativeError@@QBE_NXZ @ 1210 NONAME ; bool QDeclarativeError::isValid(void) const
??0QMetaMethodBuilder@@QAE@XZ @ 1211 NONAME ABSENT ; QMetaMethodBuilder::QMetaMethodBuilder(void)
- ?completed@QDeclarativeState@@IAEXXZ @ 1212 NONAME ABSENT ; void QDeclarativeState::completed(void)
+ ?completed@QDeclarativeState@@IAEXXZ @ 1212 NONAME ; void QDeclarativeState::completed(void)
?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1213 NONAME ABSENT ; void QDeclarativeRectangle::radiusChanged(void)
?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1214 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void)
?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1215 NONAME ABSENT ; int QDeclarativeGridScaledImage::gridLeft(void) const
?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 1216 NONAME ABSENT ; void QMetaPropertyBuilder::setWritable(bool)
- ?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 1217 NONAME ABSENT ; void * QDeclarativeStateGroup::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 1217 NONAME ; void * QDeclarativeStateGroup::qt_metacast(char const *)
?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1218 NONAME ABSENT ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *)
?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 1219 NONAME ABSENT ; void * QDeclarativeEngineDebug::qt_metacast(char const *)
?staticMetaObject@QDeclarativeExpression@@2UQMetaObject@@B @ 1220 NONAME ; struct QMetaObject const QDeclarativeExpression::staticMetaObject
@@ -1260,10 +1260,10 @@ EXPORTS
?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 1259 NONAME ABSENT ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const
??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 1260 NONAME ABSENT ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool)
?url@QDeclarativeComponent@@QBE?AVQUrl@@XZ @ 1261 NONAME ; class QUrl QDeclarativeComponent::url(void) const
- ?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 1262 NONAME ABSENT ; void QDeclarativeStateGroup::componentComplete(void)
+ ?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 1262 NONAME ; void QDeclarativeStateGroup::componentComplete(void)
?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 1263 NONAME ABSENT ; void QDeclarativeAnchors::setMargins(float)
?qt_metacall@QDeclarativeView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1264 NONAME ; int QDeclarativeView::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 1265 NONAME ABSENT ; class QString QDeclarativeStateGroup::state(void) const
+ ?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 1265 NONAME ; class QString QDeclarativeStateGroup::state(void) const
??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 1266 NONAME ABSENT ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &)
?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 1267 NONAME ABSENT ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *)
??_EQDeclarativeItemPrivate@@UAE@I@Z @ 1268 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(unsigned int)
@@ -1291,12 +1291,12 @@ EXPORTS
?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1290 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject
?tr@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1291 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *)
?isError@QDeclarativeComponent@@QBE_NXZ @ 1292 NONAME ; bool QDeclarativeComponent::isError(void) const
- ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1293 NONAME ABSENT ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1293 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *)
?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1294 NONAME ABSENT ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const
??1QDeclarativeDebugConnection@@UAE@XZ @ 1295 NONAME ABSENT ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void)
?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 1296 NONAME ABSENT ; class QVariant QDeclarativeOpenMetaObject::value(int) const
?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 1297 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int)
- ?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 1298 NONAME ABSENT ; void QDeclarativeTransition::setFromState(class QString const &)
+ ?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 1298 NONAME ; void QDeclarativeTransition::setFromState(class QString const &)
?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1299 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const
?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 1300 NONAME ABSENT ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const
?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 1301 NONAME ABSENT ; void QDeclarativeScaleGrid::setBottom(int)
@@ -1312,7 +1312,7 @@ EXPORTS
?width@QDeclarativeItemPrivate@@UBEMXZ @ 1311 NONAME ; float QDeclarativeItemPrivate::width(void) const
?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 1312 NONAME ABSENT ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const
?isScript@Variant@QDeclarativeParser@@QBE_NXZ @ 1313 NONAME ; bool QDeclarativeParser::Variant::isScript(void) const
- ?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 1314 NONAME ABSENT ; void QDeclarativeStateGroup::classBegin(void)
+ ?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 1314 NONAME ; void QDeclarativeStateGroup::classBegin(void)
?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 1315 NONAME ABSENT ; void * QDeclarativeRectangle::qt_metacast(char const *)
?qt_metacast@QDeclarativeExpression@@UAEPAXPBD@Z @ 1316 NONAME ; void * QDeclarativeExpression::qt_metacast(char const *)
?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1317 NONAME ABSENT ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &)
@@ -1332,11 +1332,11 @@ EXPORTS
?qt_metacall@QDeclarativeEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1331 NONAME ; int QDeclarativeEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1332 NONAME ABSENT ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void)
??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@@Z @ 1333 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &)
- ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 1334 NONAME ABSENT ; class QString QDeclarativeState::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 1334 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *)
?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 1335 NONAME ABSENT ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *))
?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1336 NONAME ABSENT ; class QList<class QDeclarativeDomProperty> QDeclarativeDomObject::properties(void) const
??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 1337 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *)
- ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 1338 NONAME ABSENT ; class QString QDeclarativeTransition::tr(char const *, char const *, int)
+ ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 1338 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *, int)
?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 1339 NONAME ABSENT ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *)
?implicitWidth@QDeclarativeItem@@QBEMXZ @ 1340 NONAME ; float QDeclarativeItem::implicitWidth(void) const
?metaObject@QDeclarativeContext@@UBEPBUQMetaObject@@XZ @ 1341 NONAME ; struct QMetaObject const * QDeclarativeContext::metaObject(void) const
@@ -1365,7 +1365,7 @@ EXPORTS
?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 1364 NONAME ABSENT ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *)
?d_func@QDeclarativeView@@AAEPAVQDeclarativeViewPrivate@@XZ @ 1365 NONAME ; class QDeclarativeViewPrivate * QDeclarativeView::d_func(void)
?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 1366 NONAME ABSENT ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *)
- ?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 1367 NONAME ABSENT ; void QDeclarativeStateGroup::stateChanged(class QString const &)
+ ?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 1367 NONAME ; void QDeclarativeStateGroup::stateChanged(class QString const &)
??0QDeclarativeDomValueValueSource@@QAE@XZ @ 1368 NONAME ABSENT ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void)
?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 1369 NONAME ABSENT ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int)
?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1370 NONAME ABSENT ; void QDeclarativeAnchors::baselineOffsetChanged(void)
@@ -1388,7 +1388,7 @@ EXPORTS
?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 1387 NONAME ABSENT ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int)
?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 1388 NONAME ABSENT ; void QDeclarativeDebugClient::setEnabled(bool)
??1QMetaObjectBuilder@@UAE@XZ @ 1389 NONAME ABSENT ; QMetaObjectBuilder::~QMetaObjectBuilder(void)
- ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 1390 NONAME ABSENT ; class QString QDeclarativeStateOperation::tr(char const *, char const *)
+ ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 1390 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *)
?clear@QPacket@@QAEXXZ @ 1391 NONAME ABSENT ; void QPacket::clear(void)
?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1392 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void)
??0QDeclarativeDomList@@QAE@ABV0@@Z @ 1393 NONAME ABSENT ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &)
@@ -1399,7 +1399,7 @@ EXPORTS
?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 1398 NONAME ABSENT ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *)
?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@@Z @ 1399 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &)
?widthValid@QDeclarativeItem@@IBE_NXZ @ 1400 NONAME ; bool QDeclarativeItem::widthValid(void) const
- ?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 1401 NONAME ABSENT ; struct QMetaObject const QDeclarativeState::staticMetaObject
+ ?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 1401 NONAME ; struct QMetaObject const QDeclarativeState::staticMetaObject
?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 1402 NONAME ABSENT ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access)
??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 1403 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &)
?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 1404 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject
@@ -1433,16 +1433,16 @@ EXPORTS
?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1432 NONAME ABSENT ; class QByteArray QMetaEnumBuilder::key(int) const
?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 1433 NONAME ABSENT ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const
??6QDeclarativeInfo@@QAEAAV0@PBD@Z @ 1434 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char const *)
- ?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 1435 NONAME ABSENT ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void)
+ ?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 1435 NONAME ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void)
??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 1436 NONAME ABSENT ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *)
?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 1437 NONAME ABSENT ; void QDeclarativeAnchors::bottomChanged(void)
?qListTypeId@QDeclarativeType@@QBEHXZ @ 1438 NONAME ABSENT ; int QDeclarativeType::qListTypeId(void) const
?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 1439 NONAME ABSENT ; void QDeclarativeDebuggerStatus::setSelectedState(bool)
?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 1440 NONAME ABSENT ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject
- ?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 1441 NONAME ABSENT ; void QDeclarativeState::setExtends(class QString const &)
+ ?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 1441 NONAME ; void QDeclarativeState::setExtends(class QString const &)
??4QDeclarativeError@@QAEAAV0@ABV0@@Z @ 1442 NONAME ; class QDeclarativeError & QDeclarativeError::operator=(class QDeclarativeError const &)
?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 1443 NONAME ABSENT ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int)
- ?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 1444 NONAME ABSENT ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void)
+ ?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 1444 NONAME ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void)
?propertyWritten@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1445 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyWritten(int)
?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1446 NONAME ABSENT ; class QString QListModelInterface::trUtf8(char const *, char const *)
?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 1447 NONAME ABSENT ; void QDeclarativeDebugFileReference::setColumnNumber(int)
@@ -1454,13 +1454,13 @@ EXPORTS
??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 1453 NONAME ABSENT ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *)
?tr@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 1454 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *)
??6QDeclarativeInfo@@QAEAAV0@G@Z @ 1455 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned short)
- ??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 1456 NONAME ABSENT ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *)
+ ??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 1456 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *)
?notifyOnValueChanged@QDeclarativeExpression@@QBE_NXZ @ 1457 NONAME ; bool QDeclarativeExpression::notifyOnValueChanged(void) const
?keyPressPreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 1458 NONAME ; void QDeclarativeItem::keyPressPreHandler(class QKeyEvent *)
?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 1459 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *, int)
?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 1460 NONAME ABSENT ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *)
?paintedHeight@QDeclarativeText@@QBEMXZ @ 1461 NONAME ABSENT ; float QDeclarativeText::paintedHeight(void) const
- ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1462 NONAME ABSENT ; class QString QDeclarativeTransition::tr(char const *, char const *)
+ ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1462 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *)
?transform@QDeclarativeItem@@QAE?AV?$QDeclarativeListProperty@VQGraphicsTransform@@@@XZ @ 1463 NONAME ; class QDeclarativeListProperty<class QGraphicsTransform> QDeclarativeItem::transform(void)
?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1464 NONAME ABSENT ; void QDeclarativeAnchors::leftChanged(void)
?topChanged@QDeclarativeAnchors@@IAEXXZ @ 1465 NONAME ABSENT ; void QDeclarativeAnchors::topChanged(void)
@@ -1480,7 +1480,7 @@ EXPORTS
?componentComplete@QDeclarativeItem@@MAEXXZ @ 1479 NONAME ; void QDeclarativeItem::componentComplete(void)
?creationContext@QDeclarativeComponent@@QBEPAVQDeclarativeContext@@XZ @ 1480 NONAME ; class QDeclarativeContext * QDeclarativeComponent::creationContext(void) const
?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1481 NONAME ABSENT ; void QDeclarativeBehavior::enabledChanged(void)
- ?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 1482 NONAME ABSENT ; struct QMetaObject const QDeclarativeTransition::staticMetaObject
+ ?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 1482 NONAME ; struct QMetaObject const QDeclarativeTransition::staticMetaObject
??0QDeclarativeInfo@@AAE@PAVQDeclarativeInfoPrivate@@@Z @ 1483 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfoPrivate *)
?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1484 NONAME ABSENT ; class QString QDeclarativeDebugContextReference::name(void) const
?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 1485 NONAME ABSENT ; int QDeclarativeBinding::propertyIndex(void)
@@ -1507,7 +1507,7 @@ EXPORTS
??0QDeclarativeContext@@QAE@PAV0@PAVQObject@@@Z @ 1506 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *)
?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 1507 NONAME ABSENT ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *)
??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 1508 NONAME ABSENT ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void)
- ?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1509 NONAME ABSENT ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1509 NONAME ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void)
?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 1510 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int)
?metaObject@QDeclarativePropertyMap@@UBEPBUQMetaObject@@XZ @ 1511 NONAME ; struct QMetaObject const * QDeclarativePropertyMap::metaObject(void) const
?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 1512 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const
@@ -1515,7 +1515,7 @@ EXPORTS
?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1514 NONAME ABSENT ; void QMetaMethodBuilder::setTag(class QByteArray const &)
?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1515 NONAME ABSENT ; class QList<class QDeclarativeDebugObjectReference> QDeclarativeDebugContextReference::objects(void) const
??4Variant@QDeclarativeParser@@QAEAAV01@ABV01@@Z @ 1516 NONAME ; class QDeclarativeParser::Variant & QDeclarativeParser::Variant::operator=(class QDeclarativeParser::Variant const &)
- ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1517 NONAME ABSENT ; class QString QDeclarativeStateGroup::tr(char const *, char const *)
+ ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1517 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *)
?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 1518 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *)
??1QDeclarativeBinding@@MAE@XZ @ 1519 NONAME ABSENT ; QDeclarativeBinding::~QDeclarativeBinding(void)
?importPlugin@QDeclarativeEngine@@QAE_NABVQString@@0PAV2@@Z @ 1520 NONAME ; bool QDeclarativeEngine::importPlugin(class QString const &, class QString const &, class QString *)
@@ -1523,7 +1523,7 @@ EXPORTS
?geometryChanged@QDeclarativeItem@@MAEXABVQRectF@@0@Z @ 1522 NONAME ; void QDeclarativeItem::geometryChanged(class QRectF const &, class QRectF const &)
?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 1523 NONAME ABSENT ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const
?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1524 NONAME ABSENT ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const
- ?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 1525 NONAME ABSENT ; class QDeclarativeBinding * QDeclarativeState::when(void) const
+ ?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 1525 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const
?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 1526 NONAME ; void QDeclarativeView::setRootObject(class QObject *)
?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 1527 NONAME ABSENT ; void QDeclarativeAnchors::resetBottom(void)
?qt_metacall@QDeclarativePropertyMap@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1528 NONAME ; int QDeclarativePropertyMap::qt_metacall(enum QMetaObject::Call, int, void * *)
@@ -1532,15 +1532,15 @@ EXPORTS
?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 1531 NONAME ABSENT ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *)
??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 1532 NONAME ABSENT ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const
?siblingOrderChange@QDeclarativeItemPrivate@@UAEXXZ @ 1533 NONAME ; void QDeclarativeItemPrivate::siblingOrderChange(void)
- ??1QDeclarativeState@@UAE@XZ @ 1534 NONAME ABSENT ; QDeclarativeState::~QDeclarativeState(void)
+ ??1QDeclarativeState@@UAE@XZ @ 1534 NONAME ; QDeclarativeState::~QDeclarativeState(void)
?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1535 NONAME ABSENT ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
- ??1QDeclarativeStateGroup@@UAE@XZ @ 1536 NONAME ABSENT ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void)
+ ??1QDeclarativeStateGroup@@UAE@XZ @ 1536 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void)
?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 1537 NONAME ABSENT ; void QMetaPropertyBuilder::setEditable(bool)
?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1538 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1539 NONAME ABSENT ; class QString QDeclarativeBinding::trUtf8(char const *, char const *)
?requestSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1540 NONAME ; class QSize const & QDeclarativePixmap::requestSize(void) const
?progress@QDeclarativeComponent@@QBEMXZ @ 1541 NONAME ; float QDeclarativeComponent::progress(void) const
- ?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 1542 NONAME ABSENT ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const
+ ?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 1542 NONAME ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const
??0QListModelInterface@@QAE@PAVQObject@@@Z @ 1543 NONAME ABSENT ; QListModelInterface::QListModelInterface(class QObject *)
?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1544 NONAME ABSENT ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *)
?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1545 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &)
@@ -1548,7 +1548,7 @@ EXPORTS
?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 1547 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const
?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 1548 NONAME ABSENT ; class QString QDeclarativeBinding::tr(char const *, char const *, int)
?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1549 NONAME ABSENT ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *)
- ?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1550 NONAME ABSENT ; void QDeclarativeTransition::prepare(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, class QDeclarativeTransitionManager *)
+ ?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1550 NONAME ; void QDeclarativeTransition::prepare(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, class QDeclarativeTransitionManager *)
??6QDeclarativeInfo@@QAEAAV0@ABVQUrl@@@Z @ 1551 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QUrl const &)
?scopeObject@QDeclarativeExpression@@QBEPAVQObject@@XZ @ 1552 NONAME ; class QObject * QDeclarativeExpression::scopeObject(void) const
?isValid@QDeclarativeContext@@QBE_NXZ @ 1553 NONAME ; bool QDeclarativeContext::isValid(void) const
@@ -1562,7 +1562,7 @@ EXPORTS
?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 1561 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void)
?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1562 NONAME ABSENT ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject
?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1563 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &)
- ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1564 NONAME ABSENT ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1564 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void)
?childrenRectChanged@QDeclarativeItem@@IAEXABVQRectF@@@Z @ 1565 NONAME ; void QDeclarativeItem::childrenRectChanged(class QRectF const &)
?isDesignable@QDeclarativeProperty@@QBE_NXZ @ 1566 NONAME ; bool QDeclarativeProperty::isDesignable(void) const
?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 1567 NONAME ABSENT ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const
@@ -1593,8 +1593,8 @@ EXPORTS
?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1592 NONAME ABSENT ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int)
??AQDeclarativePropertyMap@@QAEAAVQVariant@@ABVQString@@@Z @ 1593 NONAME ; class QVariant & QDeclarativePropertyMap::operator[](class QString const &)
??0Variant@QDeclarativeParser@@QAE@_N@Z @ 1594 NONAME ; QDeclarativeParser::Variant::Variant(bool)
- ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 1595 NONAME ABSENT ; class QString QDeclarativeState::trUtf8(char const *, char const *, int)
- ??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 1596 NONAME ABSENT ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *)
+ ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 1595 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *, int)
+ ??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 1596 NONAME ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *)
?count@QDeclarativeListReference@@QBEHXZ @ 1597 NONAME ; int QDeclarativeListReference::count(void) const
?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1598 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const
?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1599 NONAME ABSENT ; struct QMetaObject const * QDeclarativePen::metaObject(void) const
@@ -1645,49 +1645,49 @@ EXPORTS
??_EQDeclarativePropertyChanges@@UAE@I@Z @ 1644 NONAME ABSENT ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(unsigned int)
?setObject@QDeclarativePropertyChanges@@QAEXPAVQObject@@@Z @ 1645 NONAME ABSENT ; void QDeclarativePropertyChanges::setObject(class QObject *)
?staticMetaObject@QDeclarativePropertyChanges@@2UQMetaObject@@B @ 1646 NONAME ABSENT ; struct QMetaObject const QDeclarativePropertyChanges::staticMetaObject
- ?removeEntryFromRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@@Z @ 1647 NONAME ABSENT ; bool QDeclarativeState::removeEntryFromRevertList(class QObject *, class QByteArray const &)
+ ?removeEntryFromRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@@Z @ 1647 NONAME ; bool QDeclarativeState::removeEntryFromRevertList(class QObject *, class QByteArray const &)
?restoreEntryValues@QDeclarativePropertyChanges@@QBE_NXZ @ 1648 NONAME ABSENT ; bool QDeclarativePropertyChanges::restoreEntryValues(void) const
?setRestoreEntryValues@QDeclarativePropertyChanges@@QAEX_N@Z @ 1649 NONAME ABSENT ; void QDeclarativePropertyChanges::setRestoreEntryValues(bool)
?changeValue@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1650 NONAME ABSENT ; void QDeclarativePropertyChanges::changeValue(class QByteArray const &, class QVariant const &)
?metaObject@QDeclarativePropertyChanges@@UBEPBUQMetaObject@@XZ @ 1651 NONAME ABSENT ; struct QMetaObject const * QDeclarativePropertyChanges::metaObject(void) const
?data_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1652 NONAME ; void QDeclarativeItemPrivate::data_clear(class QDeclarativeListProperty<class QObject> *)
- ?containsPropertyInRevertList@QDeclarativeState@@QBE_NPAVQObject@@ABVQByteArray@@@Z @ 1653 NONAME ABSENT ; bool QDeclarativeState::containsPropertyInRevertList(class QObject *, class QByteArray const &) const
+ ?containsPropertyInRevertList@QDeclarativeState@@QBE_NPAVQObject@@ABVQByteArray@@@Z @ 1653 NONAME ; bool QDeclarativeState::containsPropertyInRevertList(class QObject *, class QByteArray const &) const
?containsValue@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1654 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsValue(class QByteArray const &) const
- ?bindingInRevertList@QDeclarativeState@@QBEPAVQDeclarativeAbstractBinding@@PAVQObject@@ABVQByteArray@@@Z @ 1655 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativeState::bindingInRevertList(class QObject *, class QByteArray const &) const
+ ?bindingInRevertList@QDeclarativeState@@QBEPAVQDeclarativeAbstractBinding@@PAVQObject@@ABVQByteArray@@@Z @ 1655 NONAME ; class QDeclarativeAbstractBinding * QDeclarativeState::bindingInRevertList(class QObject *, class QByteArray const &) const
?d_func@QDeclarativePropertyChanges@@ABEPBVQDeclarativePropertyChangesPrivate@@XZ @ 1656 NONAME ABSENT ; class QDeclarativePropertyChangesPrivate const * QDeclarativePropertyChanges::d_func(void) const
?containsProperty@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1657 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsProperty(class QByteArray const &) const
?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1658 NONAME ABSENT ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *, int)
?property@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1659 NONAME ABSENT ; class QVariant QDeclarativePropertyChanges::property(class QByteArray const &) const
?containsExpression@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1660 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsExpression(class QByteArray const &) const
- ?d_func@QDeclarativeStateOperation@@ABEPBVQDeclarativeStateOperationPrivate@@XZ @ 1661 NONAME ABSENT ; class QDeclarativeStateOperationPrivate const * QDeclarativeStateOperation::d_func(void) const
+ ?d_func@QDeclarativeStateOperation@@ABEPBVQDeclarativeStateOperationPrivate@@XZ @ 1661 NONAME ; class QDeclarativeStateOperationPrivate const * QDeclarativeStateOperation::d_func(void) const
?d_func@QDeclarativePropertyChanges@@AAEPAVQDeclarativePropertyChangesPrivate@@XZ @ 1662 NONAME ABSENT ; class QDeclarativePropertyChangesPrivate * QDeclarativePropertyChanges::d_func(void)
- ?state@QDeclarativeStateOperation@@QBEPAVQDeclarativeState@@XZ @ 1663 NONAME ABSENT ; class QDeclarativeState * QDeclarativeStateOperation::state(void) const
+ ?state@QDeclarativeStateOperation@@QBEPAVQDeclarativeState@@XZ @ 1663 NONAME ; class QDeclarativeState * QDeclarativeStateOperation::state(void) const
?value@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1664 NONAME ABSENT ; class QVariant QDeclarativePropertyChanges::value(class QByteArray const &) const
?qt_metacall@QDeclarativePropertyChanges@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1665 NONAME ABSENT ; int QDeclarativePropertyChanges::qt_metacall(enum QMetaObject::Call, int, void * *)
?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1666 NONAME ABSENT ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *)
?attachToState@QDeclarativePropertyChanges@@QAEXXZ @ 1667 NONAME ABSENT ; void QDeclarativePropertyChanges::attachToState(void)
?changeExpression@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQString@@@Z @ 1668 NONAME ABSENT ; void QDeclarativePropertyChanges::changeExpression(class QByteArray const &, class QString const &)
- ?addEntryToRevertList@QDeclarativeState@@QAEXABVQDeclarativeAction@@@Z @ 1669 NONAME ABSENT ; void QDeclarativeState::addEntryToRevertList(class QDeclarativeAction const &)
+ ?addEntryToRevertList@QDeclarativeState@@QAEXABVQDeclarativeAction@@@Z @ 1669 NONAME ; void QDeclarativeState::addEntryToRevertList(class QDeclarativeAction const &)
??0QDeclarativePropertyChanges@@QAE@XZ @ 1670 NONAME ABSENT ; QDeclarativePropertyChanges::QDeclarativePropertyChanges(void)
?resources_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1671 NONAME ; void QDeclarativeItemPrivate::resources_clear(class QDeclarativeListProperty<class QObject> *)
?isExplicit@QDeclarativePropertyChanges@@QBE_NXZ @ 1672 NONAME ABSENT ; bool QDeclarativePropertyChanges::isExplicit(void) const
- ?setState@QDeclarativeStateOperation@@QAEXPAVQDeclarativeState@@@Z @ 1673 NONAME ABSENT ; void QDeclarativeStateOperation::setState(class QDeclarativeState *)
+ ?setState@QDeclarativeStateOperation@@QAEXPAVQDeclarativeState@@@Z @ 1673 NONAME ; void QDeclarativeStateOperation::setState(class QDeclarativeState *)
?detachFromState@QDeclarativePropertyChanges@@QAEXXZ @ 1674 NONAME ABSENT ; void QDeclarativePropertyChanges::detachFromState(void)
?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1675 NONAME ABSENT ; class QString QDeclarativePropertyChanges::tr(char const *, char const *, int)
- ?addEntriesToRevertList@QDeclarativeState@@QAEXABV?$QList@VQDeclarativeAction@@@@@Z @ 1676 NONAME ABSENT ; void QDeclarativeState::addEntriesToRevertList(class QList<class QDeclarativeAction> const &)
+ ?addEntriesToRevertList@QDeclarativeState@@QAEXABV?$QList@VQDeclarativeAction@@@@@Z @ 1676 NONAME ; void QDeclarativeState::addEntriesToRevertList(class QList<class QDeclarativeAction> const &)
?expression@QDeclarativePropertyChanges@@QBE?AVQString@@ABVQByteArray@@@Z @ 1677 NONAME ABSENT ; class QString QDeclarativePropertyChanges::expression(class QByteArray const &) const
?object@QDeclarativePropertyChanges@@QBEPAVQObject@@XZ @ 1678 NONAME ABSENT ; class QObject * QDeclarativePropertyChanges::object(void) const
- ?valueInRevertList@QDeclarativeState@@QBE?AVQVariant@@PAVQObject@@ABVQByteArray@@@Z @ 1679 NONAME ABSENT ; class QVariant QDeclarativeState::valueInRevertList(class QObject *, class QByteArray const &) const
- ?removeAllEntriesFromRevertList@QDeclarativeState@@QAEXPAVQObject@@@Z @ 1680 NONAME ABSENT ; void QDeclarativeState::removeAllEntriesFromRevertList(class QObject *)
- ?d_func@QDeclarativeStateOperation@@AAEPAVQDeclarativeStateOperationPrivate@@XZ @ 1681 NONAME ABSENT ; class QDeclarativeStateOperationPrivate * QDeclarativeStateOperation::d_func(void)
- ?changeValueInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@ABVQVariant@@@Z @ 1682 NONAME ABSENT ; bool QDeclarativeState::changeValueInRevertList(class QObject *, class QByteArray const &, class QVariant const &)
+ ?valueInRevertList@QDeclarativeState@@QBE?AVQVariant@@PAVQObject@@ABVQByteArray@@@Z @ 1679 NONAME ; class QVariant QDeclarativeState::valueInRevertList(class QObject *, class QByteArray const &) const
+ ?removeAllEntriesFromRevertList@QDeclarativeState@@QAEXPAVQObject@@@Z @ 1680 NONAME ; void QDeclarativeState::removeAllEntriesFromRevertList(class QObject *)
+ ?d_func@QDeclarativeStateOperation@@AAEPAVQDeclarativeStateOperationPrivate@@XZ @ 1681 NONAME ; class QDeclarativeStateOperationPrivate * QDeclarativeStateOperation::d_func(void)
+ ?changeValueInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@ABVQVariant@@@Z @ 1682 NONAME ; bool QDeclarativeState::changeValueInRevertList(class QObject *, class QByteArray const &, class QVariant const &)
?setIsExplicit@QDeclarativePropertyChanges@@QAEX_N@Z @ 1683 NONAME ABSENT ; void QDeclarativePropertyChanges::setIsExplicit(bool)
- ?isStateActive@QDeclarativeState@@QBE_NXZ @ 1684 NONAME ABSENT ; bool QDeclarativeState::isStateActive(void) const
+ ?isStateActive@QDeclarativeState@@QBE_NXZ @ 1684 NONAME ; bool QDeclarativeState::isStateActive(void) const
?data_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1685 NONAME ; int QDeclarativeItemPrivate::data_count(class QDeclarativeListProperty<class QObject> *)
?removeProperty@QDeclarativePropertyChanges@@QAEXABVQByteArray@@@Z @ 1686 NONAME ABSENT ; void QDeclarativePropertyChanges::removeProperty(class QByteArray const &)
?data_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 1687 NONAME ; class QObject * QDeclarativeItemPrivate::data_at(class QDeclarativeListProperty<class QObject> *, int)
?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1688 NONAME ABSENT ; class QString QDeclarativePropertyChanges::tr(char const *, char const *)
- ?changeBindingInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@PAVQDeclarativeAbstractBinding@@@Z @ 1689 NONAME ABSENT ; bool QDeclarativeState::changeBindingInRevertList(class QObject *, class QByteArray const &, class QDeclarativeAbstractBinding *)
+ ?changeBindingInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@PAVQDeclarativeAbstractBinding@@@Z @ 1689 NONAME ; bool QDeclarativeState::changeBindingInRevertList(class QObject *, class QByteArray const &, class QDeclarativeAbstractBinding *)
?getStaticMetaObject@QDeclarativePropertyChanges@@SAABUQMetaObject@@XZ @ 1690 NONAME ABSENT ; struct QMetaObject const & QDeclarativePropertyChanges::getStaticMetaObject(void)
?weakPointer@QDeclarativeAbstractBinding@@QAE?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@XZ @ 1691 NONAME ABSENT ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::weakPointer(void)
?getStaticMetaObject@QDeclarativeScriptAction@@SAABUQMetaObject@@XZ @ 1692 NONAME ABSENT ; struct QMetaObject const & QDeclarativeScriptAction::getStaticMetaObject(void)
@@ -1838,5 +1838,6 @@ EXPORTS
?addChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1837 NONAME ABSENT ; void QDeclarativeBasePositioner::addChanged(void)
?start@QDeclarativeAbstractAnimation@@QAEXXZ @ 1838 NONAME ABSENT ; void QDeclarativeAbstractAnimation::start(void)
?qt_metacall@QDeclarativeAbstractAnimation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1839 NONAME ABSENT ; int QDeclarativeAbstractAnimation::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?connect@QDeclarativePropertyPrivate@@SA_NPBVQObject@@H0HHPAH@Z @ 1840 NONAME ABSENT ; bool QDeclarativePropertyPrivate::connect(class QObject const *, int, class QObject const *, int, int, int *)
+ ?enableDebugging@QDeclarativeDebugHelper@@SAXXZ @ 1840 NONAME ; void QDeclarativeDebugHelper::enableDebugging(void)
+ ?connect@QDeclarativePropertyPrivate@@SA_NPBVQObject@@H0HHPAH@Z @ 1841 NONAME ABSENT ; bool QDeclarativePropertyPrivate::connect(class QObject const *, int, class QObject const *, int, int, int *)
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 7cc27528f2..c91b22cbe5 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12890,10 +12890,12 @@ EXPORTS
?lastRightBearing@QFontEngine@@IAE?AUQFixed@@ABUQGlyphLayout@@_N@Z @ 12889 NONAME ; struct QFixed QFontEngine::lastRightBearing(struct QGlyphLayout const &, bool)
?childrenBoundingRectHelper@QGraphicsItemPrivate@@QAEXPAVQTransform@@PAVQRectF@@PAVQGraphicsItem@@@Z @ 12890 NONAME ; void QGraphicsItemPrivate::childrenBoundingRectHelper(class QTransform *, class QRectF *, class QGraphicsItem *)
?setTimeout@QTapAndHoldGesture@@SAXH@Z @ 12891 NONAME ; void QTapAndHoldGesture::setTimeout(int)
- ?qmljsDebugArguments@QApplicationPrivate@@2VQString@@A @ 12892 NONAME ; class QString QApplicationPrivate::qmljsDebugArguments
+ ?qmljsDebugArguments@QApplicationPrivate@@2VQString@@A @ 12892 NONAME ABSENT ; class QString QApplicationPrivate::qmljsDebugArguments
?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@PAVQGraphicsItem@@@Z @ 12893 NONAME ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QGraphicsItem *) const
?maxTextureHeight@QTextureGlyphCache@@UBEHXZ @ 12894 NONAME ; int QTextureGlyphCache::maxTextureHeight(void) const
?maxTextureWidth@QTextureGlyphCache@@UBEHXZ @ 12895 NONAME ; int QTextureGlyphCache::maxTextureWidth(void) const
- ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12896 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &)
- ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12897 NONAME ; class QString QFont::lastResortFont(void) const
+ ?qmljs_debug_arguments@QApplicationPrivate@@2VQString@@A @ 12896 NONAME ; class QString QApplicationPrivate::qmljs_debug_arguments
+ ?qmljsDebugArgumentsString@QApplicationPrivate@@SA?AVQString@@XZ @ 12897 NONAME ; class QString QApplicationPrivate::qmljsDebugArgumentsString(void)
+ ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12898 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &)
+ ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12899 NONAME ; class QString QFont::lastResortFont(void) const
diff --git a/src/s60installs/bwins/QtOpenVGu.def b/src/s60installs/bwins/QtOpenVGu.def
index a67725ed96..87b9c7f03c 100644
--- a/src/s60installs/bwins/QtOpenVGu.def
+++ b/src/s60installs/bwins/QtOpenVGu.def
@@ -175,4 +175,5 @@ EXPORTS
?createPixmapForImage@QVGPixmapData@@IAEXAAVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@_N@Z @ 174 NONAME ; void QVGPixmapData::createPixmapForImage(class QImage &, class QFlags<enum Qt::ImageConversionFlag>, bool)
?fromData@QVGPixmapData@@UAE_NPBEIPBDV?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 175 NONAME ; bool QVGPixmapData::fromData(unsigned char const *, unsigned int, char const *, class QFlags<enum Qt::ImageConversionFlag>)
?fromImageReader@QVGPixmapData@@UAEXPAVQImageReader@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 176 NONAME ; void QVGPixmapData::fromImageReader(class QImageReader *, class QFlags<enum Qt::ImageConversionFlag>)
+ ?canVgWritePixels@QVGPaintEngine@@ABE_NABVQImage@@@Z @ 177 NONAME ; bool QVGPaintEngine::canVgWritePixels(class QImage const &) const
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index eb53dca3de..aefbe1f380 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3713,4 +3713,5 @@ EXPORTS
_ZrsR11QDataStreamR12QEasingCurve @ 3712 NONAME
_Z26qt_symbian_SetupThreadHeapiR24SStdEpocThreadCreateInfo @ 3713 NONAME
_ZN24QAbstractDeclarativeData17objectNameChangedE @ 3714 NONAME DATA 4
+ _ZN23QEventDispatcherSymbian36queueDeferredActiveObjectsCompletionEv @ 3715 NONAME
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index 33c3d5338f..1f690611fc 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -170,24 +170,24 @@ EXPORTS
_ZN17QDeclarativeErrorD1Ev @ 169 NONAME
_ZN17QDeclarativeErrorD2Ev @ 170 NONAME
_ZN17QDeclarativeErroraSERKS_ @ 171 NONAME
- _ZN17QDeclarativeState10setExtendsERK7QString @ 172 NONAME ABSENT
- _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 173 NONAME ABSENT
- _ZN17QDeclarativeState11qt_metacastEPKc @ 174 NONAME ABSENT
- _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 175 NONAME ABSENT
- _ZN17QDeclarativeState16staticMetaObjectE @ 176 NONAME DATA 16 ABSENT
- _ZN17QDeclarativeState19getStaticMetaObjectEv @ 177 NONAME ABSENT
- _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 178 NONAME ABSENT
- _ZN17QDeclarativeState6cancelEv @ 179 NONAME ABSENT
- _ZN17QDeclarativeState7changesEv @ 180 NONAME ABSENT
- _ZN17QDeclarativeState7setNameERK7QString @ 181 NONAME ABSENT
- _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 182 NONAME ABSENT
- _ZN17QDeclarativeState9completedEv @ 183 NONAME ABSENT
- _ZN17QDeclarativeStateC1EP7QObject @ 184 NONAME ABSENT
- _ZN17QDeclarativeStateC2EP7QObject @ 185 NONAME ABSENT
- _ZN17QDeclarativeStateD0Ev @ 186 NONAME ABSENT
- _ZN17QDeclarativeStateD1Ev @ 187 NONAME ABSENT
- _ZN17QDeclarativeStateD2Ev @ 188 NONAME ABSENT
- _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 189 NONAME ABSENT
+ _ZN17QDeclarativeState10setExtendsERK7QString @ 172 NONAME
+ _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 173 NONAME
+ _ZN17QDeclarativeState11qt_metacastEPKc @ 174 NONAME
+ _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 175 NONAME
+ _ZN17QDeclarativeState16staticMetaObjectE @ 176 NONAME DATA 16
+ _ZN17QDeclarativeState19getStaticMetaObjectEv @ 177 NONAME
+ _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 178 NONAME
+ _ZN17QDeclarativeState6cancelEv @ 179 NONAME
+ _ZN17QDeclarativeState7changesEv @ 180 NONAME
+ _ZN17QDeclarativeState7setNameERK7QString @ 181 NONAME
+ _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 182 NONAME
+ _ZN17QDeclarativeState9completedEv @ 183 NONAME
+ _ZN17QDeclarativeStateC1EP7QObject @ 184 NONAME
+ _ZN17QDeclarativeStateC2EP7QObject @ 185 NONAME
+ _ZN17QDeclarativeStateD0Ev @ 186 NONAME
+ _ZN17QDeclarativeStateD1Ev @ 187 NONAME
+ _ZN17QDeclarativeStateD2Ev @ 188 NONAME
+ _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 189 NONAME
_ZN18QDeclarativeAction17deleteFromBindingEv @ 190 NONAME ABSENT
_ZN18QDeclarativeActionC1EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 191 NONAME ABSENT
_ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 192 NONAME ABSENT
@@ -637,42 +637,42 @@ EXPORTS
_ZN22QDeclarativeExpressionD0Ev @ 636 NONAME
_ZN22QDeclarativeExpressionD1Ev @ 637 NONAME
_ZN22QDeclarativeExpressionD2Ev @ 638 NONAME
- _ZN22QDeclarativeStateGroup10classBeginEv @ 639 NONAME ABSENT
- _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 640 NONAME ABSENT
- _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 641 NONAME ABSENT
- _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 642 NONAME ABSENT
- _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 643 NONAME ABSENT
- _ZN22QDeclarativeStateGroup14statesPropertyEv @ 644 NONAME ABSENT
- _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 645 NONAME ABSENT
- _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 646 NONAME DATA 16 ABSENT
- _ZN22QDeclarativeStateGroup17componentCompleteEv @ 647 NONAME ABSENT
- _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 648 NONAME ABSENT
- _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 649 NONAME ABSENT
- _ZN22QDeclarativeStateGroup8setStateERK7QString @ 650 NONAME ABSENT
- _ZN22QDeclarativeStateGroupC1EP7QObject @ 651 NONAME ABSENT
- _ZN22QDeclarativeStateGroupC2EP7QObject @ 652 NONAME ABSENT
- _ZN22QDeclarativeStateGroupD0Ev @ 653 NONAME ABSENT
- _ZN22QDeclarativeStateGroupD1Ev @ 654 NONAME ABSENT
- _ZN22QDeclarativeStateGroupD2Ev @ 655 NONAME ABSENT
- _ZN22QDeclarativeTransition10animationsEv @ 656 NONAME ABSENT
- _ZN22QDeclarativeTransition10setToStateERK7QString @ 657 NONAME ABSENT
- _ZN22QDeclarativeTransition11fromChangedEv @ 658 NONAME ABSENT
- _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 659 NONAME ABSENT
- _ZN22QDeclarativeTransition11qt_metacastEPKc @ 660 NONAME ABSENT
- _ZN22QDeclarativeTransition11setReversedEb @ 661 NONAME ABSENT
- _ZN22QDeclarativeTransition12setFromStateERK7QString @ 662 NONAME ABSENT
- _ZN22QDeclarativeTransition13setReversibleEb @ 663 NONAME ABSENT
- _ZN22QDeclarativeTransition16staticMetaObjectE @ 664 NONAME DATA 16 ABSENT
- _ZN22QDeclarativeTransition17reversibleChangedEv @ 665 NONAME ABSENT
- _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 666 NONAME ABSENT
- _ZN22QDeclarativeTransition4stopEv @ 667 NONAME ABSENT
- _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 668 NONAME ABSENT
- _ZN22QDeclarativeTransition9toChangedEv @ 669 NONAME ABSENT
- _ZN22QDeclarativeTransitionC1EP7QObject @ 670 NONAME ABSENT
- _ZN22QDeclarativeTransitionC2EP7QObject @ 671 NONAME ABSENT
- _ZN22QDeclarativeTransitionD0Ev @ 672 NONAME ABSENT
- _ZN22QDeclarativeTransitionD1Ev @ 673 NONAME ABSENT
- _ZN22QDeclarativeTransitionD2Ev @ 674 NONAME ABSENT
+ _ZN22QDeclarativeStateGroup10classBeginEv @ 639 NONAME
+ _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 640 NONAME
+ _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 641 NONAME
+ _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 642 NONAME
+ _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 643 NONAME
+ _ZN22QDeclarativeStateGroup14statesPropertyEv @ 644 NONAME
+ _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 645 NONAME
+ _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 646 NONAME DATA 16
+ _ZN22QDeclarativeStateGroup17componentCompleteEv @ 647 NONAME
+ _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 648 NONAME
+ _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 649 NONAME
+ _ZN22QDeclarativeStateGroup8setStateERK7QString @ 650 NONAME
+ _ZN22QDeclarativeStateGroupC1EP7QObject @ 651 NONAME
+ _ZN22QDeclarativeStateGroupC2EP7QObject @ 652 NONAME
+ _ZN22QDeclarativeStateGroupD0Ev @ 653 NONAME
+ _ZN22QDeclarativeStateGroupD1Ev @ 654 NONAME
+ _ZN22QDeclarativeStateGroupD2Ev @ 655 NONAME
+ _ZN22QDeclarativeTransition10animationsEv @ 656 NONAME
+ _ZN22QDeclarativeTransition10setToStateERK7QString @ 657 NONAME
+ _ZN22QDeclarativeTransition11fromChangedEv @ 658 NONAME
+ _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 659 NONAME
+ _ZN22QDeclarativeTransition11qt_metacastEPKc @ 660 NONAME
+ _ZN22QDeclarativeTransition11setReversedEb @ 661 NONAME
+ _ZN22QDeclarativeTransition12setFromStateERK7QString @ 662 NONAME
+ _ZN22QDeclarativeTransition13setReversibleEb @ 663 NONAME
+ _ZN22QDeclarativeTransition16staticMetaObjectE @ 664 NONAME DATA 16
+ _ZN22QDeclarativeTransition17reversibleChangedEv @ 665 NONAME
+ _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 666 NONAME
+ _ZN22QDeclarativeTransition4stopEv @ 667 NONAME
+ _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 668 NONAME
+ _ZN22QDeclarativeTransition9toChangedEv @ 669 NONAME
+ _ZN22QDeclarativeTransitionC1EP7QObject @ 670 NONAME
+ _ZN22QDeclarativeTransitionC2EP7QObject @ 671 NONAME
+ _ZN22QDeclarativeTransitionD0Ev @ 672 NONAME
+ _ZN22QDeclarativeTransitionD1Ev @ 673 NONAME
+ _ZN22QDeclarativeTransitionD2Ev @ 674 NONAME
_ZN23QDeclarativeDebugClient10setEnabledEb @ 675 NONAME ABSENT
_ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 676 NONAME ABSENT
_ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 677 NONAME ABSENT
@@ -835,13 +835,13 @@ EXPORTS
_ZN26QDeclarativeOpenMetaObjectD2Ev @ 834 NONAME ABSENT
_ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 835 NONAME ABSENT
_ZN26QDeclarativeOpenMetaObjectixEi @ 836 NONAME ABSENT
- _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 837 NONAME ABSENT
- _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 838 NONAME ABSENT
- _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 839 NONAME DATA 16 ABSENT
- _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 840 NONAME ABSENT
- _ZN26QDeclarativeStateOperation7actionsEv @ 841 NONAME ABSENT
- _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 842 NONAME ABSENT
- _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 843 NONAME ABSENT
+ _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 837 NONAME
+ _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 838 NONAME
+ _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 839 NONAME DATA 16
+ _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 840 NONAME
+ _ZN26QDeclarativeStateOperation7actionsEv @ 841 NONAME
+ _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 842 NONAME
+ _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 843 NONAME
_ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 844 NONAME ABSENT
_ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 845 NONAME ABSENT
_ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 846 NONAME ABSENT
@@ -1156,15 +1156,15 @@ EXPORTS
_ZNK17QDeclarativeError6columnEv @ 1155 NONAME
_ZNK17QDeclarativeError7isValidEv @ 1156 NONAME
_ZNK17QDeclarativeError8toStringEv @ 1157 NONAME
- _ZNK17QDeclarativeState10metaObjectEv @ 1158 NONAME ABSENT
- _ZNK17QDeclarativeState10stateGroupEv @ 1159 NONAME ABSENT
- _ZNK17QDeclarativeState11isWhenKnownEv @ 1160 NONAME ABSENT
- _ZNK17QDeclarativeState11operationAtEi @ 1161 NONAME ABSENT
- _ZNK17QDeclarativeState14operationCountEv @ 1162 NONAME ABSENT
- _ZNK17QDeclarativeState4nameEv @ 1163 NONAME ABSENT
- _ZNK17QDeclarativeState4whenEv @ 1164 NONAME ABSENT
- _ZNK17QDeclarativeState7extendsEv @ 1165 NONAME ABSENT
- _ZNK17QDeclarativeState7isNamedEv @ 1166 NONAME ABSENT
+ _ZNK17QDeclarativeState10metaObjectEv @ 1158 NONAME
+ _ZNK17QDeclarativeState10stateGroupEv @ 1159 NONAME
+ _ZNK17QDeclarativeState11isWhenKnownEv @ 1160 NONAME
+ _ZNK17QDeclarativeState11operationAtEi @ 1161 NONAME
+ _ZNK17QDeclarativeState14operationCountEv @ 1162 NONAME
+ _ZNK17QDeclarativeState4nameEv @ 1163 NONAME
+ _ZNK17QDeclarativeState4whenEv @ 1164 NONAME
+ _ZNK17QDeclarativeState7extendsEv @ 1165 NONAME
+ _ZNK17QDeclarativeState7isNamedEv @ 1166 NONAME
_ZNK18QDeclarativeEngine10metaObjectEv @ 1167 NONAME
_ZNK18QDeclarativeEngine11rootContextEv @ 1168 NONAME
_ZNK18QDeclarativeEngine13imageProviderERK7QString @ 1169 NONAME
@@ -1381,14 +1381,14 @@ EXPORTS
_ZNK22QDeclarativeExpression6engineEv @ 1380 NONAME
_ZNK22QDeclarativeExpression7contextEv @ 1381 NONAME
_ZNK22QDeclarativeExpression8hasErrorEv @ 1382 NONAME
- _ZNK22QDeclarativeStateGroup10metaObjectEv @ 1383 NONAME ABSENT
- _ZNK22QDeclarativeStateGroup5stateEv @ 1384 NONAME ABSENT
- _ZNK22QDeclarativeStateGroup6statesEv @ 1385 NONAME ABSENT
- _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 1386 NONAME ABSENT
- _ZNK22QDeclarativeTransition10metaObjectEv @ 1387 NONAME ABSENT
- _ZNK22QDeclarativeTransition10reversibleEv @ 1388 NONAME ABSENT
- _ZNK22QDeclarativeTransition7toStateEv @ 1389 NONAME ABSENT
- _ZNK22QDeclarativeTransition9fromStateEv @ 1390 NONAME ABSENT
+ _ZNK22QDeclarativeStateGroup10metaObjectEv @ 1383 NONAME
+ _ZNK22QDeclarativeStateGroup5stateEv @ 1384 NONAME
+ _ZNK22QDeclarativeStateGroup6statesEv @ 1385 NONAME
+ _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 1386 NONAME
+ _ZNK22QDeclarativeTransition10metaObjectEv @ 1387 NONAME
+ _ZNK22QDeclarativeTransition10reversibleEv @ 1388 NONAME
+ _ZNK22QDeclarativeTransition7toStateEv @ 1389 NONAME
+ _ZNK22QDeclarativeTransition9fromStateEv @ 1390 NONAME
_ZNK23QDeclarativeDebugClient10metaObjectEv @ 1391 NONAME ABSENT
_ZNK23QDeclarativeDebugClient11isConnectedEv @ 1392 NONAME ABSENT
_ZNK23QDeclarativeDebugClient4nameEv @ 1393 NONAME ABSENT
@@ -1452,7 +1452,7 @@ EXPORTS
_ZNK26QDeclarativeOpenMetaObject6objectEv @ 1451 NONAME ABSENT
_ZNK26QDeclarativeOpenMetaObject6parentEv @ 1452 NONAME ABSENT
_ZNK26QDeclarativeOpenMetaObject8hasValueEi @ 1453 NONAME ABSENT
- _ZNK26QDeclarativeStateOperation10metaObjectEv @ 1454 NONAME ABSENT
+ _ZNK26QDeclarativeStateOperation10metaObjectEv @ 1454 NONAME
_ZNK27QDeclarativeAbstractBinding10expressionEv @ 1455 NONAME ABSENT
_ZNK27QDeclarativeDebugConnection10metaObjectEv @ 1456 NONAME ABSENT
_ZNK27QDeclarativeDebugConnection11isConnectedEv @ 1457 NONAME ABSENT
@@ -1531,7 +1531,7 @@ EXPORTS
_ZTI16QDeclarativeItem @ 1530 NONAME
_ZTI16QDeclarativeText @ 1531 NONAME ABSENT
_ZTI16QDeclarativeView @ 1532 NONAME
- _ZTI17QDeclarativeState @ 1533 NONAME ABSENT
+ _ZTI17QDeclarativeState @ 1533 NONAME
_ZTI18QDeclarativeEngine @ 1534 NONAME
_ZTI18QMetaObjectBuilder @ 1535 NONAME ABSENT
_ZTI19QDeclarativeAnchors @ 1536 NONAME ABSENT
@@ -1547,8 +1547,8 @@ EXPORTS
_ZTI22QDeclarativeDebugQuery @ 1546 NONAME ABSENT
_ZTI22QDeclarativeDebugWatch @ 1547 NONAME ABSENT
_ZTI22QDeclarativeExpression @ 1548 NONAME
- _ZTI22QDeclarativeStateGroup @ 1549 NONAME ABSENT
- _ZTI22QDeclarativeTransition @ 1550 NONAME ABSENT
+ _ZTI22QDeclarativeStateGroup @ 1549 NONAME
+ _ZTI22QDeclarativeTransition @ 1550 NONAME
_ZTI23QDeclarativeDebugClient @ 1551 NONAME ABSENT
_ZTI23QDeclarativeEngineDebug @ 1552 NONAME ABSENT
_ZTI23QDeclarativeItemPrivate @ 1553 NONAME
@@ -1559,7 +1559,7 @@ EXPORTS
_ZTI25QDeclarativeImageProvider @ 1558 NONAME
_ZTI26QDeclarativeDebuggerStatus @ 1559 NONAME ABSENT
_ZTI26QDeclarativeOpenMetaObject @ 1560 NONAME ABSENT
- _ZTI26QDeclarativeStateOperation @ 1561 NONAME ABSENT
+ _ZTI26QDeclarativeStateOperation @ 1561 NONAME
_ZTI27QDeclarativeAbstractBinding @ 1562 NONAME ABSENT
_ZTI27QDeclarativeDebugConnection @ 1563 NONAME ABSENT
_ZTI27QDeclarativeExtensionPlugin @ 1564 NONAME
@@ -1581,7 +1581,7 @@ EXPORTS
_ZTV16QDeclarativeItem @ 1580 NONAME
_ZTV16QDeclarativeText @ 1581 NONAME ABSENT
_ZTV16QDeclarativeView @ 1582 NONAME
- _ZTV17QDeclarativeState @ 1583 NONAME ABSENT
+ _ZTV17QDeclarativeState @ 1583 NONAME
_ZTV18QDeclarativeEngine @ 1584 NONAME
_ZTV18QMetaObjectBuilder @ 1585 NONAME ABSENT
_ZTV19QDeclarativeAnchors @ 1586 NONAME ABSENT
@@ -1597,8 +1597,8 @@ EXPORTS
_ZTV22QDeclarativeDebugQuery @ 1596 NONAME ABSENT
_ZTV22QDeclarativeDebugWatch @ 1597 NONAME ABSENT
_ZTV22QDeclarativeExpression @ 1598 NONAME
- _ZTV22QDeclarativeStateGroup @ 1599 NONAME ABSENT
- _ZTV22QDeclarativeTransition @ 1600 NONAME ABSENT
+ _ZTV22QDeclarativeStateGroup @ 1599 NONAME
+ _ZTV22QDeclarativeTransition @ 1600 NONAME
_ZTV23QDeclarativeDebugClient @ 1601 NONAME ABSENT
_ZTV23QDeclarativeEngineDebug @ 1602 NONAME ABSENT
_ZTV23QDeclarativeItemPrivate @ 1603 NONAME
@@ -1609,7 +1609,7 @@ EXPORTS
_ZTV25QDeclarativeImageProvider @ 1608 NONAME
_ZTV26QDeclarativeDebuggerStatus @ 1609 NONAME ABSENT
_ZTV26QDeclarativeOpenMetaObject @ 1610 NONAME ABSENT
- _ZTV26QDeclarativeStateOperation @ 1611 NONAME ABSENT
+ _ZTV26QDeclarativeStateOperation @ 1611 NONAME
_ZTV27QDeclarativeAbstractBinding @ 1612 NONAME ABSENT
_ZTV27QDeclarativeDebugConnection @ 1613 NONAME ABSENT
_ZTV27QDeclarativeExtensionPlugin @ 1614 NONAME
@@ -1656,10 +1656,10 @@ EXPORTS
_ZThn8_N20QDeclarativeBehaviorD0Ev @ 1655 NONAME ABSENT
_ZThn8_N20QDeclarativeBehaviorD1Ev @ 1656 NONAME ABSENT
_ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1657 NONAME ABSENT
- _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 1658 NONAME ABSENT
- _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 1659 NONAME ABSENT
- _ZThn8_N22QDeclarativeStateGroupD0Ev @ 1660 NONAME ABSENT
- _ZThn8_N22QDeclarativeStateGroupD1Ev @ 1661 NONAME ABSENT
+ _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 1658 NONAME
+ _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 1659 NONAME
+ _ZThn8_N22QDeclarativeStateGroupD0Ev @ 1660 NONAME
+ _ZThn8_N22QDeclarativeStateGroupD1Ev @ 1661 NONAME
_ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1662 NONAME
_ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 1663 NONAME
_ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 1664 NONAME
@@ -1675,17 +1675,17 @@ EXPORTS
_ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1674 NONAME ABSENT
_ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1675 NONAME ABSENT
_ZN23QDeclarativeEngineDebug10newObjectsEv @ 1676 NONAME ABSENT
- _ZN17QDeclarativeState20addEntryToRevertListERK18QDeclarativeAction @ 1677 NONAME ABSENT
- _ZN17QDeclarativeState22addEntriesToRevertListERK5QListI18QDeclarativeActionE @ 1678 NONAME ABSENT
- _ZN17QDeclarativeState23changeValueInRevertListEP7QObjectRK10QByteArrayRK8QVariant @ 1679 NONAME ABSENT
- _ZN17QDeclarativeState25changeBindingInRevertListEP7QObjectRK10QByteArrayP27QDeclarativeAbstractBinding @ 1680 NONAME ABSENT
- _ZN17QDeclarativeState25removeEntryFromRevertListEP7QObjectRK10QByteArray @ 1681 NONAME ABSENT
- _ZN17QDeclarativeState30removeAllEntriesFromRevertListEP7QObject @ 1682 NONAME ABSENT
+ _ZN17QDeclarativeState20addEntryToRevertListERK18QDeclarativeAction @ 1677 NONAME
+ _ZN17QDeclarativeState22addEntriesToRevertListERK5QListI18QDeclarativeActionE @ 1678 NONAME
+ _ZN17QDeclarativeState23changeValueInRevertListEP7QObjectRK10QByteArrayRK8QVariant @ 1679 NONAME
+ _ZN17QDeclarativeState25changeBindingInRevertListEP7QObjectRK10QByteArrayP27QDeclarativeAbstractBinding @ 1680 NONAME
+ _ZN17QDeclarativeState25removeEntryFromRevertListEP7QObjectRK10QByteArray @ 1681 NONAME
+ _ZN17QDeclarativeState30removeAllEntriesFromRevertListEP7QObject @ 1682 NONAME
_ZN23QDeclarativeItemPrivate10data_clearEP24QDeclarativeListPropertyI7QObjectE @ 1683 NONAME
_ZN23QDeclarativeItemPrivate10data_countEP24QDeclarativeListPropertyI7QObjectE @ 1684 NONAME
_ZN23QDeclarativeItemPrivate15resources_clearEP24QDeclarativeListPropertyI7QObjectE @ 1685 NONAME
_ZN23QDeclarativeItemPrivate7data_atEP24QDeclarativeListPropertyI7QObjectEi @ 1686 NONAME
- _ZN26QDeclarativeStateOperation8setStateEP17QDeclarativeState @ 1687 NONAME ABSENT
+ _ZN26QDeclarativeStateOperation8setStateEP17QDeclarativeState @ 1687 NONAME
_ZN27QDeclarativeAbstractBinding11weakPointerEv @ 1688 NONAME ABSENT
_ZN27QDeclarativePropertyChanges11changeValueERK10QByteArrayRK8QVariant @ 1689 NONAME ABSENT
_ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1690 NONAME ABSENT
@@ -1705,11 +1705,11 @@ EXPORTS
_ZN27QDeclarativePropertyChangesD0Ev @ 1704 NONAME ABSENT
_ZN27QDeclarativePropertyChangesD1Ev @ 1705 NONAME ABSENT
_ZN27QDeclarativePropertyChangesD2Ev @ 1706 NONAME ABSENT
- _ZNK17QDeclarativeState13isStateActiveEv @ 1707 NONAME ABSENT
- _ZNK17QDeclarativeState17valueInRevertListEP7QObjectRK10QByteArray @ 1708 NONAME ABSENT
- _ZNK17QDeclarativeState19bindingInRevertListEP7QObjectRK10QByteArray @ 1709 NONAME ABSENT
- _ZNK17QDeclarativeState28containsPropertyInRevertListEP7QObjectRK10QByteArray @ 1710 NONAME ABSENT
- _ZNK26QDeclarativeStateOperation5stateEv @ 1711 NONAME ABSENT
+ _ZNK17QDeclarativeState13isStateActiveEv @ 1707 NONAME
+ _ZNK17QDeclarativeState17valueInRevertListEP7QObjectRK10QByteArray @ 1708 NONAME
+ _ZNK17QDeclarativeState19bindingInRevertListEP7QObjectRK10QByteArray @ 1709 NONAME
+ _ZNK17QDeclarativeState28containsPropertyInRevertListEP7QObjectRK10QByteArray @ 1710 NONAME
+ _ZNK26QDeclarativeStateOperation5stateEv @ 1711 NONAME
_ZNK27QDeclarativePropertyChanges10expressionERK10QByteArray @ 1712 NONAME ABSENT
_ZNK27QDeclarativePropertyChanges10isExplicitEv @ 1713 NONAME ABSENT
_ZNK27QDeclarativePropertyChanges10metaObjectEv @ 1714 NONAME ABSENT
@@ -1883,5 +1883,6 @@ EXPORTS
_ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1882 NONAME ABSENT
_ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1883 NONAME ABSENT
_ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 1884 NONAME ABSENT
- _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1885 NONAME ABSENT
+ _ZN23QDeclarativeDebugHelper15enableDebuggingEv @ 1885 NONAME
+ _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1886 NONAME ABSENT
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 4e867a3320..75bb026245 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12094,9 +12094,14 @@ EXPORTS
_ZN18QTapAndHoldGesture7timeoutEv @ 12093 NONAME
_ZN20QGraphicsItemPrivate26childrenBoundingRectHelperEP10QTransformP6QRectFb @ 12094 NONAME ABSENT
_ZN20QGraphicsItemPrivate14children_clearEP24QDeclarativeListPropertyI15QGraphicsObjectE @ 12095 NONAME
- _ZN19QApplicationPrivate19qmljsDebugArgumentsE @ 12096 NONAME DATA 4
+ _ZN19QApplicationPrivate19qmljsDebugArgumentsE @ 12096 NONAME DATA 4 ABSENT
_ZN20QGraphicsItemPrivate26childrenBoundingRectHelperEP10QTransformP6QRectFP13QGraphicsItem @ 12097 NONAME
_ZNK20QGraphicsItemPrivate21effectiveBoundingRectEP13QGraphicsItem @ 12098 NONAME
- _ZNK5QFont14lastResortFontEv @ 12099 NONAME
- _ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12100 NONAME
+ _ZN19QApplicationPrivate21qmljs_debug_argumentsE @ 12099 NONAME DATA 4
+ _ZN19QApplicationPrivate25qmljsDebugArgumentsStringEv @ 12100 NONAME
+ _ZNK5QFont14lastResortFontEv @ 12101 NONAME
+ _ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12102 NONAME
+ _ZN15QStaticTextItem13setFontEngineEP11QFontEngine @ 12103 NONAME
+ _ZN15QStaticTextItemD1Ev @ 12104 NONAME
+ _ZN15QStaticTextItemD2Ev @ 12105 NONAME
diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def
index 99942b8e20..e1828c1e43 100644
--- a/src/s60installs/eabi/QtOpenVGu.def
+++ b/src/s60installs/eabi/QtOpenVGu.def
@@ -205,4 +205,5 @@ EXPORTS
_ZN13QVGPixmapData20createPixmapForImageER6QImage6QFlagsIN2Qt19ImageConversionFlagEEb @ 204 NONAME
_ZN13QVGPixmapData8fromDataEPKhjPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 205 NONAME
_ZN13QVGPixmapData8fromFileERK7QStringPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 206 NONAME
+ _ZNK14QVGPaintEngine16canVgWritePixelsERK6QImage @ 207 NONAME
diff --git a/src/s60installs/qt.iby b/src/s60installs/qt.iby
index 4afbf05c5d..2b3be0af0c 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -60,6 +60,8 @@ file=ABI_DIR\BUILD_DIR\qsymbianbearer.dll SHARED_LIB_DIR\qsymbianbearer.dll
// so don't bother including those plugins
file=ABI_DIR\BUILD_DIR\qts60plugin_5_0.dll SHARED_LIB_DIR\qts60plugin_5_0.dll
+file=ABI_DIR\BUILD_DIR\qtactilefeedback.dll SHARED_LIB_DIR\qtactilefeedback.dll
+
S60_APP_RESOURCE(s60main)
// imageformats stubs
@@ -105,6 +107,9 @@ data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qglgraphicssystem.qtplug
// bearer stub
data=\epoc32\data\z\resource\qt\plugins\bearer\qsymbianbearer.qtplugin resource\qt\plugins\bearer\qsymbianbearer.qtplugin
+// feedback
+data=\epoc32\data\z\resource\qt\plugins\feedback\qtactilefeedback.qtplugin resource\qt\plugins\feedback\qtactilefeedback.qtplugin
+
// Stub sis file
data=ZSYSTEM\install\qt_stub.sis System\Install\qt_stub.sis
data=ZSYSTEM\install\qtwebkit_stub.sis System\Install\qtwebkit_stub.sis
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index d3d9d44c97..2b3229ecd9 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -87,6 +87,12 @@ symbian: {
DEPLOYMENT += bearer_plugin
}
+ contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) {
+ feedback_plugin.sources = $$QT_BUILD_TREE/plugins/s60/feedback/qtactilefeedback$${QT_LIBINFIX}.dll
+ feedback_plugin.path = c:$$QT_PLUGINS_BASE_DIR/feedback
+ DEPLOYMENT += feedback_plugin
+ }
+
qtlibraries.pkg_postrules += qts60plugindeployment
qtlibraries.path = c:/sys/bin
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 2d5e5f4aa6..69abcadb2a 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -808,7 +808,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
JSC::UString comment;
if (args.size() > 2)
comment = args.at(2).toString(exec);
- QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr;
+ QCoreApplication::Encoding encoding = QCoreApplication::UnicodeUTF8;
if (args.size() > 3) {
JSC::UString encStr = args.at(3).toString(exec);
if (encStr == "CodecForTr")
@@ -824,9 +824,9 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
encoding, n);
#else
result = text;
@@ -878,10 +878,10 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
- QCoreApplication::CodecForTr, n);
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
+ QCoreApplication::UnicodeUTF8, n);
#else
result = text;
#endif
@@ -907,7 +907,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTrId(JSC::ExecState *exec, JSC::JSObject*,
int n = -1;
if (args.size() > 1)
n = args.at(1).toInt32(exec);
- return JSC::jsString(exec, qtTrId(QScript::convertToLatin1(id).constData(), n));
+ return JSC::jsString(exec, qtTrId(id.UTF8String().c_str(), n));
}
JSC::JSValue JSC_HOST_CALL functionQsTrIdNoOp(JSC::ExecState *, JSC::JSObject*, JSC::JSValue, const JSC::ArgList &args)
diff --git a/src/script/api/qscriptengine.h b/src/script/api/qscriptengine.h
index 830d477b77..24c8c13270 100644
--- a/src/script/api/qscriptengine.h
+++ b/src/script/api/qscriptengine.h
@@ -332,10 +332,7 @@ inline QScriptValue qScriptValueFromValue(QScriptEngine *engine, const T &t)
template <>
inline QScriptValue qScriptValueFromValue<QVariant>(QScriptEngine *engine, const QVariant &v)
{
- QScriptValue result = qScriptValueFromValue_helper(engine, v.userType(), v.data());
- if (!result.isValid())
- result = engine->newVariant(v);
- return result;
+ return qScriptValueFromValue_helper(engine, v.userType(), v.data());
}
inline bool qscriptvalue_cast_helper(const QScriptValue &value, int type, void *ptr)
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index fbd5d96925..8cd40579c8 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -1726,10 +1726,12 @@ QScriptValue QScriptValue::construct(const QScriptValueList &args)
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
- JSC::JSObject *result = JSC::construct(exec, callee, constructType, constructData, jscArgs);
+ JSC::JSValue result;
+ JSC::JSObject *newObject = JSC::construct(exec, callee, constructType, constructData, jscArgs);
if (exec->hadException()) {
- result = JSC::asObject(exec->exception());
+ result = exec->exception();
} else {
+ result = newObject;
QScriptEnginePrivate::restoreException(exec, savedException);
}
return d->engine->scriptValueFromJSCValue(result);
@@ -1786,11 +1788,12 @@ QScriptValue QScriptValue::construct(const QScriptValue &arguments)
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
- JSC::JSObject *result = JSC::construct(exec, callee, constructType, constructData, applyArgs);
+ JSC::JSValue result;
+ JSC::JSObject *newObject = JSC::construct(exec, callee, constructType, constructData, applyArgs);
if (exec->hadException()) {
- if (exec->exception().isObject())
- result = JSC::asObject(exec->exception());
+ result = exec->exception();
} else {
+ result = newObject;
QScriptEnginePrivate::restoreException(exec, savedException);
}
return d->engine->scriptValueFromJSCValue(result);
@@ -2023,6 +2026,7 @@ void QScriptValue::setData(const QScriptValue &data)
Q_D(QScriptValue);
if (!d || !d->isObject())
return;
+ QScript::APIShim shim(d->engine);
JSC::JSValue other = d->engine->scriptValueToJSCValue(data);
if (d->jscValue.inherits(&QScriptObject::info)) {
QScriptObject *scriptObject = static_cast<QScriptObject*>(JSC::asObject(d->jscValue));
diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp
index 28f7bd12e9..51c09761c8 100644
--- a/src/script/bridge/qscriptclassobject.cpp
+++ b/src/script/bridge/qscriptclassobject.cpp
@@ -78,6 +78,12 @@ bool ClassObjectDelegate::getOwnPropertySlot(QScriptObject* object,
scriptObject, scriptName, QScriptClass::HandlesReadAccess, &id);
if (flags & QScriptClass::HandlesReadAccess) {
QScriptValue value = m_scriptClass->property(scriptObject, scriptName, id);
+ if (!value.isValid()) {
+ // The class claims to have the property, but returned an invalid
+ // value. Silently convert to undefined to avoid the invalid value
+ // "escaping" into JS.
+ value = QScriptValue(QScriptValue::UndefinedValue);
+ }
slot.setValue(engine->scriptValueToJSCValue(value));
return true;
}
@@ -119,6 +125,12 @@ bool ClassObjectDelegate::getOwnPropertyDescriptor(QScriptObject *object,
attribs |= pflags & QScriptValue::UserRange;
// Rather than calling the getter, we could return an access descriptor here.
QScriptValue value = m_scriptClass->property(scriptObject, scriptName, id);
+ if (!value.isValid()) {
+ // The class claims to have the property, but returned an invalid
+ // value. Silently convert to undefined to avoid the invalid value
+ // "escaping" into JS.
+ value = QScriptValue(QScriptValue::UndefinedValue);
+ }
descriptor.setDescriptor(engine->scriptValueToJSCValue(value), attribs);
return true;
}
diff --git a/src/scripttools/debugging/qscriptdebuggeragent.cpp b/src/scripttools/debugging/qscriptdebuggeragent.cpp
index 551f6c36e3..93626397a3 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent.cpp
+++ b/src/scripttools/debugging/qscriptdebuggeragent.cpp
@@ -116,7 +116,7 @@ QScriptDebuggerAgent::~QScriptDebuggerAgent()
/*!
Instructs the agent to perform a "step into" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepIntoMode(int count)
{
@@ -129,7 +129,7 @@ void QScriptDebuggerAgent::enterStepIntoMode(int count)
/*!
Instructs the agent to perform a "step over" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepOverMode(int count)
{
@@ -146,7 +146,7 @@ void QScriptDebuggerAgent::enterStepOverMode(int count)
/*!
Instructs the agent to perform a "step out" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepOutMode()
{
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index 687005528d..a4614bf76d 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -93,11 +93,13 @@ enum { QOCIEncoding = 2002 }; // AL16UTF16LE
enum { QOCIEncoding = 2000 }; // AL16UTF16
#endif
+#ifdef OCI_ATTR_CHARSET_FORM
// Always set the OCI_ATTR_CHARSET_FORM to SQLCS_NCHAR is safe
// because Oracle server will deal with the implicit Conversion
// Between CHAR and NCHAR.
// see: http://download.oracle.com/docs/cd/A91202_01/901_doc/appdev.901/a89857/oci05bnd.htm#422705
static const ub1 qOraCharsetForm = SQLCS_NCHAR;
+#endif
#if defined (OCI_UTF16ID)
static const ub2 qOraCharset = OCI_UTF16ID;
@@ -110,13 +112,23 @@ typedef QVarLengthArray<ub2, 32> SizeArray;
static QByteArray qMakeOraDate(const QDateTime& dt);
static QDateTime qMakeDate(const char* oraDate);
+
+static QByteArray qMakeOCINumber(const qlonglong &ll, OCIError *err);
+static QByteArray qMakeOCINumber(const qulonglong& ull, OCIError* err);
+
+static qlonglong qMakeLongLong(const char* ociNumber, OCIError* err);
+static qulonglong qMakeULongLong(const char* ociNumber, OCIError* err);
+
static QString qOraWarn(OCIError *err, int *errorCode = 0);
+
#ifndef Q_CC_SUN
static // for some reason, Sun CC can't use qOraWarning when it's declared static
#endif
void qOraWarning(const char* msg, OCIError *err);
static QSqlError qMakeError(const QString& errString, QSqlError::ErrorType type, OCIError *err);
+
+
class QOCIRowId: public QSharedData
{
public:
@@ -164,7 +176,6 @@ struct QOCIResultPrivate
int serverVersion;
int prefetchRows, prefetchMem;
- void setCharset(OCIBind* hbnd);
void setStatementAttributes();
int bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub2 *tmpSize, QList<QByteArray> &tmpStorage);
@@ -176,6 +187,41 @@ struct QOCIResultPrivate
{ return q->bindValueType(i) & QSql::Out; }
inline bool isBinaryValue(int i) const
{ return q->bindValueType(i) & QSql::Binary; }
+
+ void setCharset(dvoid* handle, ub4 type) const
+ {
+ int r = 0;
+ Q_ASSERT(handle);
+
+#ifdef OCI_ATTR_CHARSET_FORM
+ r = OCIAttrSet(handle,
+ type,
+ // this const cast is safe since OCI doesn't touch
+ // the charset.
+ const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
+ 0,
+ OCI_ATTR_CHARSET_FORM,
+ //Strange Oracle bug: some Oracle servers crash the server process with non-zero error handle (mostly for 10g).
+ //So ignore the error message here.
+ 0);
+ #ifdef QOCI_DEBUG
+ if (r != 0)
+ qWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM.");
+ #endif
+#endif
+
+ r = OCIAttrSet(handle,
+ type,
+ // this const cast is safe since OCI doesn't touch
+ // the charset.
+ const_cast<void *>(static_cast<const void *>(&qOraCharset)),
+ 0,
+ OCI_ATTR_CHARSET_ID,
+ err);
+ if (r != 0)
+ qOraWarning("QOCIResultPrivate::setCharsetI Couldn't set OCI_ATTR_CHARSET_ID: ", err);
+
+ }
};
void QOCIResultPrivate::setStatementAttributes()
@@ -208,36 +254,6 @@ void QOCIResultPrivate::setStatementAttributes()
}
}
-void QOCIResultPrivate::setCharset(OCIBind* hbnd)
-{
- int r = 0;
-
- Q_ASSERT(hbnd);
-
- r = OCIAttrSet(hbnd,
- OCI_HTYPE_BIND,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
- 0,
- OCI_ATTR_CHARSET_FORM,
- err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM: ", err);
-
- r = OCIAttrSet(hbnd,
- OCI_HTYPE_BIND,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharset)),
- 0,
- OCI_ATTR_CHARSET_ID,
- err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_ID: ", err);
-
-}
-
int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub2 *tmpSize, QList<QByteArray> &tmpStorage)
{
@@ -283,6 +299,28 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
sizeof(uint),
SQLT_UIN, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
break;
+ case QVariant::LongLong:
+ {
+ QByteArray ba = qMakeOCINumber(val.toLongLong(), err);
+ r = OCIBindByPos(sql, hbnd, err,
+ pos + 1,
+ ba.data(),
+ ba.size(),
+ SQLT_VNU, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
+ tmpStorage.append(ba);
+ break;
+ }
+ case QVariant::ULongLong:
+ {
+ QByteArray ba = qMakeOCINumber(val.toULongLong(), err);
+ r = OCIBindByPos(sql, hbnd, err,
+ pos + 1,
+ ba.data(),
+ ba.size(),
+ SQLT_VNU, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
+ tmpStorage.append(ba);
+ break;
+ }
case QVariant::Double:
r = OCIBindByPos(sql, hbnd, err,
pos + 1,
@@ -325,7 +363,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
(s.length() + 1) * sizeof(QChar),
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
if (r == OCI_SUCCESS)
- setCharset(*hbnd);
+ setCharset(*hbnd, OCI_HTYPE_BIND);
break;
}
} // fall through for OUT values
@@ -349,7 +387,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
}
if (r == OCI_SUCCESS)
- setCharset(*hbnd);
+ setCharset(*hbnd, OCI_HTYPE_BIND);
tmpStorage.append(ba);
break;
} // default case
@@ -378,7 +416,7 @@ int QOCIResultPrivate::bindValues(QVector<QVariant> &values, IndicatorArray &ind
}
// will assign out value and remove its temp storage.
-static void qOraOutValue(QVariant &value, QList<QByteArray> &storage)
+static void qOraOutValue(QVariant &value, QList<QByteArray> &storage, OCIError* err)
{
switch (value.type()) {
case QVariant::Time:
@@ -390,6 +428,12 @@ static void qOraOutValue(QVariant &value, QList<QByteArray> &storage)
case QVariant::DateTime:
value = qMakeDate(storage.takeFirst());
break;
+ case QVariant::LongLong:
+ value = qMakeLongLong(storage.takeFirst(), err);
+ break;
+ case QVariant::ULongLong:
+ value = qMakeULongLong(storage.takeFirst(), err);
+ break;
case QVariant::String:
value = QString(
reinterpret_cast<const QChar *>(storage.takeFirst().constData()));
@@ -407,7 +451,7 @@ void QOCIResultPrivate::outValues(QVector<QVariant> &values, IndicatorArray &ind
if (!isOutValue(i))
continue;
- qOraOutValue(values[i], tmpStorage);
+ qOraOutValue(values[i], tmpStorage, err);
QVariant::Type typ = values.at(i).type();
if (indicators[i] == -1) // NULL
@@ -667,6 +711,56 @@ QByteArray qMakeOraDate(const QDateTime& dt)
return ba;
}
+/*!
+ \internal
+
+ Convert qlonglong to the internal Oracle OCINumber format.
+ */
+QByteArray qMakeOCINumber(const qlonglong& ll, OCIError* err)
+{
+ QByteArray ba(sizeof(OCINumber), 0);
+
+ OCINumberFromInt(err,
+ &ll,
+ sizeof(qlonglong),
+ OCI_NUMBER_SIGNED,
+ reinterpret_cast<OCINumber*>(ba.data()));
+ return ba;
+}
+
+/*!
+ \internal
+
+ Convert qulonglong to the internal Oracle OCINumber format.
+ */
+QByteArray qMakeOCINumber(const qulonglong& ull, OCIError* err)
+{
+ QByteArray ba(sizeof(OCINumber), 0);
+
+ OCINumberFromInt(err,
+ &ull,
+ sizeof(qlonglong),
+ OCI_NUMBER_UNSIGNED,
+ reinterpret_cast<OCINumber*>(ba.data()));
+ return ba;
+}
+
+qlonglong qMakeLongLong(const char* ociNumber, OCIError* err)
+{
+ qlonglong qll = 0;
+ OCINumberToInt(err, reinterpret_cast<const OCINumber *>(ociNumber), sizeof(qlonglong),
+ OCI_NUMBER_SIGNED, &qll);
+ return qll;
+}
+
+qulonglong qMakeULongLong(const char* ociNumber, OCIError* err)
+{
+ qulonglong qull = 0;
+ OCINumberToInt(err, reinterpret_cast<const OCINumber *>(ociNumber), sizeof(qulonglong),
+ OCI_NUMBER_UNSIGNED, &qull);
+ return qull;
+}
+
QDateTime qMakeDate(const char* oraDate)
{
int century = uchar(oraDate[0]);
@@ -688,7 +782,6 @@ class QOCICols
public:
QOCICols(int size, QOCIResultPrivate* dp);
~QOCICols();
- void setCharset(OCIDefine* dfn);
int readPiecewise(QVector<QVariant> &values, int index = 0);
int readLOBs(QVector<QVariant> &values, int index = 0);
int fieldFromDefine(OCIDefine* d);
@@ -890,7 +983,7 @@ QOCICols::QOCICols(int size, QOCIResultPrivate* dp)
&(fieldInf[idx].ind),
0, 0, OCI_DEFAULT);
if (r == 0)
- setCharset(dfn);
+ d->setCharset(dfn, OCI_HTYPE_DEFINE);
}
break;
default:
@@ -950,35 +1043,6 @@ OCILobLocator **QOCICols::createLobLocator(int position, OCIEnv* env)
return &lob;
}
-void QOCICols::setCharset(OCIDefine* dfn)
-{
- int r = 0;
-
- Q_ASSERT(dfn);
-
- r = OCIAttrSet(dfn,
- OCI_HTYPE_DEFINE,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
- 0,
- OCI_ATTR_CHARSET_FORM,
- d->err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM: ", d->err);
-
- r = OCIAttrSet(dfn,
- OCI_HTYPE_DEFINE,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharset)),
- 0,
- OCI_ATTR_CHARSET_ID,
- d->err);
- if (r != 0)
- qOraWarning("QOCICols::setCharset: Couldn't set OCI_ATTR_CHARSET_ID: ", d->err);
-}
-
int QOCICols::readPiecewise(QVector<QVariant> &values, int index)
{
OCIDefine* dfn;
@@ -1281,6 +1345,16 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
col.maxLen = sizeof(uint);
break;
+ case QVariant::LongLong:
+ col.bindAs = SQLT_VNU;
+ col.maxLen = sizeof(OCINumber);
+ break;
+
+ case QVariant::ULongLong:
+ col.bindAs = SQLT_VNU;
+ col.maxLen = sizeof(OCINumber);
+ break;
+
case QVariant::Double:
col.bindAs = SQLT_FLT;
col.maxLen = sizeof(double);
@@ -1352,6 +1426,22 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
*reinterpret_cast<uint*>(dataPtr) = val.toUInt();
break;
+ case QVariant::LongLong:
+ {
+ columns[i].lengths[row] = columns[i].maxLen;
+ const QByteArray ba = qMakeOCINumber(val.toLongLong(), d->err);
+ Q_ASSERT(ba.size() == int(columns[i].maxLen));
+ memcpy(dataPtr, ba.constData(), columns[i].maxLen);
+ break;
+ }
+ case QVariant::ULongLong:
+ {
+ columns[i].lengths[row] = columns[i].maxLen;
+ const QByteArray ba = qMakeOCINumber(val.toULongLong(), d->err);
+ Q_ASSERT(ba.size() == int(columns[i].maxLen));
+ memcpy(dataPtr, ba.constData(), columns[i].maxLen);
+ break;
+ }
case QVariant::Double:
columns[i].lengths[row] = columns[i].maxLen;
*reinterpret_cast<double*>(dataPtr) = val.toDouble();
@@ -1459,7 +1549,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
QVariant::Type tp = boundValues.at(i).type();
if (tp != QVariant::List) {
- qOraOutValue(boundValues[i], tmpStorage);
+ qOraOutValue(boundValues[i], tmpStorage, d->err);
if (*columns[i].indicators == -1)
boundValues[i] = QVariant(tp);
continue;
@@ -1489,6 +1579,21 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
(*list)[r] = *reinterpret_cast<uint*>(data + r * columns[i].maxLen);
break;
+ case SQLT_VNU:
+ {
+ switch (boundValues.at(i).type()) {
+ case QVariant::LongLong:
+ (*list)[r] = qMakeLongLong(data + r * columns[i].maxLen, d->err);
+ break;
+ case QVariant::ULongLong:
+ (*list)[r] = qMakeULongLong(data + r * columns[i].maxLen, d->err);
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+
case SQLT_FLT:
(*list)[r] = *reinterpret_cast<double*>(data + r * columns[i].maxLen);
break;
diff --git a/src/xmlpatterns/data/qabstractfloat.cpp b/src/xmlpatterns/data/qabstractfloat.cpp
index d3384fe51a..9f0e4e0c4d 100644
--- a/src/xmlpatterns/data/qabstractfloat.cpp
+++ b/src/xmlpatterns/data/qabstractfloat.cpp
@@ -118,7 +118,7 @@ bool AbstractFloat<isDouble>::isEqual(const xsDouble a, const xsDouble b)
return qIsInf(a) && internalSignbit(a) == internalSignbit(b);
else
{
- /* Preferrably, we would use std::numeric_limits<xsDouble>::espilon(), but
+ /* Preferably, we would use std::numeric_limits<xsDouble>::espilon(), but
* we cannot since we cannot depend on the STL. The small xs:double value below,
* was extracted by printing the std::numeric_limits<xsDouble>::epsilon() using
* gdb. */
diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp
index 5bb9a4f91e..700f7ea50e 100644
--- a/src/xmlpatterns/data/qatomicvalue.cpp
+++ b/src/xmlpatterns/data/qatomicvalue.cpp
@@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE
/**
* @file
- * @short Contains the implementation for AtomicValue. The defintion is in qitem_p.h.
+ * @short Contains the implementation for AtomicValue. The definition is in qitem_p.h.
*/
using namespace QPatternist;
diff --git a/src/xmlpatterns/data/qschematime_p.h b/src/xmlpatterns/data/qschematime_p.h
index bd63714ba0..bff065b86c 100644
--- a/src/xmlpatterns/data/qschematime_p.h
+++ b/src/xmlpatterns/data/qschematime_p.h
@@ -63,7 +63,7 @@ namespace QPatternist
/**
* @short Implements the value instance of the @c xs:time type.
*
- * The header file for this class was orignally called Time.h, but this
+ * The header file for this class was originally called Time.h, but this
* clashed with a system header on MinGW.
*
* @author Frans Englich <frans.englich@nokia.com>
diff --git a/src/xmlpatterns/schema/qxsdschemaparser.cpp b/src/xmlpatterns/schema/qxsdschemaparser.cpp
index fd0b95cf2a..585cf126c1 100644
--- a/src/xmlpatterns/schema/qxsdschemaparser.cpp
+++ b/src/xmlpatterns/schema/qxsdschemaparser.cpp
@@ -914,7 +914,7 @@ void XsdSchemaParser::parseRedefine()
redefinedType->setWxsSuperType(contextType);
// 3) remove the base type resolving job from the resolver as
- // we have set the base type here explicitely
+ // we have set the base type here explicitly
m_parserContext->resolver()->removeSimpleRestrictionBase(redefinedType);
// 4) add the redefined type to the schema
@@ -963,7 +963,7 @@ void XsdSchemaParser::parseRedefine()
redefinedType->setWxsSuperType(contextType);
// 3) remove the base type resolving job from the resolver as
- // we have set the base type here explicitely
+ // we have set the base type here explicitly
m_parserContext->resolver()->removeComplexBaseType(redefinedType);
// 4) add the redefined type to the schema
@@ -5781,7 +5781,7 @@ QString XsdSchemaParser::readNamespaceAttribute(const QString &attributeName, co
SchemaType::DerivationConstraints XsdSchemaParser::readDerivationConstraintAttribute(const SchemaType::DerivationConstraints &allowedConstraints, const char *elementName)
{
- // first convert the flags into strings for easier comparision
+ // first convert the flags into strings for easier comparison
QSet<QString> allowedContent;
if (allowedConstraints & SchemaType::RestrictionConstraint)
allowedContent.insert(QString::fromLatin1("restriction"));
@@ -5844,7 +5844,7 @@ SchemaType::DerivationConstraints XsdSchemaParser::readDerivationConstraintAttri
NamedSchemaComponent::BlockingConstraints XsdSchemaParser::readBlockingConstraintAttribute(const NamedSchemaComponent::BlockingConstraints &allowedConstraints, const char *elementName)
{
- // first convert the flags into strings for easier comparision
+ // first convert the flags into strings for easier comparison
QSet<QString> allowedContent;
if (allowedConstraints & NamedSchemaComponent::RestrictionConstraint)
allowedContent.insert(QString::fromLatin1("restriction"));
diff --git a/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp b/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
index 88e5f939a7..dc4730e794 100644
--- a/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
+++ b/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
@@ -53,7 +53,7 @@ using namespace QPatternist;
* This page describes how to use DFAs for validating that the XML child tags of an
* XML parent tag occur in the right order.
*
- * To validate the occurence of XML tags one need a regular expression that describes
+ * To validate the occurrence of XML tags one need a regular expression that describes
* which tags can appear how often in what context. For example the regular expression
* of the global <em>attribute</em> tag in XML Schema is (annotation?, simpleType?).
* That means the <em>attribute</em> tag can contain an <em>annotation</em> tag followed
diff --git a/src/xmlpatterns/schema/qxsdstatemachine_p.h b/src/xmlpatterns/schema/qxsdstatemachine_p.h
index 294eb50c88..62c6ab021b 100644
--- a/src/xmlpatterns/schema/qxsdstatemachine_p.h
+++ b/src/xmlpatterns/schema/qxsdstatemachine_p.h
@@ -138,7 +138,7 @@ namespace QPatternist
/**
* Continues execution of the machine with the given input @p transition.
*
- * @return @c true if the transition was successfull, @c false otherwise.
+ * @return @c true if the transition was successful, @c false otherwise.
*/
bool proceed(TransitionType transition);
@@ -154,7 +154,7 @@ namespace QPatternist
* @note To use this method, inputEqualsTransition must be implemented
* to find the right transition to use.
*
- * @return @c true if the transition was successfull, @c false otherwise.
+ * @return @c true if the transition was successful, @c false otherwise.
*/
template <typename InputType>
bool proceed(InputType input);
diff --git a/src/xmlpatterns/type/qtypechecker.cpp b/src/xmlpatterns/type/qtypechecker.cpp
index 879fe0e73c..73f83b738a 100644
--- a/src/xmlpatterns/type/qtypechecker.cpp
+++ b/src/xmlpatterns/type/qtypechecker.cpp
@@ -168,7 +168,7 @@ Expression::Ptr TypeChecker::verifyType(const Expression::Ptr &operand,
/* Since we haven't exited yet, it means that the operandType is a super type
* of reqType, and that there hence is a path down to it through the
- * type hierachy -- but that doesn't neccessarily mean that a up-cast(down the
+ * type hierachy -- but that doesn't necessarily mean that a up-cast(down the
* hierarchy) would succeed. */
Expression::Ptr result(operand);
diff --git a/tests/arthur/.gitignore b/tests/arthur/.gitignore
new file mode 100644
index 0000000000..7f0c1fa2cd
--- /dev/null
+++ b/tests/arthur/.gitignore
@@ -0,0 +1,2 @@
+bin/shower
+lance/lance
diff --git a/tests/arthur/baselineserver/.gitignore b/tests/arthur/baselineserver/.gitignore
new file mode 100644
index 0000000000..cc513e0df2
--- /dev/null
+++ b/tests/arthur/baselineserver/.gitignore
@@ -0,0 +1,2 @@
+storage
+bin/baselineserver
diff --git a/tests/arthur/baselineserver/bin/runserver b/tests/arthur/baselineserver/bin/runserver
new file mode 100755
index 0000000000..48c5c1d086
--- /dev/null
+++ b/tests/arthur/baselineserver/bin/runserver
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+logfile=baselineserver.log
+
+while true; do
+ echo >> $logfile
+ echo -n "***RESTARTING*** " >> $logfile
+ date >> $logfile
+
+ ./baselineserver 2>&1 | tee -a $logfile
+
+ sleep 2
+done
diff --git a/tests/arthur/baselineserver/src/baselineserver.cpp b/tests/arthur/baselineserver/src/baselineserver.cpp
new file mode 100644
index 0000000000..03d6499c40
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.cpp
@@ -0,0 +1,505 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "baselineserver.h"
+#include <QBuffer>
+#include <QFile>
+#include <QDir>
+#include <QCoreApplication>
+#include <QFileInfo>
+#include <QHostInfo>
+#include <QTextStream>
+#include <QProcess>
+
+QString BaselineServer::storage;
+
+BaselineServer::BaselineServer(QObject *parent)
+ : QTcpServer(parent)
+{
+ QFileInfo me(QCoreApplication::applicationFilePath());
+ meLastMod = me.lastModified();
+ heartbeatTimer = new QTimer(this);
+ connect(heartbeatTimer, SIGNAL(timeout()), this, SLOT(heartbeat()));
+ heartbeatTimer->start(HEARTBEAT*1000);
+}
+
+QString BaselineServer::storagePath()
+{
+ if (storage.isEmpty()) {
+ QByteArray envDir = qgetenv("QT_LANCELOT_DIR");
+ if (!envDir.isEmpty())
+ storage = QLS(envDir.append('/'));
+ else
+ storage = QLS("/var/www/");
+ }
+ return storage;
+}
+
+QString BaselineServer::baseUrl()
+{
+ return QLS("http://")
+ + QHostInfo::localHostName().toLatin1() + '.'
+ + QHostInfo::localDomainName().toLatin1() + '/';
+}
+
+void BaselineServer::incomingConnection(int socketDescriptor)
+{
+ qDebug() << "Server: New connection!";
+ BaselineThread *thread = new BaselineThread(socketDescriptor, this);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ thread->start();
+}
+
+void BaselineServer::heartbeat()
+{
+ // The idea is to exit to be restarted when modified, as soon as not actually serving
+ QFileInfo me(QCoreApplication::applicationFilePath());
+ if (me.lastModified() == meLastMod)
+ return;
+
+ // (could close() here to avoid accepting new connections, to avoid livelock)
+ // also, could check for a timeout to force exit, to avoid hung threads blocking
+ bool isServing = false;
+ foreach(BaselineThread *thread, findChildren<BaselineThread *>()) {
+ if (thread->isRunning()) {
+ isServing = true;
+ break;
+ }
+ }
+
+ if (!isServing)
+ QCoreApplication::exit();
+}
+
+BaselineThread::BaselineThread(int socketDescriptor, QObject *parent)
+ : QThread(parent), socketDescriptor(socketDescriptor)
+{
+}
+
+void BaselineThread::run()
+{
+ BaselineHandler handler(socketDescriptor);
+ exec();
+}
+
+
+BaselineHandler::BaselineHandler(int socketDescriptor)
+ : QObject(), connectionEstablished(false)
+{
+ runId = QDateTime::currentDateTime().toString(QLS("MMMdd-hhmmss"));
+
+ if (socketDescriptor == -1)
+ return;
+
+ connect(&proto.socket, SIGNAL(readyRead()), this, SLOT(receiveRequest()));
+ connect(&proto.socket, SIGNAL(disconnected()), this, SLOT(receiveDisconnect()));
+ proto.socket.setSocketDescriptor(socketDescriptor);
+}
+
+const char *BaselineHandler::logtime()
+{
+ return 0;
+ //return QTime::currentTime().toString(QLS("mm:ss.zzz"));
+}
+
+void BaselineHandler::receiveRequest()
+{
+ if (!connectionEstablished) {
+ if (!proto.acceptConnection(&plat)) {
+ qWarning() << runId << logtime() << "Accepting new connection from" << proto.socket.peerAddress().toString() << "failed." << proto.errorMessage();
+ proto.socket.disconnectFromHost();
+ return;
+ }
+ connectionEstablished = true;
+ QString logMsg;
+ foreach (QString key, plat.keys()) {
+ if (key != PI_HostName && key != PI_HostAddress)
+ logMsg += key + QLS(": '") + plat.value(key) + QLS("', ");
+ }
+ qDebug() << runId << logtime() << "Connection established with" << plat.value(PI_HostName)
+ << "[" << qPrintable(plat.value(PI_HostAddress)) << "]" << logMsg;
+ return;
+ }
+
+ QByteArray block;
+ BaselineProtocol::Command cmd;
+ if (!proto.receiveBlock(&cmd, &block)) {
+ qWarning() << runId << logtime() << "Command reception failed. "<< proto.errorMessage();
+ QThread::currentThread()->exit(1);
+ return;
+ }
+
+ switch(cmd) {
+ case BaselineProtocol::RequestBaselineChecksums:
+ provideBaselineChecksums(block);
+ break;
+ case BaselineProtocol::AcceptNewBaseline:
+ storeImage(block, true);
+ break;
+ case BaselineProtocol::AcceptMismatch:
+ storeImage(block, false);
+ break;
+ default:
+ qWarning() << runId << logtime() << "Unknown command received. " << proto.errorMessage();
+ proto.sendBlock(BaselineProtocol::UnknownError, QByteArray());
+ }
+}
+
+
+void BaselineHandler::provideBaselineChecksums(const QByteArray &itemListBlock)
+{
+ ImageItemList itemList;
+ QDataStream ds(itemListBlock);
+ ds >> itemList;
+ qDebug() << runId << logtime() << "Received request for checksums for" << itemList.count() << "items, engine"
+ << itemList.at(0).engineAsString() << "pixel format" << itemList.at(0).formatAsString();
+
+ for (ImageItemList::iterator i = itemList.begin(); i != itemList.end(); ++i) {
+ i->imageChecksums.clear();
+ QString prefix = pathForItem(*i, true);
+ QFile file(prefix + QLS("metadata"));
+ if (file.open(QIODevice::ReadOnly)) {
+ QDataStream checkSums(&file);
+ checkSums >> i->imageChecksums;
+ file.close();
+ i->status = ImageItem::Ok;
+ }
+ if (!i->imageChecksums.count())
+ i->status = ImageItem::BaselineNotFound;
+ }
+
+ // Find and mark blacklisted items
+ if (itemList.count() > 0) {
+ QString prefix = pathForItem(itemList.at(0), true).section(QLC('/'), 0, -2);
+ QFile file(prefix + QLS("/.blacklist"));
+ if (file.open(QIODevice::ReadOnly)) {
+ QTextStream in(&file);
+ do {
+ QString scriptName = in.readLine();
+ if (!scriptName.isNull()) {
+ for (ImageItemList::iterator i = itemList.begin(); i != itemList.end(); ++i) {
+ if (i->scriptName == scriptName)
+ i->status = ImageItem::IgnoreItem;
+ }
+ }
+ } while (!in.atEnd());
+ }
+ }
+
+ QByteArray block;
+ QDataStream ods(&block, QIODevice::WriteOnly);
+ ods << itemList;
+ proto.sendBlock(BaselineProtocol::Ack, block);
+ report.start(BaselineServer::storagePath(), runId, plat, proto.socket.peerAddress().toString(), itemList);
+}
+
+
+void BaselineHandler::storeImage(const QByteArray &itemBlock, bool isBaseline)
+{
+ QDataStream ds(itemBlock);
+ ImageItem item;
+ ds >> item;
+
+ QString prefix = pathForItem(item, isBaseline);
+ qDebug() << runId << logtime() << "Received" << (isBaseline ? "baseline" : "mismatched") << "image for:" << item.scriptName << "Storing in" << prefix;
+
+ QString dir = prefix.section(QLC('/'), 0, -2);
+ QDir cwd;
+ if (!cwd.exists(dir))
+ cwd.mkpath(dir);
+ item.image.save(prefix + QLS(FileFormat), FileFormat);
+
+ //# Could use QSettings or XML or even DB, could use common file for whole dir or even whole storage - but for now, keep it simple
+ QFile file(prefix + QLS("metadata"));
+ file.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ QDataStream checkSums(&file);
+ checkSums << item.imageChecksums;
+ file.close();
+
+ if (!isBaseline)
+ report.addItem(pathForItem(item, true, false) + QLS(FileFormat),
+ pathForItem(item, false, false) + QLS(FileFormat),
+ item);
+
+ QByteArray msg(isBaseline ? "New baseline image stored: " :
+ "Mismatch report: " );
+ msg += BaselineServer::baseUrl();
+ if (isBaseline)
+ msg += pathForItem(item, true, false).toLatin1() + FileFormat;
+ else
+ msg += report.filePath();
+
+ proto.sendBlock(BaselineProtocol::Ack, msg);
+}
+
+
+void BaselineHandler::receiveDisconnect()
+{
+ qDebug() << runId << logtime() << "Client disconnected.";
+ report.end();
+ QThread::currentThread()->exit(0);
+}
+
+
+QString BaselineHandler::itemSubPath(const QString &engine, const QString &format, bool isBaseline)
+{
+ if (isBaseline)
+ return QString(QLS("baselines_%1_%2/")).arg(engine, format);
+ else
+ return QString(QLS("mismatches_%1_%2/")).arg(engine, format);
+}
+
+QString BaselineHandler::pathForItem(const ImageItem &item, bool isBaseline, bool absolute)
+{
+ if (pathForRun.isNull()) {
+ QString host = plat.value(PI_HostName).section(QLC('.'), 0, 0); // Filter away domain, if any
+ if (host.isEmpty() || host == QLS("localhost")) {
+ host = proto.socket.peerAddress().toString();
+ if (host.isEmpty())
+ host = QLS("Unknown");
+ } else {
+ host.replace(QRegExp(QLS("^(bq|oslo?)-(.*)$")), QLS("\\2"));
+ host.replace(QRegExp(QLS("^(.*)-\\d+$")), QLS("vm-\\1"));
+ }
+ pathForRun = host + QLC('/');
+ }
+
+ QString storePath = pathForRun;
+ if (isBaseline)
+ storePath += itemSubPath(item.engineAsString(), item.formatAsString(), isBaseline);
+ else
+ storePath += itemSubPath(item.engineAsString(), item.formatAsString(), isBaseline) + runId + QLC('/');
+
+ QString itemName = item.scriptName;
+ if (itemName.contains(QLC('.')))
+ itemName.replace(itemName.lastIndexOf(QLC('.')), 1, QLC('_'));
+ itemName.append(QLC('_'));
+ itemName.append(QString::number(item.scriptChecksum, 16).rightJustified(4, QLC('0')));
+
+ if (absolute)
+ storePath.prepend(BaselineServer::storagePath());
+ return storePath + itemName + QLC('.');
+}
+
+
+QString BaselineHandler::updateAllBaselines(const QString &host, const QString &id,
+ const QString &engine, const QString &format)
+{
+ QString basePath(BaselineServer::storagePath());
+ QString srcDir(basePath + host + QLC('/') + itemSubPath(engine, format, false) + id);
+ QString dstDir(basePath + host + QLC('/') + itemSubPath(engine, format));
+
+ QDir dir(srcDir);
+ QStringList nameFilter;
+ nameFilter << "*.metadata" << "*.png";
+ QStringList fileList = dir.entryList(nameFilter, QDir::Files | QDir::NoDotAndDotDot);
+
+ // remove the generated _fuzzycompared.png and _compared.png files from the list
+ QMutableStringListIterator it(fileList);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value().endsWith(QLS("compared.png")))
+ it.remove();
+ }
+
+ QString res;
+ QProcess proc;
+ proc.setWorkingDirectory(srcDir);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(QLS("cp"), QStringList() << QLS("-f") << fileList << dstDir);
+ proc.waitForFinished();
+ if (proc.exitCode() == 0)
+ res = QLS("Successfully updated baseline for all failed tests.");
+ else
+ res = QString("Error updating baseline: %1<br>"
+ "Command output: <pre>%2</pre>").arg(proc.errorString(), proc.readAll().constData());
+
+ return res;
+}
+
+QString BaselineHandler::updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline)
+{
+ QString res;
+ QString basePath(BaselineServer::storagePath());
+ QString srcBase(basePath + newBaseline.left(newBaseline.length() - 3));
+ QString dstDir(basePath + oldBaseline.left(oldBaseline.lastIndexOf(QLC('/'))));
+
+ QProcess proc;
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(QLS("cp"), QStringList() << QLS("-f") << srcBase + QLS("png") << srcBase + QLS("metadata") << dstDir);
+ proc.waitForFinished();
+ if (proc.exitCode() == 0)
+ res = QString("Successfully updated '%1'").arg(oldBaseline + QLS("/metadata"));
+ else
+ res = QString("Error updating baseline: %1<br>"
+ "Command output: <pre>%2</pre>").arg(proc.errorString(), proc.readAll().constData());
+
+ return res;
+}
+
+QString BaselineHandler::blacklistTest(const QString &scriptName, const QString &host, const QString &engine,
+ const QString &format)
+{
+ QString configFile(BaselineServer::storagePath() + host + QLC('/')
+ + itemSubPath(engine, format) + QLS(".blacklist"));
+ QFile file(configFile);
+ if (file.open(QIODevice::Append)) {
+ QTextStream out(&file);
+ out << scriptName << endl;
+ return QLS("Blacklisted ") + scriptName;
+ } else {
+ return QLS("Unable to update blacklisted tests.");
+ }
+}
+
+QString BaselineHandler::whitelistTest(const QString &scriptName, const QString &host, const QString &engine,
+ const QString &format)
+{
+ QString configFile(BaselineServer::storagePath() + host + QLC('/')
+ + itemSubPath(engine, format) + QLS(".blacklist"));
+ QFile file(configFile);
+ QStringList tests;
+ if (file.open(QIODevice::ReadOnly)) {
+ QTextStream in(&file);
+ do {
+ tests << in.readLine();
+ } while (!in.atEnd());
+ if (tests.count() != 0) {
+ QMutableStringListIterator it(tests);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value() == scriptName)
+ it.remove();
+ }
+ }
+ file.close();
+ if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
+ QTextStream out(&file);
+ for (int i=0; i<tests.count(); ++i)
+ out << tests.at(i);
+ return QLS("Whitelisted ") + scriptName;
+ } else {
+ QLS("Unable to whitelist ") + scriptName + QLS(". Unable to truncate blacklist file.");
+ }
+ }
+ return QLS("Unable to whitelist ") + scriptName + QLS(". Unable to open blacklist file.");
+}
+
+void BaselineHandler::testPathMapping()
+{
+ qDebug() << "Storage prefix:" << BaselineServer::storagePath();
+
+ QStringList hosts;
+ hosts << QLS("bq-ubuntu910-x86-01")
+ << QLS("bq-ubuntu910-x86-15")
+ << QLS("osl-mac-master-5.test.qt.nokia.com")
+ << QLS("osl-mac-master-6.test.qt.nokia.com")
+ << QLS("sv-xp-vs-010")
+ << QLS("sv-xp-vs-011")
+ << QLS("chimera")
+ << QLS("localhost");
+
+ ImageItem item;
+ item.scriptName = QLS("arcs.qps");
+ item.engine = ImageItem::Raster;
+ item.renderFormat = QImage::Format_ARGB32_Premultiplied;
+ item.imageChecksums << 0x0123456789abcdefULL;
+ item.scriptChecksum = 0x0123;
+
+ plat.insert(PI_QtVersion, QLS("4.8.0"));
+ plat.insert(PI_BuildKey, QLS("(nobuildkey)"));
+ foreach(const QString& host, hosts) {
+ pathForRun = QString();
+ plat.insert(PI_HostName, host);
+ qDebug() << "Baseline from" << host << "->" << pathForItem(item, true).remove(BaselineServer::storagePath());
+ qDebug() << "Mismatch from" << host << "->" << pathForItem(item, false).remove(BaselineServer::storagePath());
+ }
+}
+
+
+QString BaselineHandler::computeMismatchScore(const QImage &baseline, const QImage &rendered)
+{
+ if (baseline.size() != rendered.size() || baseline.format() != rendered.format())
+ return QLS("[No score, incomparable images.]");
+ if (baseline.depth() != 32)
+ return QLS("[Score computation not implemented for format.]");
+
+ int w = baseline.width();
+ int h = baseline.height();
+
+ uint ncd = 0; // number of differing color pixels
+ uint nad = 0; // number of differing alpha pixels
+ uint scd = 0; // sum of color pixel difference
+ uint sad = 0; // sum of alpha pixel difference
+
+ for (int y=0; y<h; ++y) {
+ const QRgb *bl = (const QRgb *) baseline.constScanLine(y);
+ const QRgb *rl = (const QRgb *) rendered.constScanLine(y);
+ for (int x=0; x<w; ++x) {
+ QRgb b = bl[x];
+ QRgb r = rl[x];
+ if (r != b) {
+ int dr = qAbs(qRed(b) - qRed(r));
+ int dg = qAbs(qGreen(b) - qGreen(r));
+ int db = qAbs(qBlue(b) - qBlue(r));
+ int ds = dr + dg + db;
+ int da = qAbs(qAlpha(b) - qAlpha(r));
+ if (ds) {
+ ncd++;
+ scd += ds;
+ }
+ if (da) {
+ nad++;
+ sad += da;
+ }
+ }
+ }
+ }
+
+ double pcd = 100.0 * ncd / (w*h); // percent of pixels that differ
+ double acd = ncd ? double(scd) / (3*ncd) : 0; // avg. difference
+ QString res = QString(QLS("Diffscore: %1% (Num:%2 Avg:%3)")).arg(pcd, 0, 'g', 2).arg(ncd).arg(acd, 0, 'g', 2);
+ if (baseline.hasAlphaChannel()) {
+ double pad = 100.0 * nad / (w*h); // percent of pixels that differ
+ double aad = nad ? double(sad) / (3*nad) : 0; // avg. difference
+ res += QString(QLS(" Alpha-diffscore: %1% (Num:%2 Avg:%3)")).arg(pad, 0, 'g', 2).arg(nad).arg(aad, 0, 'g', 2);
+ }
+ return res;
+}
diff --git a/tests/arthur/baselineserver/src/baselineserver.h b/tests/arthur/baselineserver/src/baselineserver.h
new file mode 100644
index 0000000000..e31152785d
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.h
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BASELINESERVER_H
+#define BASELINESERVER_H
+
+#include <QStringList>
+#include <QTcpServer>
+#include <QThread>
+#include <QTcpSocket>
+#include <QScopedPointer>
+#include <QTimer>
+#include <QDateTime>
+
+#include "baselineprotocol.h"
+#include "htmlpage.h"
+
+// #seconds between update checks
+#define HEARTBEAT 10
+
+class BaselineServer : public QTcpServer
+{
+ Q_OBJECT
+
+public:
+ BaselineServer(QObject *parent = 0);
+
+ static QString storagePath();
+ static QString baseUrl();
+
+protected:
+ void incomingConnection(int socketDescriptor);
+
+private slots:
+ void heartbeat();
+
+private:
+ QTimer *heartbeatTimer;
+ QDateTime meLastMod;
+ static QString storage;
+};
+
+
+
+class BaselineThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ BaselineThread(int socketDescriptor, QObject *parent);
+ void run();
+
+private:
+ int socketDescriptor;
+};
+
+
+class BaselineHandler : public QObject
+{
+ Q_OBJECT
+
+public:
+ BaselineHandler(int socketDescriptor = -1);
+ void testPathMapping();
+
+ static QString updateAllBaselines(const QString &host, const QString &id,
+ const QString &engine, const QString &format);
+ static QString updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline);
+ static QString blacklistTest(const QString &scriptName, const QString &host,
+ const QString &engine, const QString &format);
+ static QString whitelistTest(const QString &scriptName, const QString &host,
+ const QString &engine, const QString &format);
+
+private slots:
+ void receiveRequest();
+ void receiveDisconnect();
+
+private:
+ void provideBaselineChecksums(const QByteArray &itemListBlock);
+ void storeImage(const QByteArray &itemBlock, bool isBaseline);
+ QString pathForItem(const ImageItem &item, bool isBaseline = true, bool absolute = true);
+ const char *logtime();
+ QString computeMismatchScore(const QImage& baseline, const QImage& rendered);
+ QString engineForItem(const ImageItem &item);
+
+ static QString itemSubPath(const QString &engine, const QString &format, bool isBaseline = true);
+
+ BaselineProtocol proto;
+ PlatformInfo plat;
+ bool connectionEstablished;
+ QString runId;
+ QString pathForRun;
+ HTMLPage report;
+};
+
+#endif // BASELINESERVER_H
diff --git a/tests/arthur/baselineserver/src/baselineserver.pro b/tests/arthur/baselineserver/src/baselineserver.pro
new file mode 100644
index 0000000000..a7be03df2f
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.pro
@@ -0,0 +1,27 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-08-11T11:51:09
+#
+#-------------------------------------------------
+
+QT += core network
+
+# gui needed for QImage
+# QT -= gui
+
+TARGET = baselineserver
+DESTDIR = ../bin
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+include(../../common/baselineprotocol.pri)
+
+SOURCES += main.cpp \
+ baselineserver.cpp \
+ htmlpage.cpp
+
+HEADERS += \
+ baselineserver.h \
+ htmlpage.h
diff --git a/tests/arthur/baselineserver/src/htmlpage.cpp b/tests/arthur/baselineserver/src/htmlpage.cpp
new file mode 100644
index 0000000000..ad7f8b70c7
--- /dev/null
+++ b/tests/arthur/baselineserver/src/htmlpage.cpp
@@ -0,0 +1,238 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "htmlpage.h"
+#include "baselineprotocol.h"
+#include "baselineserver.h"
+#include <QDir>
+#include <QProcess>
+#include <QUrl>
+
+HTMLPage::HTMLPage()
+ : headerWritten(false)
+{
+}
+
+HTMLPage::~HTMLPage()
+{
+ end();
+}
+
+QString HTMLPage::filePath()
+{
+ return path;
+}
+
+void HTMLPage::start(const QString &storagepath, const QString &runId, const PlatformInfo pinfo, const QString &hostAddress, const ImageItemList &itemList)
+{
+ end();
+
+ id = runId;
+ plat = pinfo;
+ address = hostAddress;
+ root = storagepath;
+ imageItems = itemList;
+ QString dir = root + QLS("reports/");
+ QDir cwd;
+ if (!cwd.exists(dir))
+ cwd.mkpath(dir);
+}
+
+
+void HTMLPage::writeHeader(const ImageItem &item)
+{
+ path = QLS("reports/") + id + QLC('_') + item.engineAsString()
+ + QLC('_') + item.formatAsString() + QLS(".html");
+
+ QString pageUrl = BaselineServer::baseUrl() + path;
+
+ file.setFileName(root + path);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
+ qWarning() << "Failed to open report file" << file.fileName();
+ out.setDevice(&file);
+
+ out << "<html><body><h1>Lancelot results from run " << id << "</h1>\n\n";
+ out << "<h3>Platform Info:</h3>\n";
+ out << "<table>\n";
+ foreach (QString key, plat.keys())
+ out << "<tr><td>" << key << "</td><td>" << plat.value(key) << "</td></tr>\n";
+ out << "</table>\n";
+
+#if 0
+ out << "<h3><a href=\"/cgi-bin/server.cgi?cmd=updateAllBaselines&id="<< id << "&host=" << plat.hostName
+ << "&engine=" << item.engineAsString() << "&format=" << item.formatAsString()
+ << "&url=" << pageUrl
+ << "\">Update all baselines</a><br>";
+#endif
+ out << "<table border=\"2\">\n"
+ "<tr>\n"
+ "<td><b>Script</b></td>\n"
+ "<td><b>Baseline</b></td>\n"
+ "<td><b>Rendered</b></td>\n"
+ "<td><b>Comparison</b></td>\n"
+ "<td><b>Info/Action</b></td>\n"
+ "</b></tr><br>";
+}
+
+
+void HTMLPage::writeFooter()
+{
+ out << "</table>\n</body></html>\n";
+}
+
+
+void HTMLPage::addItem(const QString &baseline, const QString &rendered, const ImageItem &item)
+{
+ if (!headerWritten) {
+ writeHeader(item);
+ headerWritten = true;
+ }
+ QString compared = generateCompared(baseline, rendered);
+ QString pageUrl = BaselineServer::baseUrl() + path;
+
+ out << "<tr>\n";
+ out << "<td>" << item.scriptName << "</td>\n";
+ QStringList images = QStringList() << baseline << rendered << compared;
+ foreach(const QString& img, images)
+ out << "<td><a href=\"/" << img << "\"><img src=\"/" << img << "\" width=240 height=240></a></td>\n";
+ out << "<td><a href=\"/cgi-bin/server.cgi?cmd=updateSingleBaseline&oldBaseline=" << baseline
+ << "&newBaseline=" << rendered << "&url=" << pageUrl << "\">Update baseline</a><br>"
+#if 0
+ "<a href=\"/cgi-bin/server.cgi?cmd=blacklist&scriptName=" << item.scriptName
+ << "&host=" << plat.hostName << "&engine=" << item.engineAsString()
+ << "&format=" << item.formatAsString()
+ << "&url=" << pageUrl << "\">Blacklist test</a>"
+#endif
+ << "</td>\n";
+ out << "</tr>\n\n";
+
+ QMutableVectorIterator<ImageItem> it(imageItems);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value().scriptName == item.scriptName) {
+ it.remove();
+ break;
+ }
+ }
+}
+
+
+void HTMLPage::end()
+{
+ if (file.isOpen()) {
+ // Add the names of the scripts that passed the test, or were blacklisted
+ QString pageUrl = BaselineServer::baseUrl() + path;
+ for (int i=0; i<imageItems.count(); ++i) {
+ out << "<tr><td>" << imageItems.at(i).scriptName << "</td><td>N/A</td><td>N/A</td><td>N/A</td><td>";
+ if (imageItems.at(i).status == ImageItem::IgnoreItem) {
+ out << "<span style=\"background-color:yellow\">Blacklisted</span><br>"
+ "<a href=\"/cgi-bin/server.cgi?cmd=whitelist&scriptName="
+ << imageItems.at(i).scriptName << "&host=" << plat.value(PI_HostName)
+ << "&engine=" << imageItems.at(i).engineAsString()
+ << "&format=" << imageItems.at(i).formatAsString()
+ << "&url=" << pageUrl
+ << "\">Whitelist test</a>";
+ } else {
+ out << "<span style=\"color:green\">Test passed</span>";
+ }
+ out << "</td></tr>\n";
+ }
+
+ writeFooter();
+ out.flush();
+ file.close();
+ path.clear();
+ headerWritten = false;
+ }
+}
+
+
+QString HTMLPage::generateCompared(const QString &baseline, const QString &rendered, bool fuzzy)
+{
+ QString res = rendered;
+ QFileInfo fi(res);
+ res.chop(fi.suffix().length() + 1);
+ res += QLS(fuzzy ? "_fuzzycompared.png" : "_compared.png");
+ QStringList args;
+ if (fuzzy)
+ args << QLS("-fuzz") << QLS("5%");
+ args << root+baseline << root+rendered << root+res;
+ QProcess::execute(QLS("compare"), args);
+ return res;
+}
+
+
+void HTMLPage::handleCGIQuery(const QString &query)
+{
+ QUrl cgiUrl(QLS("http://dummy/cgi-bin/dummy.cgi?") + query);
+ QTextStream s(stdout);
+ s << "Content-Type: text/html\r\n\r\n"
+ << "<HTML>";
+// << "Contents of QUERY_STRING:<br>"
+// << "Full string = " << query << "<br>";
+
+ QString command(cgiUrl.queryItemValue("cmd"));
+
+ if (command == QLS("updateSingleBaseline")) {
+ s << BaselineHandler::updateSingleBaseline(cgiUrl.queryItemValue(QLS("oldBaseline")),
+ cgiUrl.queryItemValue(QLS("newBaseline")));
+ } else if (command == QLS("updateAllBaselines")) {
+ s << BaselineHandler::updateAllBaselines(cgiUrl.queryItemValue(QLS("host")),
+ cgiUrl.queryItemValue(QLS("id")),
+ cgiUrl.queryItemValue(QLS("engine")),
+ cgiUrl.queryItemValue(QLS("format")));
+ } else if (command == QLS("blacklist")) {
+ // blacklist a test
+ s << BaselineHandler::blacklistTest(cgiUrl.queryItemValue(QLS("scriptName")),
+ cgiUrl.queryItemValue(QLS("host")),
+ cgiUrl.queryItemValue(QLS("engine")),
+ cgiUrl.queryItemValue(QLS("format")));
+ } else if (command == QLS("whitelist")) {
+ // whitelist a test
+ s << BaselineHandler::whitelistTest(cgiUrl.queryItemValue(QLS("scriptName")),
+ cgiUrl.queryItemValue(QLS("host")),
+ cgiUrl.queryItemValue(QLS("engine")),
+ cgiUrl.queryItemValue(QLS("format")));
+ } else {
+ s << "Unknown query:<br>" << query << "<br>";
+ }
+ s << "<p><a href=\"" << cgiUrl.queryItemValue(QLS("url")) << "\">Back to report</a>";
+ s << "</HTML>";
+}
diff --git a/tests/arthur/baselineserver/src/htmlpage.h b/tests/arthur/baselineserver/src/htmlpage.h
new file mode 100644
index 0000000000..bef6b55d83
--- /dev/null
+++ b/tests/arthur/baselineserver/src/htmlpage.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef HTMLPAGE_H
+#define HTMLPAGE_H
+
+#include "baselineprotocol.h"
+#include <QFile>
+#include <QTextStream>
+
+class HTMLPage
+{
+public:
+ HTMLPage();
+ ~HTMLPage();
+
+ void start(const QString &storagePath, const QString &runId, const PlatformInfo pinfo, const QString &hostAddress, const ImageItemList &itemList);
+ void addItem(const QString &baseline, const QString &rendered, const ImageItem &item);
+ void end();
+ QString filePath();
+
+ static void handleCGIQuery(const QString &query);
+
+private:
+ void writeHeader(const ImageItem &item);
+ void writeFooter();
+ QString generateCompared(const QString &baseline, const QString &rendered, bool fuzzy = false);
+
+ QString root;
+ QString path;
+ QFile file;
+ QTextStream out;
+ QString id;
+ PlatformInfo plat;
+ QString address;
+ ImageItemList imageItems;
+ bool headerWritten;
+};
+
+#endif // HTMLPAGE_H
diff --git a/tests/arthur/baselineserver/src/main.cpp b/tests/arthur/baselineserver/src/main.cpp
new file mode 100644
index 0000000000..a5ec4db19d
--- /dev/null
+++ b/tests/arthur/baselineserver/src/main.cpp
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/QCoreApplication>
+#include "baselineserver.h"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+
+ QString queryString(qgetenv("QUERY_STRING"));
+ if (!queryString.isEmpty()) {
+ // run as CGI script
+ HTMLPage::handleCGIQuery(queryString);
+ return 0;
+ }
+
+ if (a.arguments().contains(QLatin1String("-testmapping"))) {
+ BaselineHandler h;
+ h.testPathMapping();
+ return 0;
+ }
+
+ BaselineServer server;
+ if (!server.listen(QHostAddress::Any, BaselineProtocol::ServerPort)) {
+ qWarning("Failed to listen!");
+ return 1;
+ }
+
+ qDebug() << "\n*****" << argv[0] << "started, ready to serve on port" << BaselineProtocol::ServerPort
+ << "with baseline protocol version" << BaselineProtocol::ProtocolVersion << "*****\n";
+ return a.exec();
+}
diff --git a/tests/arthur/common/baselineprotocol.cpp b/tests/arthur/common/baselineprotocol.cpp
new file mode 100644
index 0000000000..2a41104dd4
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.cpp
@@ -0,0 +1,380 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "baselineprotocol.h"
+#include <QLibraryInfo>
+#include <QImage>
+#include <QBuffer>
+#include <QHostInfo>
+#include <QSysInfo>
+#include <QProcess>
+#include <QFileInfo>
+#include <QDir>
+
+#ifndef QMAKESPEC
+#define QMAKESPEC "Unknown"
+#endif
+
+PlatformInfo::PlatformInfo(bool useLocal)
+ : QMap<QString, QString>()
+{
+ if (useLocal) {
+ insert(PI_HostName, QHostInfo::localHostName());
+ insert(PI_QtVersion, QLS(qVersion()));
+ insert(PI_QMakeSpec, QString(QLS(QMAKESPEC)).remove(QRegExp(QLS("^.*mkspecs/"))));
+ insert(PI_BuildKey, QLibraryInfo::buildKey());
+#if defined(Q_OS_LINUX)
+ insert(PI_OSName, QLS("Linux"));
+ QProcess uname;
+ uname.start(QLS("uname"), QStringList() << QLS("-r"));
+ if (uname.waitForFinished(3000))
+ insert(PI_OSVersion, QString::fromLocal8Bit(uname.readAllStandardOutput().constData()).simplified());
+#elif defined(Q_OS_WINCE)
+ insert(PI_OSName, QLS("WinCE"));
+ insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion()));
+#elif defined(Q_OS_WIN)
+ insert(PI_OSName, QLS("Windows"));
+ insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion()));
+#elif defined(Q_OS_MAC)
+ insert(PI_OSName, QLS("MacOS"));
+ insert(PI_OSVersion, QString::number(qMacVersion()));
+#elif defined(Q_OS_SYMBIAN)
+ insert(PI_OSName, QLS("Symbian"));
+ insert(PI_OSVersion, QString::number(QSysInfo::symbianVersion());
+#else
+ insert(PI_OSName, QLS("Other"));
+#endif
+
+ QProcess git;
+ QString cmd;
+ QStringList args;
+#if defined(Q_OS_WIN)
+ cmd = QLS("cmd.exe");
+ args << QLS("/c") << QLS("git");
+#else
+ cmd = QLS("git");
+#endif
+ args << QLS("log") << QLS("--max-count=1") << QLS("--pretty=%H [%an] [%ad] %s");
+ git.start(cmd, args);
+ git.waitForFinished(3000);
+ if (!git.exitCode())
+ insert(PI_GitCommit, QString::fromLocal8Bit(git.readAllStandardOutput().constData()).simplified());
+ else
+ insert(PI_GitCommit, QLS("Unknown"));
+ }
+
+ QByteArray gb = qgetenv("PULSE_GIT_BRANCH");
+ if (!gb.isEmpty())
+ insert(PI_PulseGitBranch, QString::fromLatin1(gb));
+ QByteArray tb = qgetenv("PULSE_TESTR_BRANCH");
+ if (!tb.isEmpty())
+ insert(PI_PulseTestrBranch, QString::fromLatin1(tb));
+}
+
+
+ImageItem &ImageItem::operator=(const ImageItem &other)
+{
+ scriptName = other.scriptName;
+ scriptChecksum = other.scriptChecksum;
+ status = other.status;
+ renderFormat = other.renderFormat;
+ engine = other.engine;
+ image = other.image;
+ imageChecksums = other.imageChecksums;
+ return *this;
+}
+
+// Defined in lookup3.c:
+void hashword2 (
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 *pc, /* IN: seed OUT: primary hash value */
+quint32 *pb); /* IN: more seed OUT: secondary hash value */
+
+quint64 ImageItem::computeChecksum(const QImage &image)
+{
+ QImage img(image);
+ const int bpl = img.bytesPerLine();
+ const int padBytes = bpl - (img.width() * img.depth() / 8);
+ if (padBytes) {
+ uchar *p = img.bits() + bpl - padBytes;
+ const int h = img.height();
+ for (int y = 0; y < h; ++y) {
+ qMemSet(p, 0, padBytes);
+ p += bpl;
+ }
+ }
+ if (img.format() == QImage::Format_RGB32) { // Thank you, Haavard
+ quint32 *p = (quint32 *)img.bits();
+ const quint32 *end = p + (img.byteCount()/4);
+ while (p<end)
+ *p++ &= RGB_MASK;
+ }
+
+ quint32 h1 = 0xfeedbacc;
+ quint32 h2 = 0x21604894;
+ hashword2((const quint32 *)img.constBits(), img.byteCount()/4, &h1, &h2);
+ return (quint64(h1) << 32) | h2;
+}
+
+QString ImageItem::engineAsString() const
+{
+ switch (engine) {
+ case Raster:
+ return QLS("Raster");
+ break;
+ case OpenGL:
+ return QLS("OpenGL");
+ break;
+ default:
+ break;
+ }
+ return QLS("Unknown");
+}
+
+QString ImageItem::formatAsString() const
+{
+ static const int numFormats = 16;
+ static const char *formatNames[numFormats] = {
+ "Invalid",
+ "Mono",
+ "MonoLSB",
+ "Indexed8",
+ "RGB32",
+ "ARGB32",
+ "ARGB32-Premult",
+ "RGB16",
+ "ARGB8565-Premult",
+ "RGB666",
+ "ARGB6666-Premult",
+ "RGB555",
+ "ARGB8555-Premult",
+ "RGB888",
+ "RGB444",
+ "ARGB4444-Premult"
+ };
+ if (renderFormat < 0 || renderFormat >= numFormats)
+ return QLS("UnknownFormat");
+ return QLS(formatNames[renderFormat]);
+}
+
+QDataStream & operator<< (QDataStream &stream, const ImageItem &ii)
+{
+ stream << ii.scriptName << ii.scriptChecksum << quint8(ii.status) << quint8(ii.renderFormat)
+ << quint8(ii.engine) << ii.image << ii.imageChecksums;
+ return stream;
+}
+
+QDataStream & operator>> (QDataStream &stream, ImageItem &ii)
+{
+ quint8 encFormat, encStatus, encEngine;
+ stream >> ii.scriptName >> ii.scriptChecksum >> encStatus >> encFormat
+ >> encEngine >> ii.image >> ii.imageChecksums;
+ ii.renderFormat = QImage::Format(encFormat);
+ ii.status = ImageItem::ItemStatus(encStatus);
+ ii.engine = ImageItem::GraphicsEngine(encEngine);
+ return stream;
+}
+
+BaselineProtocol::~BaselineProtocol()
+{
+ socket.close();
+ if (socket.state() != QTcpSocket::UnconnectedState)
+ socket.waitForDisconnected(Timeout);
+}
+
+
+bool BaselineProtocol::connect()
+{
+ errMsg.clear();
+ QByteArray serverName(qgetenv("QT_LANCELOT_SERVER"));
+ if (serverName.isNull())
+ serverName = "lancelot.test.qt.nokia.com";
+
+ socket.connectToHost(serverName, ServerPort);
+ if (!socket.waitForConnected(Timeout)) {
+ errMsg += QLS("TCP connectToHost failed. Host:") + serverName + QLS(" port:") + QString::number(ServerPort);
+ return false;
+ }
+
+ PlatformInfo pi(true);
+ QByteArray block;
+ QDataStream ds(&block, QIODevice::ReadWrite);
+ ds << pi;
+ if (!sendBlock(AcceptPlatformInfo, block)) {
+ errMsg += QLS("Failed to send data to server.");
+ return false;
+ }
+
+ Command cmd = Ack;
+ if (!receiveBlock(&cmd, &block) || cmd != Ack) {
+ errMsg += QLS("Failed to get response from server.");
+ return false;
+ }
+
+ return true;
+}
+
+
+bool BaselineProtocol::acceptConnection(PlatformInfo *pi)
+{
+ errMsg.clear();
+
+ QByteArray block;
+ Command cmd = AcceptPlatformInfo;
+ if (!receiveBlock(&cmd, &block) || cmd != AcceptPlatformInfo)
+ return false;
+
+ if (pi) {
+ QDataStream ds(block);
+ ds >> *pi;
+ pi->insert(PI_HostAddress, socket.peerAddress().toString());
+ }
+
+ if (!sendBlock(Ack, QByteArray()))
+ return false;
+ return true;
+}
+
+
+bool BaselineProtocol::requestBaselineChecksums(ImageItemList *itemList)
+{
+ errMsg.clear();
+ if (!itemList)
+ return false;
+ QByteArray block;
+ QDataStream ds(&block, QIODevice::ReadWrite);
+ ds << *itemList;
+ if (!sendBlock(RequestBaselineChecksums, block))
+ return false;
+ Command cmd;
+ if (!receiveBlock(&cmd, &block))
+ return false;
+ ds.device()->seek(0);
+ ds >> *itemList;
+ return true;
+}
+
+
+bool BaselineProtocol::submitNewBaseline(const ImageItem &item, QByteArray *serverMsg)
+{
+ Command cmd;
+ return (sendItem(AcceptNewBaseline, item) && receiveBlock(&cmd, serverMsg) && cmd == Ack);
+}
+
+
+bool BaselineProtocol::submitMismatch(const ImageItem &item, QByteArray *serverMsg)
+{
+ Command cmd;
+ return (sendItem(AcceptMismatch, item) && receiveBlock(&cmd, serverMsg) && cmd == Ack);
+}
+
+
+bool BaselineProtocol::sendItem(Command cmd, const ImageItem &item)
+{
+ errMsg.clear();
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QDataStream ds(&buf);
+ ds << item;
+ if (!sendBlock(cmd, buf.data())) {
+ errMsg.prepend(QLS("Failed to submit image to server. "));
+ return false;
+ }
+ return true;
+}
+
+
+bool BaselineProtocol::sendBlock(Command cmd, const QByteArray &block)
+{
+ QDataStream s(&socket);
+ // TBD: set qds version as a constant
+ s << quint16(ProtocolVersion) << quint16(cmd);
+ s.writeBytes(block.constData(), block.size());
+ return true;
+}
+
+
+bool BaselineProtocol::receiveBlock(Command *cmd, QByteArray *block)
+{
+ while (socket.bytesAvailable() < int(2*sizeof(quint16) + sizeof(quint32))) {
+ if (!socket.waitForReadyRead(Timeout))
+ return false;
+ }
+ QDataStream ds(&socket);
+ quint16 rcvProtocolVersion, rcvCmd;
+ ds >> rcvProtocolVersion >> rcvCmd;
+ if (rcvProtocolVersion != ProtocolVersion) {
+ errMsg = QLS("Baseline protocol version mismatch, received:") + QString::number(rcvProtocolVersion)
+ + QLS(" expected:") + QString::number(ProtocolVersion);
+ return false;
+ }
+ if (cmd)
+ *cmd = Command(rcvCmd);
+
+ QByteArray uMsg;
+ quint32 remaining;
+ ds >> remaining;
+ uMsg.resize(remaining);
+ int got = 0;
+ char* uMsgBuf = uMsg.data();
+ do {
+ got = ds.readRawData(uMsgBuf, remaining);
+ remaining -= got;
+ uMsgBuf += got;
+ } while (remaining && got >= 0 && socket.waitForReadyRead(Timeout));
+
+ if (got < 0)
+ return false;
+
+ if (block)
+ *block = uMsg;
+
+ return true;
+}
+
+
+QString BaselineProtocol::errorMessage()
+{
+ QString ret = errMsg;
+ if (socket.error() >= 0)
+ ret += QLS(" Socket state: ") + socket.errorString();
+ return ret;
+}
diff --git a/tests/arthur/common/baselineprotocol.h b/tests/arthur/common/baselineprotocol.h
new file mode 100644
index 0000000000..162a19f808
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.h
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BASELINEPROTOCOL_H
+#define BASELINEPROTOCOL_H
+
+#include <QDataStream>
+#include <QTcpSocket>
+#include <QImage>
+#include <QVector>
+#include <QMap>
+
+#define QLS QLatin1String
+#define QLC QLatin1Char
+
+#define FileFormat "png"
+
+const QString PI_HostName(QLS("HostName"));
+const QString PI_HostAddress(QLS("HostAddress"));
+const QString PI_OSName(QLS("OSName"));
+const QString PI_OSVersion(QLS("OSVersion"));
+const QString PI_QtVersion(QLS("QtVersion"));
+const QString PI_BuildKey(QLS("BuildKey"));
+const QString PI_GitCommit(QLS("GitCommit"));
+const QString PI_QMakeSpec(QLS("QMakeSpec"));
+const QString PI_PulseGitBranch(QLS("PulseGitBranch"));
+const QString PI_PulseTestrBranch(QLS("PulseTestrBranch"));
+
+class PlatformInfo : public QMap<QString, QString>
+{
+public:
+ PlatformInfo(bool useLocal = false);
+};
+
+struct ImageItem
+{
+public:
+ ImageItem()
+ : status(Ok), renderFormat(QImage::Format_Invalid), engine(Raster), scriptChecksum(0)
+ {}
+ ImageItem(const ImageItem &other)
+ { *this = other; }
+ ~ImageItem()
+ {}
+ ImageItem &operator=(const ImageItem &other);
+ static quint64 computeChecksum(const QImage& image);
+ QString engineAsString() const;
+ QString formatAsString() const;
+
+ enum ItemStatus {
+ Ok = 0,
+ BaselineNotFound = 1,
+ IgnoreItem = 2
+ };
+
+ enum GraphicsEngine {
+ Raster = 0,
+ OpenGL = 1
+ };
+
+ QString scriptName;
+ ItemStatus status;
+ QImage::Format renderFormat;
+ GraphicsEngine engine;
+ QImage image;
+ QList<quint64> imageChecksums;
+ // tbd: add diffscore
+ quint16 scriptChecksum;
+};
+QDataStream & operator<< (QDataStream &stream, const ImageItem &ii);
+QDataStream & operator>> (QDataStream& stream, ImageItem& ii);
+
+Q_DECLARE_METATYPE(ImageItem);
+
+typedef QVector<ImageItem> ImageItemList;
+
+class BaselineProtocol
+{
+public:
+ BaselineProtocol() {}
+ ~BaselineProtocol();
+
+ // ****************************************************
+ // Important constants here
+ // ****************************************************
+ enum Constant {
+ ProtocolVersion = 2,
+ ServerPort = 54129,
+ Timeout = 10000
+ };
+
+ enum Command {
+ UnknownError = 0,
+ // Queries
+ AcceptPlatformInfo = 1,
+ RequestBaselineChecksums = 2,
+ AcceptNewBaseline = 4,
+ AcceptMismatch = 5,
+ // Responses
+ Ack = 128,
+ };
+
+ // For client:
+ bool connect();
+ bool requestBaselineChecksums(ImageItemList *itemList);
+ bool submitNewBaseline(const ImageItem &item, QByteArray *serverMsg);
+ bool submitMismatch(const ImageItem &item, QByteArray *serverMsg);
+
+ // For server:
+ bool acceptConnection(PlatformInfo *pi);
+
+ QString errorMessage();
+
+private:
+ bool sendItem(Command cmd, const ImageItem &item);
+
+ bool sendBlock(Command cmd, const QByteArray &block);
+ bool receiveBlock(Command *cmd, QByteArray *block);
+ QString errMsg;
+ QTcpSocket socket;
+
+ friend class BaselineThread;
+ friend class BaselineHandler;
+};
+
+
+#endif // BASELINEPROTOCOL_H
diff --git a/tests/arthur/common/baselineprotocol.pri b/tests/arthur/common/baselineprotocol.pri
new file mode 100644
index 0000000000..996f9d5a1f
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.pri
@@ -0,0 +1,10 @@
+INCLUDEPATH += $$PWD
+
+QT *= network
+
+SOURCES += \
+ $$PWD/baselineprotocol.cpp \
+ $$PWD/lookup3.cpp
+
+HEADERS += \
+ $$PWD/baselineprotocol.h
diff --git a/tests/arthur/common/lookup3.cpp b/tests/arthur/common/lookup3.cpp
new file mode 100644
index 0000000000..8cdc64b500
--- /dev/null
+++ b/tests/arthur/common/lookup3.cpp
@@ -0,0 +1,786 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+/*
+These functions are based on:
+
+-------------------------------------------------------------------------------
+lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+
+These are functions for producing 32-bit hashes for hash table lookup.
+hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
+are externally useful functions. Routines to test the hash are included
+if SELF_TEST is defined. You can use this free for any purpose. It's in
+the public domain. It has no warranty.
+
+You probably want to use hashlittle(). hashlittle() and hashbig()
+hash byte arrays. hashlittle() is is faster than hashbig() on
+little-endian machines. Intel and AMD are little-endian machines.
+On second thought, you probably want hashlittle2(), which is identical to
+hashlittle() except it returns two 32-bit hashes for the price of one.
+You could implement hashbig2() if you wanted but I haven't bothered here.
+
+If you want to find a hash of, say, exactly 7 integers, do
+ a = i1; b = i2; c = i3;
+ mix(a,b,c);
+ a += i4; b += i5; c += i6;
+ mix(a,b,c);
+ a += i7;
+ final(a,b,c);
+then use c as the hash value. If you have a variable length array of
+4-byte integers to hash, use hashword(). If you have a byte array (like
+a character string), use hashlittle(). If you have several byte arrays, or
+a mix of things, see the comments above hashlittle().
+
+Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
+then mix those integers. This is fast (you can do a lot more thorough
+mixing with 12*3 instructions on 3 integers than you can with 3 instructions
+on 1 byte), but shoehorning those bytes into integers efficiently is messy.
+-------------------------------------------------------------------------------
+*/
+
+#include <QtGlobal>
+
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+# define HASH_LITTLE_ENDIAN 0
+# define HASH_BIG_ENDIAN 1
+#else
+# define HASH_LITTLE_ENDIAN 1
+# define HASH_BIG_ENDIAN 0
+#endif
+
+#define hashsize(n) ((quint32)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+
+/*
+-------------------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+
+This is reversible, so any information in (a,b,c) before mix() is
+still in (a,b,c) after mix().
+
+If four pairs of (a,b,c) inputs are run through mix(), or through
+mix() in reverse, there are at least 32 bits of the output that
+are sometimes the same for one pair and different for another pair.
+This was tested for:
+* pairs that differed by one bit, by two bits, in any combination
+ of top bits of (a,b,c), or in any combination of bottom bits of
+ (a,b,c).
+* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+ is commonly produced by subtraction) look like a single 1-bit
+ difference.
+* the base values were pseudorandom, all zero but one bit set, or
+ all zero plus a counter that starts at zero.
+
+Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
+satisfy this are
+ 4 6 8 16 19 4
+ 9 15 3 18 27 15
+ 14 9 3 7 17 3
+Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
+for "differ" defined as + with a one-bit base and a two-bit delta. I
+used http://burtleburtle.net/bob/hash/avalanche.html to choose
+the operations, constants, and arrangements of the variables.
+
+This does not achieve avalanche. There are input bits of (a,b,c)
+that fail to affect some output bits of (a,b,c), especially of a. The
+most thoroughly mixed value is c, but it doesn't really even achieve
+avalanche in c.
+
+This allows some parallelism. Read-after-writes are good at doubling
+the number of bits affected, so the goal of mixing pulls in the opposite
+direction as the goal of parallelism. I did what I could. Rotates
+seem to cost as much as shifts on every machine I could lay my hands
+on, and rotates are much kinder to the top and bottom bits, so I used
+rotates.
+-------------------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+ a -= c; a ^= rot(c, 4); c += b; \
+ b -= a; b ^= rot(a, 6); a += c; \
+ c -= b; c ^= rot(b, 8); b += a; \
+ a -= c; a ^= rot(c,16); c += b; \
+ b -= a; b ^= rot(a,19); a += c; \
+ c -= b; c ^= rot(b, 4); b += a; \
+}
+
+/*
+-------------------------------------------------------------------------------
+final -- final mixing of 3 32-bit values (a,b,c) into c
+
+Pairs of (a,b,c) values differing in only a few bits will usually
+produce values of c that look totally different. This was tested for
+* pairs that differed by one bit, by two bits, in any combination
+ of top bits of (a,b,c), or in any combination of bottom bits of
+ (a,b,c).
+* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+ is commonly produced by subtraction) look like a single 1-bit
+ difference.
+* the base values were pseudorandom, all zero but one bit set, or
+ all zero plus a counter that starts at zero.
+
+These constants passed:
+ 14 11 25 16 4 14 24
+ 12 14 25 16 4 14 24
+and these came close:
+ 4 8 15 26 3 22 24
+ 10 8 15 26 3 22 24
+ 11 8 15 26 3 22 24
+-------------------------------------------------------------------------------
+*/
+#define final(a,b,c) \
+{ \
+ c ^= b; c -= rot(b,14); \
+ a ^= c; a -= rot(c,11); \
+ b ^= a; b -= rot(a,25); \
+ c ^= b; c -= rot(b,16); \
+ a ^= c; a -= rot(c,4); \
+ b ^= a; b -= rot(a,14); \
+ c ^= b; c -= rot(b,24); \
+}
+
+/*
+--------------------------------------------------------------------
+ This works on all machines. To be useful, it requires
+ -- that the key be an array of quint32's, and
+ -- that the length be the number of quint32's in the key
+
+ The function hashword() is identical to hashlittle() on little-endian
+ machines, and identical to hashbig() on big-endian machines,
+ except that the length has to be measured in quint32s rather than in
+ bytes. hashlittle() is more complicated than hashword() only because
+ hashlittle() has to dance around fitting the key bytes into registers.
+--------------------------------------------------------------------
+*/
+quint32 hashword(
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 initval) /* the previous hash, or an arbitrary value */
+{
+ quint32 a,b,c;
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + (((quint32)length)<<2) + initval;
+
+ /*------------------------------------------------- handle most of the key */
+ while (length > 3)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 3;
+ k += 3;
+ }
+
+ /*------------------------------------------- handle the last 3 quint32's */
+ switch(length) /* all the case statements fall through */
+ {
+ case 3 : c+=k[2];
+ case 2 : b+=k[1];
+ case 1 : a+=k[0];
+ final(a,b,c);
+ case 0: /* case 0: nothing left to add */
+ break;
+ }
+ /*------------------------------------------------------ report the result */
+ return c;
+}
+
+
+/*
+--------------------------------------------------------------------
+hashword2() -- same as hashword(), but take two seeds and return two
+32-bit values. pc and pb must both be nonnull, and *pc and *pb must
+both be initialized with seeds. If you pass in (*pb)==0, the output
+(*pc) will be the same as the return value from hashword().
+--------------------------------------------------------------------
+*/
+void hashword2 (
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 *pc, /* IN: seed OUT: primary hash value */
+quint32 *pb) /* IN: more seed OUT: secondary hash value */
+{
+ quint32 a,b,c;
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)(length<<2)) + *pc;
+ c += *pb;
+
+ /*------------------------------------------------- handle most of the key */
+ while (length > 3)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 3;
+ k += 3;
+ }
+
+ /*------------------------------------------- handle the last 3 quint32's */
+ switch(length) /* all the case statements fall through */
+ {
+ case 3 : c+=k[2];
+ case 2 : b+=k[1];
+ case 1 : a+=k[0];
+ final(a,b,c);
+ case 0: /* case 0: nothing left to add */
+ break;
+ }
+ /*------------------------------------------------------ report the result */
+ *pc=c; *pb=b;
+}
+
+
+/*
+-------------------------------------------------------------------------------
+hashlittle() -- hash a variable-length key into a 32-bit value
+ k : the key (the unaligned variable-length array of bytes)
+ length : the length of the key, counting by bytes
+ initval : can be any 4-byte value
+Returns a 32-bit value. Every bit of the key affects every bit of
+the return value. Two keys differing by one or two bits will have
+totally different hash values.
+
+The best hash table sizes are powers of 2. There is no need to do
+mod a prime (mod is sooo slow!). If you need less than 32 bits,
+use a bitmask. For example, if you need only 10 bits, do
+ h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (quint8 **)k, do it like this:
+ for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
+
+By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+Use for hash table lookup, or anything where one collision in 2^^32 is
+acceptable. Do NOT use for cryptographic purposes.
+-------------------------------------------------------------------------------
+*/
+
+quint32 hashlittle( const void *key, size_t length, quint32 initval)
+{
+ quint32 a,b,c; /* internal state */
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + initval;
+
+ u.ptr = key;
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
+ * then masks off the part it's not allowed to read. Because the
+ * string is aligned, the masked-off tail is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff; break;
+ case 2 : a+=k[0]&0xffff; break;
+ case 1 : a+=k[0]&0xff; break;
+ case 0 : return c; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=((quint32)k8[9])<<8; /* fall through */
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<8; /* fall through */
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<8; /* fall through */
+ case 1 : a+=k8[0]; break;
+ case 0 : return c;
+ }
+
+#endif /* !valgrind */
+
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
+ const quint16 *k = (const quint16 *)key; /* read 16-bit chunks */
+ const quint8 *k8;
+
+ /*--------------- all but last block: aligned reads and different mixing */
+ while (length > 12)
+ {
+ a += k[0] + (((quint32)k[1])<<16);
+ b += k[2] + (((quint32)k[3])<<16);
+ c += k[4] + (((quint32)k[5])<<16);
+ mix(a,b,c);
+ length -= 12;
+ k += 6;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[4]+(((quint32)k[5])<<16);
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=k[4];
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=k[2];
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=k[0];
+ break;
+ case 1 : a+=k8[0];
+ break;
+ case 0 : return c; /* zero length requires no mixing */
+ }
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ a += ((quint32)k[1])<<8;
+ a += ((quint32)k[2])<<16;
+ a += ((quint32)k[3])<<24;
+ b += k[4];
+ b += ((quint32)k[5])<<8;
+ b += ((quint32)k[6])<<16;
+ b += ((quint32)k[7])<<24;
+ c += k[8];
+ c += ((quint32)k[9])<<8;
+ c += ((quint32)k[10])<<16;
+ c += ((quint32)k[11])<<24;
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=((quint32)k[11])<<24;
+ case 11: c+=((quint32)k[10])<<16;
+ case 10: c+=((quint32)k[9])<<8;
+ case 9 : c+=k[8];
+ case 8 : b+=((quint32)k[7])<<24;
+ case 7 : b+=((quint32)k[6])<<16;
+ case 6 : b+=((quint32)k[5])<<8;
+ case 5 : b+=k[4];
+ case 4 : a+=((quint32)k[3])<<24;
+ case 3 : a+=((quint32)k[2])<<16;
+ case 2 : a+=((quint32)k[1])<<8;
+ case 1 : a+=k[0];
+ break;
+ case 0 : return c;
+ }
+ }
+
+ final(a,b,c);
+ return c;
+}
+
+
+/*
+ * hashlittle2: return 2 32-bit hash values
+ *
+ * This is identical to hashlittle(), except it returns two 32-bit hash
+ * values instead of just one. This is good enough for hash table
+ * lookup with 2^^64 buckets, or if you want a second hash if you're not
+ * happy with the first, or if you want a probably-unique 64-bit ID for
+ * the key. *pc is better mixed than *pb, so use *pc first. If you want
+ * a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)".
+ */
+void hashlittle2(
+ const void *key, /* the key to hash */
+ size_t length, /* length of the key */
+ quint32 *pc, /* IN: primary initval, OUT: primary hash */
+ quint32 *pb) /* IN: secondary initval, OUT: secondary hash */
+{
+ quint32 a,b,c; /* internal state */
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + *pc;
+ c += *pb;
+
+ u.ptr = key;
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
+ * then masks off the part it's not allowed to read. Because the
+ * string is aligned, the masked-off tail is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff; break;
+ case 2 : a+=k[0]&0xffff; break;
+ case 1 : a+=k[0]&0xff; break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=((quint32)k8[9])<<8; /* fall through */
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<8; /* fall through */
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<8; /* fall through */
+ case 1 : a+=k8[0]; break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+#endif /* !valgrind */
+
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
+ const quint16 *k = (const quint16 *)key; /* read 16-bit chunks */
+ const quint8 *k8;
+
+ /*--------------- all but last block: aligned reads and different mixing */
+ while (length > 12)
+ {
+ a += k[0] + (((quint32)k[1])<<16);
+ b += k[2] + (((quint32)k[3])<<16);
+ c += k[4] + (((quint32)k[5])<<16);
+ mix(a,b,c);
+ length -= 12;
+ k += 6;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[4]+(((quint32)k[5])<<16);
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=k[4];
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=k[2];
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=k[0];
+ break;
+ case 1 : a+=k8[0];
+ break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ a += ((quint32)k[1])<<8;
+ a += ((quint32)k[2])<<16;
+ a += ((quint32)k[3])<<24;
+ b += k[4];
+ b += ((quint32)k[5])<<8;
+ b += ((quint32)k[6])<<16;
+ b += ((quint32)k[7])<<24;
+ c += k[8];
+ c += ((quint32)k[9])<<8;
+ c += ((quint32)k[10])<<16;
+ c += ((quint32)k[11])<<24;
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=((quint32)k[11])<<24;
+ case 11: c+=((quint32)k[10])<<16;
+ case 10: c+=((quint32)k[9])<<8;
+ case 9 : c+=k[8];
+ case 8 : b+=((quint32)k[7])<<24;
+ case 7 : b+=((quint32)k[6])<<16;
+ case 6 : b+=((quint32)k[5])<<8;
+ case 5 : b+=k[4];
+ case 4 : a+=((quint32)k[3])<<24;
+ case 3 : a+=((quint32)k[2])<<16;
+ case 2 : a+=((quint32)k[1])<<8;
+ case 1 : a+=k[0];
+ break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+ }
+
+ final(a,b,c);
+ *pc=c; *pb=b;
+}
+
+
+
+/*
+ * hashbig():
+ * This is the same as hashword() on big-endian machines. It is different
+ * from hashlittle() on all machines. hashbig() takes advantage of
+ * big-endian byte ordering.
+ */
+quint32 hashbig( const void *key, size_t length, quint32 initval)
+{
+ quint32 a,b,c;
+ union { const void *ptr; size_t i; } u; /* to cast key to (size_t) happily */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + initval;
+
+ u.ptr = key;
+ if (HASH_BIG_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]<<8" actually reads beyond the end of the string, but
+ * then shifts out the part it's not allowed to read. Because the
+ * string is aligned, the illegal read is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff00; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff0000; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff000000; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff00; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff0000; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff000000; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff00; break;
+ case 2 : a+=k[0]&0xffff0000; break;
+ case 1 : a+=k[0]&0xff000000; break;
+ case 0 : return c; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<8; /* fall through */
+ case 10: c+=((quint32)k8[9])<<16; /* fall through */
+ case 9 : c+=((quint32)k8[8])<<24; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<8; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<16; /* fall through */
+ case 5 : b+=((quint32)k8[4])<<24; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<8; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<16; /* fall through */
+ case 1 : a+=((quint32)k8[0])<<24; break;
+ case 0 : return c;
+ }
+
+#endif /* !VALGRIND */
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += ((quint32)k[0])<<24;
+ a += ((quint32)k[1])<<16;
+ a += ((quint32)k[2])<<8;
+ a += ((quint32)k[3]);
+ b += ((quint32)k[4])<<24;
+ b += ((quint32)k[5])<<16;
+ b += ((quint32)k[6])<<8;
+ b += ((quint32)k[7]);
+ c += ((quint32)k[8])<<24;
+ c += ((quint32)k[9])<<16;
+ c += ((quint32)k[10])<<8;
+ c += ((quint32)k[11]);
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=k[11];
+ case 11: c+=((quint32)k[10])<<8;
+ case 10: c+=((quint32)k[9])<<16;
+ case 9 : c+=((quint32)k[8])<<24;
+ case 8 : b+=k[7];
+ case 7 : b+=((quint32)k[6])<<8;
+ case 6 : b+=((quint32)k[5])<<16;
+ case 5 : b+=((quint32)k[4])<<24;
+ case 4 : a+=k[3];
+ case 3 : a+=((quint32)k[2])<<8;
+ case 2 : a+=((quint32)k[1])<<16;
+ case 1 : a+=((quint32)k[0])<<24;
+ break;
+ case 0 : return c;
+ }
+ }
+
+ final(a,b,c);
+ return c;
+}
diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp
index c4f09a4cf9..dc1b008e80 100644
--- a/tests/arthur/common/paintcommands.cpp
+++ b/tests/arthur/common/paintcommands.cpp
@@ -185,6 +185,7 @@ int PaintCommands::translateEnum(const char *table[], const QString &pattern, in
QList<PaintCommands::PaintCommandInfos> PaintCommands::s_commandInfoTable = QList<PaintCommands::PaintCommandInfos>();
QList<QPair<QString,QStringList> > PaintCommands::s_enumsTable = QList<QPair<QString,QStringList> >();
+QMultiHash<QString, int> PaintCommands::s_commandHash;
#define DECL_PAINTCOMMAND(identifier, method, regexp, syntax, sample) \
s_commandInfoTable << PaintCommandInfos(QLatin1String(identifier), &PaintCommands::method, QRegExp(regexp), \
@@ -627,6 +628,15 @@ void PaintCommands::staticInit()
"\n - where vertices 1 to 4 defines the source quad and 5 to 8 the destination quad",
"mapQuadToQuad 0.0 0.0 1.0 1.0 0.0 0.0 -1.0 -1.0");
+ // populate the command lookup hash
+ for (int i=0; i<s_commandInfoTable.size(); i++) {
+ if (s_commandInfoTable.at(i).isSectionHeader() ||
+ s_commandInfoTable.at(i).identifier == QLatin1String("comment") ||
+ s_commandInfoTable.at(i).identifier == QLatin1String("noop"))
+ continue;
+ s_commandHash.insert(s_commandInfoTable.at(i).identifier, i);
+ }
+
// populate the enums list
ADD_ENUMLIST("brush styles", brushStyleTable);
ADD_ENUMLIST("pen styles", penStyleTable);
@@ -686,12 +696,23 @@ void PaintCommands::insertAt(int commandIndex, const QStringList &newCommands)
**********************************************************************************/
void PaintCommands::runCommand(const QString &scriptLine)
{
- staticInit();
- foreach (PaintCommandInfos command, s_commandInfoTable)
- if (!command.isSectionHeader() && command.regExp.indexIn(scriptLine) >= 0) {
+ if (scriptLine.isEmpty()) {
+ command_noop(QRegExp());
+ return;
+ }
+ if (scriptLine.startsWith('#')) {
+ command_comment(QRegExp());
+ return;
+ }
+ QString firstWord = scriptLine.section(QRegExp("\\s"), 0, 0);
+ QList<int> indices = s_commandHash.values(firstWord);
+ foreach(int idx, indices) {
+ const PaintCommandInfos &command = s_commandInfoTable.at(idx);
+ if (command.regExp.indexIn(scriptLine) >= 0) {
(this->*(command.paintMethod))(command.regExp);
return;
}
+ }
qWarning("ERROR: unknown command or argument syntax error in \"%s\"", qPrintable(scriptLine));
}
@@ -1357,6 +1378,8 @@ void PaintCommands::command_qt3_drawArc(QRegExp re)
/***************************************************************************************************/
void PaintCommands::command_drawText(QRegExp re)
{
+ if (!m_shouldDrawText)
+ return;
QStringList caps = re.capturedTexts();
int x = convertToInt(caps.at(1));
int y = convertToInt(caps.at(2));
diff --git a/tests/arthur/common/paintcommands.h b/tests/arthur/common/paintcommands.h
index aed48404fa..ebd882b053 100644
--- a/tests/arthur/common/paintcommands.h
+++ b/tests/arthur/common/paintcommands.h
@@ -48,6 +48,7 @@
#include <qstringlist.h>
#include <qpixmap.h>
#include <qbrush.h>
+#include <qhash.h>
QT_FORWARD_DECLARE_CLASS(QPainter)
QT_FORWARD_DECLARE_CLASS(QRegExp)
@@ -89,6 +90,7 @@ public:
, m_verboseMode(false)
, m_type(WidgetType)
, m_checkers_background(true)
+ , m_shouldDrawText(true)
{ staticInit(); }
public:
@@ -114,6 +116,7 @@ public:
void setControlPoints(const QVector<QPointF> &points) { staticInit(); m_controlPoints = points; }
void setVerboseMode(bool v) { staticInit(); m_verboseMode = v; }
void insertAt(int commandIndex, const QStringList &newCommands);
+ void setShouldDrawText(bool drawText) { m_shouldDrawText = drawText; }
// run
void runCommands();
@@ -279,6 +282,7 @@ private:
bool m_verboseMode;
DeviceType m_type;
bool m_checkers_background;
+ bool m_shouldDrawText;
QVector<QPointF> m_controlPoints;
@@ -329,6 +333,7 @@ public:
static QList<PaintCommandInfos> s_commandInfoTable;
static QList<QPair<QString,QStringList> > s_enumsTable;
+ static QMultiHash<QString, int> s_commandHash;
};
#endif // PAINTCOMMANDS_H
diff --git a/tests/auto/collections/collections.pro b/tests/auto/collections/collections.pro
index 876e9034c4..8601ff877d 100644
--- a/tests/auto/collections/collections.pro
+++ b/tests/auto/collections/collections.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_collections.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp
index 0adceee651..7c705054b5 100644
--- a/tests/auto/collections/tst_collections.cpp
+++ b/tests/auto/collections/tst_collections.cpp
@@ -166,6 +166,9 @@ private slots:
void forwardDeclared();
void alignment();
void QTBUG13079_collectionInsideCollection();
+
+ void foreach_2();
+ void insert_remove_loop();
};
struct LargeStatic {
@@ -3707,5 +3710,214 @@ void tst_Collections::QTBUG13079_collectionInsideCollection()
#endif
}
+template<class Container> void foreach_test_arrays(const Container &container)
+{
+ typedef typename Container::value_type T;
+ int i = 0;
+ QSet <T> set;
+ foreach(const T & val, container) {
+ QVERIFY( val == container[i] );
+ set << val;
+ i++;
+ }
+ QCOMPARE(set.count(), container.count());
+
+ //modify the container while iterating.
+ Container c2 = container;
+ Container c3;
+ i = 0;
+ foreach (T val, c2) {
+ c3 << val;
+ c2.insert((i * 89) % c2.size(), T() );
+ QVERIFY( val == container.at(i) );
+ val = T();
+ i++;
+ }
+ QVERIFY(c3 == container);
+}
+
+
+void tst_Collections::foreach_2()
+{
+ QStringList strlist = QString::fromLatin1("a,b,c,d,e,f,g,h,ih,kl,mn,op,qr,st,uvw,xyz").split(",");
+ foreach_test_arrays(strlist);
+ foreach_test_arrays(QList<QString>(strlist));
+ foreach_test_arrays(strlist.toVector());
+
+ QList<int> intlist;
+ intlist << 1 << 2 << 3 << 4 <<5 << 6 << 7 << 8 << 9;
+ foreach_test_arrays(intlist);
+ foreach_test_arrays(intlist.toVector());
+
+ QVarLengthArray<int> varl1;
+ QVarLengthArray<int, 3> varl2;
+ QVarLengthArray<int, 10> varl3;
+ foreach(int i, intlist) {
+ varl1 << i;
+ varl2 << i;
+ varl3 << i;
+ }
+ QCOMPARE(varl1.count(), intlist.count());
+ QCOMPARE(varl2.count(), intlist.count());
+ QCOMPARE(varl3.count(), intlist.count());
+ foreach_test_arrays(varl1);
+ foreach_test_arrays(varl2);
+ foreach_test_arrays(varl3);
+
+ QVarLengthArray<QString> varl4;
+ QVarLengthArray<QString, 3> varl5;
+ QVarLengthArray<QString, 18> varl6;
+ foreach(const QString &str, strlist) {
+ varl4 << str;
+ varl5 << str;
+ varl6 << str;
+ }
+ QCOMPARE(varl4.count(), strlist.count());
+ QCOMPARE(varl5.count(), strlist.count());
+ QCOMPARE(varl6.count(), strlist.count());
+ foreach_test_arrays(varl4);
+ foreach_test_arrays(varl5);
+ foreach_test_arrays(varl6);
+}
+
+struct IntOrString
+{
+ int val;
+ IntOrString(int v) : val(v) { }
+ IntOrString(const QString &v) : val(v.toInt()) { }
+ operator int() { return val; }
+ operator QString() { return QString::number(val); }
+#ifndef QT_NO_STL
+ operator std::string() { return QString::number(val).toStdString(); }
+ IntOrString(const std::string &v) : val(QString::fromStdString(v).toInt()) { }
+#endif
+};
+
+template<class Container> void insert_remove_loop_impl()
+{
+ typedef typename Container::value_type T;
+ Container t;
+ t.append(T(IntOrString(1)));
+ t << (T(IntOrString(2)));
+ t += (T(IntOrString(3)));
+ t.prepend(T(IntOrString(4)));
+ t.insert(2, 3 , T(IntOrString(5)));
+ t.insert(4, T(IntOrString(6)));
+ t.insert(t.begin() + 2, T(IntOrString(7)));
+ t.insert(t.begin() + 5, 3, T(IntOrString(8)));
+ int expect1[] = { 4 , 1 , 7, 5 , 5 , 8, 8, 8, 6, 5, 2 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect1)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect1[i])));
+ }
+
+ Container compare_test1 = t;
+ t.replace(5, T(IntOrString(9)));
+ Container compare_test2 = t;
+ QVERIFY(!(compare_test1 == t));
+ QVERIFY( (compare_test1 != t));
+ QVERIFY( (compare_test2 == t));
+ QVERIFY(!(compare_test2 != t));
+ t.remove(7);
+ t.remove(2, 3);
+ int expect2[] = { 4 , 1 , 9, 8, 6, 5, 2 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect2)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect2[i])));
+ }
+
+ for (typename Container::iterator it = t.begin(); it != t.end(); ) {
+ if ( int(IntOrString(*it)) % 2 )
+ ++it;
+ else
+ it = t.erase(it);
+ }
+
+ int expect3[] = { 1 , 9, 5, 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect3)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect3[i])));
+ }
+
+ t.erase(t.begin() + 1, t.end() - 1);
+
+ int expect4[] = { 1 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect4)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect4[i])));
+ }
+
+ t << T(IntOrString(10)) << T(IntOrString(11)) << T(IntOrString(12)) << T(IntOrString(13));
+ t << T(IntOrString(14)) << T(IntOrString(15)) << T(IntOrString(16)) << T(IntOrString(17));
+ t << T(IntOrString(18)) << T(IntOrString(19)) << T(IntOrString(20)) << T(IntOrString(21));
+ for (typename Container::iterator it = t.begin(); it != t.end(); ++it) {
+ int iv = int(IntOrString(*it));
+ if ( iv % 2 ) {
+ it = t.insert(it, T(IntOrString(iv * iv)));
+ it = t.insert(it + 2, T(IntOrString(iv * iv + 1)));
+ }
+ }
+
+ int expect5[] = { 1, 1, 2, 3*3, 3, 3*3+1, 10, 11*11, 11, 11*11+1, 12 , 13*13, 13, 13*13+1, 14,
+ 15*15, 15, 15*15+1, 16 , 17*17, 17, 17*17+1 ,18 , 19*19, 19, 19*19+1, 20, 21*21, 21, 21*21+1 };
+ QCOMPARE(size_t(t.count()), sizeof(expect5)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect5[i])));
+ }
+}
+
+
+//Add insert(int, int, T) so it has the same interface as QVector and QVarLengthArray for the test.
+template<typename T>
+struct ExtList : QList<T> {
+ using QList<T>::insert;
+ void insert(int before, int n, const T&x) {
+ while (n--) {
+ this->insert(before, x );
+ }
+ }
+ void insert(typename QList<T>::iterator before, int n, const T&x) {
+ while (n--) {
+ before = this->insert(before, x);
+ }
+ }
+
+ void remove(int i) {
+ this->removeAt(i);
+ }
+ void remove(int i, int n) {
+ while (n--) {
+ this->removeAt(i);
+ }
+ }
+};
+
+void tst_Collections::insert_remove_loop()
+{
+ insert_remove_loop_impl<ExtList<int> >();
+ insert_remove_loop_impl<ExtList<QString> >();
+ insert_remove_loop_impl<QVector<int> >();
+ insert_remove_loop_impl<QVector<QString> >();
+ insert_remove_loop_impl<QVarLengthArray<int> >();
+ insert_remove_loop_impl<QVarLengthArray<QString> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 15> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 15> >();
+
+#ifndef QT_NO_STL
+ insert_remove_loop_impl<ExtList<std::string> >();
+ insert_remove_loop_impl<QVector<std::string> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 15> >();
+#endif
+}
+
+
+
QTEST_APPLESS_MAIN(tst_Collections)
#include "tst_collections.moc"
diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp
index cff0b46d39..0c7f8fb528 100644
--- a/tests/auto/declarative/examples/tst_examples.cpp
+++ b/tests/auto/declarative/examples/tst_examples.cpp
@@ -86,6 +86,7 @@ tst_examples::tst_examples()
// Add directories you want excluded here
excludedDirs << "doc/src/snippets/declarative/visualdatamodel_rootindex";
+ excludedDirs << "doc/src/snippets/declarative/qtbinding";
#ifdef QT_NO_WEBKIT
excludedDirs << "examples/declarative/modelviews/webview";
diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
index e6a81b8433..45bb10e2a5 100644
--- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
+++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
@@ -59,6 +59,7 @@
#include <private/qdeclarativerectangle_p.h>
#include <private/qdeclarativemetatype_p.h>
#include <private/qdeclarativeproperty_p.h>
+#include <private/qdeclarativedebughelper_p.h>
#include "../../../shared/util.h"
#include "../shared/debugutil_p.h"
@@ -112,6 +113,7 @@ private slots:
void tst_QDeclarativeDebugContextReference();
void tst_QDeclarativeDebugPropertyReference();
+ void setBindingForObject();
void setMethodBody();
};
@@ -278,8 +280,10 @@ void tst_QDeclarativeDebug::initTestCase()
{
qRegisterMetaType<QDeclarativeDebugWatch::State>();
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
m_engine = new QDeclarativeEngine(this);
QList<QByteArray> qml;
@@ -894,6 +898,78 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugPropertyReference()
compareProperties(r, ref);
}
+
+void tst_QDeclarativeDebug::setBindingForObject()
+{
+ QDeclarativeDebugObjectReference rootObject = findRootObject();
+ QVERIFY(rootObject.debugId() != -1);
+ QDeclarativeDebugPropertyReference widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(10));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set literal
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "15", true);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(15));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set expression
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "height", false);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(20));
+ QCOMPARE(widthPropertyRef.binding(), QString("height"));
+
+ //
+ // reset
+ //
+ m_dbg->resetBindingForObject(rootObject.debugId(), "width");
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ // QCOMPARE(widthPropertyRef.value(), QVariant(0)); // TODO: Shouldn't this work?
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set handler
+ //
+ rootObject = findRootObject();
+ QCOMPARE(rootObject.children().size(), 3);
+ QDeclarativeDebugObjectReference mouseAreaObject = rootObject.children().at(2);
+ QDeclarativeDebugObjectQuery *q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+
+ QCOMPARE(mouseAreaObject.className(), QString("MouseArea"));
+
+ QDeclarativeDebugPropertyReference onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{ console.log('hello') }"));
+
+ m_dbg->setBindingForObject(mouseAreaObject.debugId(), "onEntered", "{console.log('hello, world') }", false) ;
+
+ rootObject = findRootObject();
+ mouseAreaObject = rootObject.children().at(2);
+ q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+ onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{console.log('hello, world') }"));
+}
+
int main(int argc, char *argv[])
{
int _argc = argc + 1;
diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
index 80241ba855..64afd4e28f 100644
--- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
+++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
@@ -51,6 +51,7 @@
#include <private/qdeclarativeenginedebug_p.h>
#include <private/qdeclarativedebugclient_p.h>
#include <private/qdeclarativedebugservice_p.h>
+#include <private/qdeclarativedebughelper_p.h>
#include "../../../shared/util.h"
#include "../shared/debugutil_p.h"
@@ -72,8 +73,10 @@ private slots:
void tst_QDeclarativeDebugClient::initTestCase()
{
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3770...");
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3770...");
new QDeclarativeEngine(this);
m_conn = new QDeclarativeDebugConnection(this);
diff --git a/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h b/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
index c9cb839121..edfc58f102 100644
--- a/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
+++ b/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
@@ -58,6 +58,10 @@ class Q_DECLARATIVE_EXPORT QDeclarativeDebugHelper
public:
static QScriptEngine *getScriptEngine(QDeclarativeEngine *engine);
static void setAnimationSlowDownFactor(qreal factor);
+
+ // Enables remote debugging functionality
+ // Only use this for debugging in a safe environment!
+ static void enableDebugging();
};
QT_END_NAMESPACE
diff --git a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
index 36f2222c1d..60aec9d321 100644
--- a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
+++ b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
@@ -54,6 +54,7 @@ class tst_qdeclarativedebughelper : public QObject {
private slots:
void getScriptEngine();
void setAnimationSlowDownFactor();
+ void enableDebugging();
};
class TestAnimation : public QAbstractAnimation {
@@ -109,6 +110,12 @@ void tst_qdeclarativedebughelper::setAnimationSlowDownFactor()
QVERIFY(animation.updateCalled > 1);
}
+void tst_qdeclarativedebughelper::enableDebugging()
+{
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+}
+
QTEST_MAIN(tst_qdeclarativedebughelper)
#include "tst_qdeclarativedebughelper.moc"
diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
index 538129c5cd..30629f9dc6 100644
--- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
+++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
@@ -46,6 +46,7 @@
#include <QThread>
#include <QtDeclarative/qdeclarativeengine.h>
+#include <private/qdeclarativedebughelper_p.h>
#include <private/qdeclarativedebug_p.h>
#include <private/qdeclarativeenginedebug_p.h>
@@ -75,6 +76,9 @@ private slots:
void tst_QDeclarativeDebugService::initTestCase()
{
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+
QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3769...");
new QDeclarativeEngine(this);
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml b/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
index b4a702bbbe..07bb16b0d8 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
@@ -3,4 +3,10 @@ import Qt.test 1.0
MyQmlObject {
property int c1: 0
property int c2: c1
+ property alias c3: inner.ic1
+
+ objectProperty: MyQmlObject {
+ id: inner
+ property int ic1: c1
+ }
}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml
new file mode 100644
index 0000000000..5a2091f71c
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml
@@ -0,0 +1,11 @@
+import Qt.test 1.0
+
+MyQmlObject {
+ property alias c1: myConstants.c1
+ property alias c3: myConstants.c3
+
+ objectProperty: ConstantsOverrideBindings {
+ id: myConstants
+ c3: 10
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml b/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
index 0a933e86f2..090c948f26 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
@@ -1,13 +1,14 @@
import Qt.test 1.0
MyQmlObject {
+ id: obj
property alias c1: myConstants.c1
property alias c2: myConstants.c2
property int c3: 0
objectProperty: ConstantsOverrideBindings {
id: myConstants
- c2: c3
+ c2: obj.c3
}
}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 72e2e10488..3dd69da71e 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -733,6 +733,21 @@ void tst_qdeclarativeecmascript::constantsOverrideBindings()
QCOMPARE(object->property("c2").toInt(), 13);
}
#endif
+
+ // Using an alias
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("constantsOverrideBindings.4.qml"));
+ MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create());
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->property("c1").toInt(), 0);
+ QEXPECT_FAIL("", "QTBUG-13719", Continue);
+ QCOMPARE(object->property("c3").toInt(), 10);
+ object->setProperty("c1", QVariant(9));
+ QCOMPARE(object->property("c1").toInt(), 9);
+ QEXPECT_FAIL("", "QTBUG-13719", Continue);
+ QCOMPARE(object->property("c3").toInt(), 10);
+ }
}
/*
diff --git a/tests/auto/declarative/qdeclarativeimage/data/rect.png b/tests/auto/declarative/qdeclarativeimage/data/rect.png
new file mode 100644
index 0000000000..d564a2d5a5
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/rect.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index f1e026f20d..bf779adec0 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -80,6 +80,8 @@ private slots:
void preserveAspectRatio();
void smooth();
void svg();
+ void geometry();
+ void geometry_data();
void big();
void tiling_QTBUG_6716();
void noLoading();
@@ -288,6 +290,78 @@ void tst_qdeclarativeimage::svg()
delete obj;
}
+void tst_qdeclarativeimage::geometry_data()
+{
+ QTest::addColumn<QString>("fillMode");
+ QTest::addColumn<bool>("explicitWidth");
+ QTest::addColumn<bool>("explicitHeight");
+ QTest::addColumn<double>("itemWidth");
+ QTest::addColumn<double>("paintedWidth");
+ QTest::addColumn<double>("boundingWidth");
+ QTest::addColumn<double>("itemHeight");
+ QTest::addColumn<double>("paintedHeight");
+ QTest::addColumn<double>("boundingHeight");
+
+ // tested image has width 200, height 100
+
+ // bounding rect and item rect are equal with fillMode PreserveAspectFit, painted rect may be smaller if the aspect ratio doesn't match
+ QTest::newRow("PreserveAspectFit") << "PreserveAspectFit" << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectFit explicit width 300") << "PreserveAspectFit" << true << false << 300.0 << 200.0 << 300.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectFit explicit height 400") << "PreserveAspectFit" << false << true << 200.0 << 200.0 << 200.0 << 400.0 << 100.0 << 400.0;
+ QTest::newRow("PreserveAspectFit explicit width 300, height 400") << "PreserveAspectFit" << true << true << 300.0 << 300.0 << 300.0 << 400.0 << 150.0 << 400.0;
+
+ // bounding rect and painted rect are equal with fillMode PreserveAspectCrop, item rect may be smaller if the aspect ratio doesn't match
+ QTest::newRow("PreserveAspectCrop") << "PreserveAspectCrop" << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectCrop explicit width 300") << "PreserveAspectCrop" << true << false << 300.0 << 300.0 << 300.0 << 100.0 << 150.0 << 150.0;
+ QTest::newRow("PreserveAspectCrop explicit height 400") << "PreserveAspectCrop" << false << true << 200.0 << 800.0 << 800.0 << 400.0 << 400.0 << 400.0;
+ QTest::newRow("PreserveAspectCrop explicit width 300, height 400") << "PreserveAspectCrop" << true << true << 300.0 << 800.0 << 800.0 << 400.0 << 400.0 << 400.0;
+
+ // bounding rect, painted rect and item rect are equal in stretching and tiling images
+ QStringList fillModes;
+ fillModes << "Stretch" << "Tile" << "TileVertically" << "TileHorizontally";
+ foreach (QString fillMode, fillModes) {
+ QTest::newRow(fillMode.toLatin1()) << fillMode << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow(QString(fillMode + " explicit width 300").toLatin1()) << fillMode << true << false << 300.0 << 300.0 << 300.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow(QString(fillMode + " explicit height 400").toLatin1()) << fillMode << false << true << 200.0 << 200.0 << 200.0 << 400.0 << 400.0 << 400.0;
+ QTest::newRow(QString(fillMode + " explicit width 300, height 400").toLatin1()) << fillMode << true << true << 300.0 << 300.0 << 300.0 << 400.0 << 400.0 << 400.0;
+ }
+}
+
+void tst_qdeclarativeimage::geometry()
+{
+ QFETCH(QString, fillMode);
+ QFETCH(bool, explicitWidth);
+ QFETCH(bool, explicitHeight);
+ QFETCH(double, itemWidth);
+ QFETCH(double, itemHeight);
+ QFETCH(double, paintedWidth);
+ QFETCH(double, paintedHeight);
+ QFETCH(double, boundingWidth);
+ QFETCH(double, boundingHeight);
+
+ QString src = QUrl::fromLocalFile(SRCDIR "/data/rect.png").toString();
+ QString componentStr = "import QtQuick 1.0\nImage { source: \"" + src + "\"; fillMode: Image." + fillMode + "; ";
+
+ if (explicitWidth)
+ componentStr.append("width: 300; ");
+ if (explicitHeight)
+ componentStr.append("height: 400; ");
+ componentStr.append("}");
+ QDeclarativeComponent component(&engine);
+ component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+ QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create());
+ QVERIFY(obj != 0);
+
+ QCOMPARE(obj->width(), itemWidth);
+ QCOMPARE(obj->paintedWidth(), paintedWidth);
+ QCOMPARE(obj->boundingRect().width(), boundingWidth);
+
+ QCOMPARE(obj->height(), itemHeight);
+ QCOMPARE(obj->paintedHeight(), paintedHeight);
+ QCOMPARE(obj->boundingRect().height(), boundingHeight);
+ delete obj;
+}
+
void tst_qdeclarativeimage::big()
{
// If the JPEG loader does not implement scaling efficiently, it would
diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
index b4903aea9d..711bf00643 100644
--- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
+++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
@@ -686,6 +686,8 @@ void tst_QDeclarativeItem::propertyChanges()
QSignalSpy focusSpy(item, SIGNAL(focusChanged(bool)));
QSignalSpy wantsFocusSpy(parentItem, SIGNAL(activeFocusChanged(bool)));
QSignalSpy childrenChangedSpy(parentItem, SIGNAL(childrenChanged()));
+ QSignalSpy xSpy(item, SIGNAL(xChanged()));
+ QSignalSpy ySpy(item, SIGNAL(yChanged()));
item->setParentItem(parentItem);
item->setWidth(100.0);
@@ -731,6 +733,14 @@ void tst_QDeclarativeItem::propertyChanges()
QCOMPARE(parentItem->hasFocus(), false);
QCOMPARE(wantsFocusSpy.count(),0);
+ item->setX(10.0);
+ QCOMPARE(item->x(), 10.0);
+ QCOMPARE(xSpy.count(), 1);
+
+ item->setY(10.0);
+ QCOMPARE(item->y(), 10.0);
+ QCOMPARE(ySpy.count(), 1);
+
delete canvas;
}
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml b/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
new file mode 100644
index 0000000000..c6b1f8992a
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
@@ -0,0 +1,16 @@
+import QtQuick 1.0
+
+Item {
+ id: root
+ property int clicked: 0
+ property int pressed: 0
+ property int released: 0
+
+ MouseArea {
+ width: 200; height: 200
+ onPressed: { root.pressed++ }
+ onClicked: { root.clicked++ }
+ onReleased: { root.released++ }
+ }
+}
+
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index 5a50e0d32d..57a58e9478 100644
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
@@ -63,6 +63,7 @@ private slots:
void noOnClickedWithPressAndHold();
void onMousePressRejected();
void doubleClick();
+ void clickTwice();
private:
QDeclarativeView *createView();
@@ -426,6 +427,47 @@ void tst_QDeclarativeMouseArea::doubleClick()
QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
QCOMPARE(canvas->rootObject()->property("doubleClicked").toInt(), 1);
QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
+
+}
+
+// QTBUG-14832
+void tst_QDeclarativeMouseArea::clickTwice()
+{
+ QDeclarativeView *canvas = createView();
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clicktwice.qml"));
+ canvas->show();
+ canvas->setFocus();
+ QVERIFY(canvas->rootObject() != 0);
+
+ QGraphicsScene *scene = canvas->scene();
+ QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
+ pressEvent.setScenePos(QPointF(100, 100));
+ pressEvent.setButton(Qt::LeftButton);
+ pressEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &pressEvent);
+
+ QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
+ releaseEvent.setScenePos(QPointF(100, 100));
+ releaseEvent.setButton(Qt::LeftButton);
+ releaseEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &releaseEvent);
+
+ QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 1);
+ QCOMPARE(canvas->rootObject()->property("released").toInt(), 1);
+ QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
+
+ QGraphicsSceneMouseEvent dblClickEvent(QEvent::GraphicsSceneMouseDoubleClick);
+ dblClickEvent.setScenePos(QPointF(100, 100));
+ dblClickEvent.setButton(Qt::LeftButton);
+ dblClickEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &dblClickEvent);
+
+ QApplication::sendEvent(scene, &pressEvent);
+ QApplication::sendEvent(scene, &releaseEvent);
+
+ QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 2);
+ QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
+ QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 2);
}
QTEST_MAIN(tst_QDeclarativeMouseArea)
diff --git a/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml b/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml
new file mode 100644
index 0000000000..7f9ddbfa2d
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml
@@ -0,0 +1,29 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 1024
+ height: 768
+
+ Item {
+ id: area
+ objectName: "area"
+ property int numx: 6
+ property int cellwidth: 1024/numx
+
+ onWidthChanged: {
+ width = width>1024?1024:width;
+ }
+
+ state: 'minimal'
+ states: [
+ State {
+ name: 'minimal'
+ PropertyChanges {
+ target: area
+ width: cellwidth
+ }
+ }
+ ]
+
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
index 0d10c10d18..b8409a50ab 100644
--- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
+++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
@@ -143,6 +143,7 @@ private slots:
void returnToBase();
void extendsBug();
void editProperties();
+ void QTBUG_14830();
};
void tst_qdeclarativestates::initTestCase()
@@ -1375,6 +1376,18 @@ void tst_qdeclarativestates::editProperties()
QCOMPARE(childRect->height(), qreal(40));
}
+void tst_qdeclarativestates::QTBUG_14830()
+{
+ QDeclarativeEngine engine;
+
+ QDeclarativeComponent c(&engine, SRCDIR "/data/QTBUG-14830.qml");
+ QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create());
+ QVERIFY(rect != 0);
+ QDeclarativeItem *item = rect->findChild<QDeclarativeItem*>("area");
+
+ QCOMPARE(item->width(), qreal(171));
+}
+
QTEST_MAIN(tst_qdeclarativestates)
#include "tst_qdeclarativestates.moc"
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/basic1.qml
index d55c997c46..8c1b56e5dd 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic1.qml
@@ -11,16 +11,19 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/basic2.qml
index 31c802d1e3..9d26c737eb 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic2.qml
@@ -11,8 +11,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
@@ -21,10 +24,10 @@ Rectangle {
delegate: delegate
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
index be39ca1e08..982df9a68a 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
@@ -8,10 +8,10 @@ Rectangle {
ListModel {
id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
ListView {
@@ -21,8 +21,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
index 906af6336f..2c5d1e3eae 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
@@ -8,10 +8,10 @@ Rectangle {
ListModel {
id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
Component {
@@ -20,8 +20,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml
deleted file mode 100644
index 3373247c7c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml
+++ /dev/null
@@ -1,159 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml
deleted file mode 100644
index 20b889d5fe..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml
+++ /dev/null
@@ -1,187 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 592
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 608
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 624
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 640
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 672
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 688
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml
deleted file mode 100644
index f49de2f03d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml
+++ /dev/null
@@ -1,147 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml
deleted file mode 100644
index 1ea5547e26..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml
+++ /dev/null
@@ -1,171 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 592
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 608
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 624
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png
deleted file mode 100644
index 13b280c1c5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png
deleted file mode 100644
index 402872bde4..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png
deleted file mode 100644
index afd0830a8d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png
deleted file mode 100644
index 7c15f610b2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png
deleted file mode 100644
index afd0830a8d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png
deleted file mode 100644
index fddf1cb0c0..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png
deleted file mode 100644
index 13b280c1c5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml
deleted file mode 100644
index 829fbb3e1b..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml
+++ /dev/null
@@ -1,2203 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 32
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 48
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 64
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 80
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 96
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 112
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 128
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 144
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 160
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 176
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 192
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 208
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 224
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 240
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 256
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 272
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 288
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 304
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 320
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 336
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 352
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 368
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 384
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 400
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 416
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 432
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 448
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 464
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 480
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 496
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 512
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 528
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 544
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 560
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 576
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 592
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 608
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 624
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 640
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 656
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 672
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 688
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 704
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 720
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 736
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 752
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 768
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 784
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 800
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 816
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 832
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 848
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 864
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 880
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 896
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 912
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 928
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 944
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 960
- image: "itemlist.0.png"
- }
- Frame {
- msec: 976
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 992
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1008
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1024
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1040
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1056
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1072
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1088
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1104
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1120
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1136
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1152
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1168
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1184
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1200
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1216
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1232
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1248
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1264
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1280
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1296
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1312
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1328
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1344
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1360
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1376
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1392
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1408
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1424
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1440
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1456
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1472
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1488
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1504
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1520
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1536
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1552
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1568
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1584
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1600
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1616
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1632
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1648
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 192; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1664
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1680
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 112
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1696
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 184; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1712
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 167; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1728
- hash: "7cda93e59466b3348e7ffe3895f89e86"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1744
- hash: "06e0008c78e919f7270402938d9d764b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1760
- hash: "9d8da9199efebb95f56e5d4ebc9a585e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 98; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1776
- hash: "54a60a4279911ba4a8a5741bcadfa783"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 91; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 91; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1792
- hash: "a1a19370a1a8ed78e475f0d0eb12311c"
- }
- Frame {
- msec: 1808
- hash: "196a3b127cf7065614c34856bf8d8bca"
- }
- Frame {
- msec: 1824
- hash: "5fbefbd7c7be4374382cc4c8b86ac78a"
- }
- Frame {
- msec: 1840
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
- }
- Frame {
- msec: 1856
- hash: "20e76f0eb4ec5f691999faf8ad313370"
- }
- Frame {
- msec: 1872
- hash: "7f84a3545907c754ae8a6a30ef61c98d"
- }
- Frame {
- msec: 1888
- hash: "b544901eae32903ad054e8cdfed715eb"
- }
- Frame {
- msec: 1904
- hash: "a010ed1e3312f4ca9f429b7e32cdcef9"
- }
- Frame {
- msec: 1920
- image: "itemlist.1.png"
- }
- Frame {
- msec: 1936
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
- }
- Frame {
- msec: 1952
- hash: "c73f63d1a024ba956e693487b3ccc761"
- }
- Frame {
- msec: 1968
- hash: "539d3d00fce2d0128cd697d86d237fe7"
- }
- Frame {
- msec: 1984
- hash: "52752d7d6f2d0e085f7132313907b72b"
- }
- Frame {
- msec: 2000
- hash: "f46dd5803a6075e979e0fc733d503bfb"
- }
- Frame {
- msec: 2016
- hash: "b8734698a6bad00ecf019f85328c2c21"
- }
- Frame {
- msec: 2032
- hash: "1cfc499ca756023430cc5b2fa95a599d"
- }
- Frame {
- msec: 2048
- hash: "63a816548837c19f8f0494c137fc0174"
- }
- Frame {
- msec: 2064
- hash: "1bce9b85235e9a1a472c079dfec70ec5"
- }
- Frame {
- msec: 2080
- hash: "6677863e7f74c12648409883f73adbe2"
- }
- Frame {
- msec: 2096
- hash: "98e707a3e39a5f7bd4a101c2ed83535c"
- }
- Frame {
- msec: 2112
- hash: "c1f6d8842d14a9394d4b7797314f50e8"
- }
- Frame {
- msec: 2128
- hash: "579758b477bcd2112b305a5aac7df338"
- }
- Frame {
- msec: 2144
- hash: "4a7bb81090db246db53e2dbc56f710ea"
- }
- Frame {
- msec: 2160
- hash: "074995cdd8a70817d1c8a7bb0ad4c542"
- }
- Frame {
- msec: 2176
- hash: "bd8d7bda4d2e9ad1fba2895d568f36cc"
- }
- Frame {
- msec: 2192
- hash: "40cce3d2d80ac470af44fc334cec1d5b"
- }
- Frame {
- msec: 2208
- hash: "15cbc226b032d5a97199735ea7a1408b"
- }
- Frame {
- msec: 2224
- hash: "12b296aea9b058a5402d0d0a620f8edc"
- }
- Frame {
- msec: 2240
- hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
- }
- Frame {
- msec: 2256
- hash: "589a58ef76ea709dc8d80390c9044f99"
- }
- Frame {
- msec: 2272
- hash: "c009924bfa30153f22ab168b539494e9"
- }
- Frame {
- msec: 2288
- hash: "4b83674a7c2daa68d735901ad40be2bd"
- }
- Frame {
- msec: 2304
- hash: "0525908c0302ada989e28990bac3f2ca"
- }
- Frame {
- msec: 2320
- hash: "89eb13976ba3ba4413cafeb0cc91c01b"
- }
- Frame {
- msec: 2336
- hash: "75c1295ef99680784b2e11fb88fa1423"
- }
- Frame {
- msec: 2352
- hash: "93d89165cf6a97c76ae6e7f75678a3cd"
- }
- Frame {
- msec: 2368
- hash: "53064c1938f08a55603a99b0db225174"
- }
- Frame {
- msec: 2384
- hash: "31db5684466c0c32128a9a8c7b1835e1"
- }
- Frame {
- msec: 2400
- hash: "99d9e58697736198e0a00443d237e85b"
- }
- Frame {
- msec: 2416
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2432
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2448
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2464
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2480
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2496
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2512
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2528
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2544
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2560
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2576
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2592
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2608
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2624
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2640
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2656
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2672
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2688
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2704
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2720
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2736
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2752
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2768
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2784
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2800
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2816
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2832
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2848
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2864
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 181; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2880
- image: "itemlist.2.png"
- }
- Frame {
- msec: 2896
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 105
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 106
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2912
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 108
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 110
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2928
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 112
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2944
- hash: "b10a6206830a876017799ef2fcf61b1a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 123
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2960
- hash: "b2e24759ba10afd6cff90f4b1e04b496"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 124; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2976
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
- }
- Frame {
- msec: 2992
- hash: "7b31c6d5931677f1aa1e8c7d48a4ff22"
- }
- Frame {
- msec: 3008
- hash: "c52f691a0a6cf155118bdfea2dfea623"
- }
- Frame {
- msec: 3024
- hash: "dd639d1df3d4a9b8f06718def63d588f"
- }
- Frame {
- msec: 3040
- hash: "39d767b09a648ef6295cec2848f9226f"
- }
- Frame {
- msec: 3056
- hash: "5dd46d5f386431e7b13348ac9a9630ed"
- }
- Frame {
- msec: 3072
- hash: "0354e5183b0e66e7ba146d292c559df4"
- }
- Frame {
- msec: 3088
- hash: "984aa6d7075e24de429e05b1b0eda94a"
- }
- Frame {
- msec: 3104
- hash: "1af58a2f44f1f613712d4df85e38356d"
- }
- Frame {
- msec: 3120
- hash: "6e4085e7f1fee724d78808753f04b471"
- }
- Frame {
- msec: 3136
- hash: "73a019ef9057639d631cd99a431b3f3b"
- }
- Frame {
- msec: 3152
- hash: "c9414a2e655a90dfdcb6fb288b4ba0ca"
- }
- Frame {
- msec: 3168
- hash: "3f4c24f7ac89da982af22032309637fb"
- }
- Frame {
- msec: 3184
- hash: "a50e6ada8f73a257657f4348ceaffcfd"
- }
- Frame {
- msec: 3200
- hash: "a67bf40d09259bbd079c12ae4f49150f"
- }
- Frame {
- msec: 3216
- hash: "a2fc512b7c234a9d0b2c1a83387a8a46"
- }
- Frame {
- msec: 3232
- hash: "85090683ce9a3c9833b1cb0b3df076ee"
- }
- Frame {
- msec: 3248
- hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
- }
- Frame {
- msec: 3264
- hash: "2473eb11f7b65a784a2b166114026488"
- }
- Frame {
- msec: 3280
- hash: "4865c30dc45fbf5ca82047b77eca0912"
- }
- Frame {
- msec: 3296
- hash: "54de88bca395449fbaea2c090c7a5d91"
- }
- Frame {
- msec: 3312
- hash: "833f9295cf9a34934f001eac48551b59"
- }
- Frame {
- msec: 3328
- hash: "5bf565f57ababa7380faeee94add91ca"
- }
- Frame {
- msec: 3344
- hash: "6325578867f1eb3b2d47ed40b017b571"
- }
- Frame {
- msec: 3360
- hash: "046a6114176b3a3206b7a2acd6e30b41"
- }
- Frame {
- msec: 3376
- hash: "f8d4120a17f28c2d1d9c4be959098058"
- }
- Frame {
- msec: 3392
- hash: "71356d2e48aad2900784ea6bc1a3d908"
- }
- Frame {
- msec: 3408
- hash: "b84ad460fb81fdc4049abe8f3ff180bb"
- }
- Frame {
- msec: 3424
- hash: "0354239f5eaea23474d9f81385392a8a"
- }
- Frame {
- msec: 3440
- hash: "8ef0eef3393e07ae7605c865a95edc30"
- }
- Frame {
- msec: 3456
- hash: "5b8b384cc8e3faf4310015e19b3eb487"
- }
- Frame {
- msec: 3472
- hash: "77c18ac7dfff2a4e516915e3e3df0717"
- }
- Frame {
- msec: 3488
- hash: "c1d3264384c26345eb8100de829309ca"
- }
- Frame {
- msec: 3504
- hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
- }
- Frame {
- msec: 3520
- hash: "f619097356671f6eb54d3b1c481e709d"
- }
- Frame {
- msec: 3536
- hash: "e56e3a90da446e0c482cb93717f6aacc"
- }
- Frame {
- msec: 3552
- hash: "aa94ebdbb4b8423aff28c95daff0baf5"
- }
- Frame {
- msec: 3568
- hash: "e1744d9cacd1a2c96af4cfdd5c486995"
- }
- Frame {
- msec: 3584
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3600
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3616
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3632
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3648
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3664
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3680
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3696
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3712
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3728
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3744
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3760
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3776
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3792
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3808
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3824
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3840
- image: "itemlist.3.png"
- }
- Frame {
- msec: 3856
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3872
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3888
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3904
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3920
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3936
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3952
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3968
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3984
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4000
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4016
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4032
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4048
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4064
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4080
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4096
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 31; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4112
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 32; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4128
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 33; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 36; y: 135
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4144
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 40; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4160
- hash: "c2c9c284b185a89faf4ddb5a7867f449"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 64; y: 130
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4176
- hash: "de1c18aeda5d2fbd6dad4554c78617bd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 86; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4192
- hash: "a67bf40d09259bbd079c12ae4f49150f"
- }
- Frame {
- msec: 4208
- hash: "94514668dafbe41c5890a578efd6dea4"
- }
- Frame {
- msec: 4224
- hash: "2e97a74eb9ddb1c9613c89e2d78db018"
- }
- Frame {
- msec: 4240
- hash: "4b5368f0d86bffeb6bd31b58aec88650"
- }
- Frame {
- msec: 4256
- hash: "b459bde7bb4ce51e6ecdab58f64fcbb9"
- }
- Frame {
- msec: 4272
- hash: "7bac8cc3ec64c9ad1c0da282e38c953e"
- }
- Frame {
- msec: 4288
- hash: "a73a58c3d7a757547740a2a161f4c756"
- }
- Frame {
- msec: 4304
- hash: "b35edcb1fa3568a3e770ab2364b82e75"
- }
- Frame {
- msec: 4320
- hash: "d6c863ef57c5e5cb04cdac72f920db0b"
- }
- Frame {
- msec: 4336
- hash: "0db5e4588ff851918b07796f0cf07382"
- }
- Frame {
- msec: 4352
- hash: "71ec8c363ca6a6f7556afb70faccffe6"
- }
- Frame {
- msec: 4368
- hash: "18d026e9c965ada1db67c643576d2a80"
- }
- Frame {
- msec: 4384
- hash: "69f71c22dff981a4da8ec1edcf90e79f"
- }
- Frame {
- msec: 4400
- hash: "680460f5e4d9e649931601041af046b2"
- }
- Frame {
- msec: 4416
- hash: "3028763fd15de2607b20b1331b904a4a"
- }
- Frame {
- msec: 4432
- hash: "333eb60e217fe1ea7469eab52ac461f1"
- }
- Frame {
- msec: 4448
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
- }
- Frame {
- msec: 4464
- hash: "3445df9b41a0a3e74738cbf328ab7d5c"
- }
- Frame {
- msec: 4480
- hash: "bd2c072558479e9de7a97207e58cc57f"
- }
- Frame {
- msec: 4496
- hash: "3d34b0b24a30eda93377dcb4585afed8"
- }
- Frame {
- msec: 4512
- hash: "d3045703863b0c5a327b9355c23d69f2"
- }
- Frame {
- msec: 4528
- hash: "2f2eb55f693415b840a317211b250e9f"
- }
- Frame {
- msec: 4544
- hash: "791b9ca7d47a3343474c30a35e336d4b"
- }
- Frame {
- msec: 4560
- hash: "73a0c02ebad6d3d5f939d9a00dd898bf"
- }
- Frame {
- msec: 4576
- hash: "d5c11135d586711b12f236430a2c2795"
- }
- Frame {
- msec: 4592
- hash: "34f9ea214fe714ff4e994f715ea6ea39"
- }
- Frame {
- msec: 4608
- hash: "8e49afa00983b156b818533923fb6edd"
- }
- Frame {
- msec: 4624
- hash: "e7e7bef17cee92eca9191fd734d7a577"
- }
- Frame {
- msec: 4640
- hash: "e407f6ed7cb3c130365ab5515d6308c0"
- }
- Frame {
- msec: 4656
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
- }
- Frame {
- msec: 4672
- hash: "0ad7411316031e22034c14e81ca3a806"
- }
- Frame {
- msec: 4688
- hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7"
- }
- Frame {
- msec: 4704
- hash: "32bef6f5005ad94e29ff59165958fbdc"
- }
- Frame {
- msec: 4720
- hash: "87758dd311f91193bf1e3536c2f58525"
- }
- Frame {
- msec: 4736
- hash: "015be92a4ff4e735fcc3cbc7a8b9d763"
- }
- Frame {
- msec: 4752
- hash: "d4c34ed49317c6692d71681fcd9842b6"
- }
- Frame {
- msec: 4768
- hash: "abaa235bb946a8abaddd52981d632c2d"
- }
- Frame {
- msec: 4784
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4800
- image: "itemlist.4.png"
- }
- Frame {
- msec: 4816
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4832
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4848
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4864
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4880
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4896
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4912
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4928
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4944
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4960
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4976
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4992
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5008
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5024
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5040
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5056
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5072
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5088
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5104
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5120
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5136
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5152
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5168
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5184
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5200
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5216
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5232
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 17; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5248
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 19; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 21; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5264
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 24; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 28; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "95b380c9ab6f8db7b822faf023d94546"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 35; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 44; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "bb79e53556698c62ec30c75be9f6b7d7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 70; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 96; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 96; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "285cc2f0df1f59f25a0135560ab6edf2"
- }
- Frame {
- msec: 5328
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
- }
- Frame {
- msec: 5344
- hash: "eb555741ab128a50de5a18a454f2e639"
- }
- Frame {
- msec: 5360
- hash: "5dbe6cf898c1e37fcaacecfcf57b2194"
- }
- Frame {
- msec: 5376
- hash: "e7795610115593e78bb32f7bcc0ae2eb"
- }
- Frame {
- msec: 5392
- hash: "20e76f0eb4ec5f691999faf8ad313370"
- }
- Frame {
- msec: 5408
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
- }
- Frame {
- msec: 5424
- hash: "e7a3a21feed244c5b1c710a9254c15f0"
- }
- Frame {
- msec: 5440
- hash: "5a4b1aca24f121d1373646e9d80b86fd"
- }
- Frame {
- msec: 5456
- hash: "331d2ec7021655c86aa64e47718a1088"
- }
- Frame {
- msec: 5472
- hash: "92096bc872e7395aa5b75c44646a0b60"
- }
- Frame {
- msec: 5488
- hash: "0d9aa6cee4d21488cbb5153f8f3ed593"
- }
- Frame {
- msec: 5504
- hash: "c1b943d43701605563fffffcb75f9fa7"
- }
- Frame {
- msec: 5520
- hash: "1b680025d5ad1ddd8f8d5f570ba73e71"
- }
- Frame {
- msec: 5536
- hash: "5539a3b9f60ea747c10ed8328b467cbf"
- }
- Frame {
- msec: 5552
- hash: "0a1317bcb606cd3488c5b14ee5d96585"
- }
- Frame {
- msec: 5568
- hash: "8844af68b11db7d92c69804c7371a746"
- }
- Frame {
- msec: 5584
- hash: "28d7fd127739c6e3b8488651b725c802"
- }
- Frame {
- msec: 5600
- hash: "0cf1a7d958a96aa2768995dddc5ccc09"
- }
- Frame {
- msec: 5616
- hash: "64b902fe7ab4d89ef0c7b760974e3488"
- }
- Frame {
- msec: 5632
- hash: "aba11c597eba550fc1eaddbf554057f6"
- }
- Frame {
- msec: 5648
- hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5"
- }
- Frame {
- msec: 5664
- hash: "0ba8b582234d9f0c198c0c9e18e1cb02"
- }
- Frame {
- msec: 5680
- hash: "f66eaf2b5c3529987c0d9d005351ed73"
- }
- Frame {
- msec: 5696
- hash: "75b0bb720fa4c77da3783b3ff31c2fae"
- }
- Frame {
- msec: 5712
- hash: "345b235bb7f13409378e5c0c370f2a41"
- }
- Frame {
- msec: 5728
- hash: "83b7e902dce4e0fdc4ef5d629188c23c"
- }
- Frame {
- msec: 5744
- hash: "04b9041c6f10969889d92e94785c7e88"
- }
- Frame {
- msec: 5760
- image: "itemlist.5.png"
- }
- Frame {
- msec: 5776
- hash: "4f3a902addc34ecdaf390e2427cc52e7"
- }
- Frame {
- msec: 5792
- hash: "68d443f16c16821ffc9ca68b17c76034"
- }
- Frame {
- msec: 5808
- hash: "9d25adc77befa761ee376a9b43595b5e"
- }
- Frame {
- msec: 5824
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
- }
- Frame {
- msec: 5840
- hash: "d5268cd58c222451d48038e715e83802"
- }
- Frame {
- msec: 5856
- hash: "f37d461541a8ec7a4161b18748de6aea"
- }
- Frame {
- msec: 5872
- hash: "805319ac7ca842feb3649e92f8b5b72f"
- }
- Frame {
- msec: 5888
- hash: "73124472a05080891d4948d8ca273f8c"
- }
- Frame {
- msec: 5904
- hash: "b6e433a23282a50db2e165a2447ba3f6"
- }
- Frame {
- msec: 5920
- hash: "fd8d3f5688b1806998c6087e18c6c730"
- }
- Frame {
- msec: 5936
- hash: "f132dd459950ef2d18aa93ca950d0692"
- }
- Frame {
- msec: 5952
- hash: "ade5beb259b5277c333ca806fc9bdbec"
- }
- Frame {
- msec: 5968
- hash: "ade5beb259b5277c333ca806fc9bdbec"
- }
- Frame {
- msec: 5984
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6000
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6016
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6032
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6048
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6064
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6080
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6096
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6112
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6128
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6144
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6160
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6176
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6192
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6208
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6224
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6240
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6256
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6272
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6288
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6304
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6320
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6336
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6352
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6368
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6384
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6400
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6416
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6432
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6448
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6464
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6480
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6496
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6512
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6528
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6544
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6560
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6576
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6592
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6608
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6624
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6640
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6656
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6672
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6688
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6704
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6720
- image: "itemlist.6.png"
- }
- Frame {
- msec: 6736
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6752
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6768
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6784
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6800
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6816
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6832
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6848
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6864
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6880
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6896
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6912
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6928
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6944
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6960
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6976
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6992
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7008
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7024
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7040
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7056
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7072
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7088
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7104
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7120
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7136
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7152
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7168
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7184
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7200
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7216
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7232
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7248
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7264
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7280
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7296
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7312
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
deleted file mode 100644
index dcfca3f794..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
deleted file mode 100644
index 7cc40470bb..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
deleted file mode 100644
index a97f4ad519..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
deleted file mode 100644
index 7a8c6bd52c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
deleted file mode 100644
index ae47356225..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
deleted file mode 100644
index b3a72609a2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png
deleted file mode 100644
index 9877b92f21..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png
deleted file mode 100644
index 603bd24577..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png
deleted file mode 100644
index 5fdfbb896e..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png
deleted file mode 100644
index 9ccf9b051e..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png
deleted file mode 100644
index 6b40e1bfb9..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png
deleted file mode 100644
index 2fda36d6b5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml
deleted file mode 100644
index f47179d977..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml
+++ /dev/null
@@ -1,3079 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 32
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 48
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 64
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 80
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 96
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 112
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 128
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 144
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 160
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 176
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 192
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 208
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 224
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 240
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 256
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 272
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 288
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 304
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 320
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 336
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 352
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 368
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 384
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 400
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 416
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 432
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 592
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 624
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 640
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 656
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 672
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 688
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 704
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 720
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 736
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 752
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 768
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 784
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 800
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 816
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 832
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 848
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 864
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 880
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 896
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 912
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 928
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 944
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 960
- image: "listview.0.png"
- }
- Frame {
- msec: 976
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 992
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1008
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1024
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1040
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1056
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1072
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1088
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1104
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1120
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1136
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1152
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1168
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1184
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1200
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1216
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1344
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1360
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1376
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1392
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1408
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1424
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1440
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1456
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1472
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1488
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1504
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1520
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1536
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1552
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1568
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1584
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1600
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1616
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1632
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1648
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1664
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1680
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1696
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1712
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1728
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1744
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1760
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1776
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1792
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1808
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1824
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1840
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1856
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1872
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1888
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1904
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1920
- image: "listview.1.png"
- }
- Frame {
- msec: 1936
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1952
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1968
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2016
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2032
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2048
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2064
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2080
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2096
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2112
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2128
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2144
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2160
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2176
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2192
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2208
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2224
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2240
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2256
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2272
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2288
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2304
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2320
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2336
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2352
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2368
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2384
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2400
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2416
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2432
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2592
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 553; y: 267
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2624
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 554; y: 267
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 555; y: 266
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2640
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 556; y: 265
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 558; y: 260
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2656
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 560; y: 256
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2672
- hash: "c315e184c4dcb11d7e9fd4509a8b6a1f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 562; y: 250
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 566; y: 234
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2688
- hash: "aeef1cacca9518408519b670443e396f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 568; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2704
- hash: "621626927f83bf7b36b78f5ca7ed4ed0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 572; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 572; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2720
- hash: "b2aca965b745e98365195c52b9dd9a2c"
- }
- Frame {
- msec: 2736
- hash: "4cc8c162afcc45c79afd8230893d4ddd"
- }
- Frame {
- msec: 2752
- hash: "b9c0815086393878ad00566db7a3c577"
- }
- Frame {
- msec: 2768
- hash: "23cbc15fce97f966c24e3ec626e01960"
- }
- Frame {
- msec: 2784
- hash: "3a7ce897b47ba39e63be31a020de6f3d"
- }
- Frame {
- msec: 2800
- hash: "2a8a32cd27fad2c57c9eb518c7b3b3ca"
- }
- Frame {
- msec: 2816
- hash: "96d676ad58119430b440a5f0a2215f26"
- }
- Frame {
- msec: 2832
- hash: "5f9cd251615ee6a98470a7b6098f7890"
- }
- Frame {
- msec: 2848
- hash: "c9b1c073cbfbf1c353685b3f38baa675"
- }
- Frame {
- msec: 2864
- hash: "cf5bfbfe8904ea40b796d2b33d5cc363"
- }
- Frame {
- msec: 2880
- image: "listview.2.png"
- }
- Frame {
- msec: 2896
- hash: "c75c3342b476f75fc0c5f56a374da13e"
- }
- Frame {
- msec: 2912
- hash: "0dfcd15d21b7e949b56bc69d881c52f5"
- }
- Frame {
- msec: 2928
- hash: "73b7352bb11d29cbf64b6b594e761e42"
- }
- Frame {
- msec: 2944
- hash: "876361c2fc18c2236c1dffd36f517f44"
- }
- Frame {
- msec: 2960
- hash: "0dfaf61e3a86ee056a5d76cf6f7994b2"
- }
- Frame {
- msec: 2976
- hash: "391995cfc5d8d3808b30d74ba5ea3188"
- }
- Frame {
- msec: 2992
- hash: "6fd4f14c16a8870355fa190c94e4be2d"
- }
- Frame {
- msec: 3008
- hash: "0aac04c8092505d934220e61c7959512"
- }
- Frame {
- msec: 3024
- hash: "6cb0fbe22fcd60b5ed6385e49522b32e"
- }
- Frame {
- msec: 3040
- hash: "2eb7fd1a773e32ae94284cf57efaaff2"
- }
- Frame {
- msec: 3056
- hash: "e143ed5eeb94b35ef97e965f34d45e4d"
- }
- Frame {
- msec: 3072
- hash: "529e85f2cd48c1f0d056682b8350445b"
- }
- Frame {
- msec: 3088
- hash: "d74bded985c00ecd192ff8fdce708450"
- }
- Frame {
- msec: 3104
- hash: "f71568b2173f72c4433a019775923c02"
- }
- Frame {
- msec: 3120
- hash: "1185a1c936ac08633c14d39ca9c4f5e9"
- }
- Frame {
- msec: 3136
- hash: "e641720bf75f1e4f0a8471f3a8b35094"
- }
- Frame {
- msec: 3152
- hash: "cecc41fb42abb95505c094829fd415bf"
- }
- Frame {
- msec: 3168
- hash: "7ad89090beb9de3cd7c5a5a03fca900d"
- }
- Frame {
- msec: 3184
- hash: "2a98fe4406367d4e286d8932d6a21318"
- }
- Frame {
- msec: 3200
- hash: "9aad024b2fc25ce886ccaa4ac106b1d8"
- }
- Frame {
- msec: 3216
- hash: "3c4a787a4d590efd2e72706e40df7b6d"
- }
- Frame {
- msec: 3232
- hash: "1135e06c2981bdaed13c13400e178dc3"
- }
- Frame {
- msec: 3248
- hash: "1fbceedf1c20f2aa3f05be36126280e2"
- }
- Frame {
- msec: 3264
- hash: "5d1ec83f43b649c732cc3f7815100428"
- }
- Frame {
- msec: 3280
- hash: "27501f6b6adccfdb77a5228611e2a95a"
- }
- Frame {
- msec: 3296
- hash: "218dc244352c14467f2b2a39d78a1bc7"
- }
- Frame {
- msec: 3312
- hash: "33a998563d2c053e375f619b7a75a224"
- }
- Frame {
- msec: 3328
- hash: "02d34b79e25367e6d0dc1765cab12353"
- }
- Frame {
- msec: 3344
- hash: "2698cf68138aa7d292167bcc85f60b74"
- }
- Frame {
- msec: 3360
- hash: "0b33e929b420596ff1dce2eeef8480db"
- }
- Frame {
- msec: 3376
- hash: "d8ec307a85cecaacaa908ceb34d5db5b"
- }
- Frame {
- msec: 3392
- hash: "4afe1df3e802b41d1b89b5fab4e35190"
- }
- Frame {
- msec: 3408
- hash: "e8f484ed8d2a6745ee87ac9544281d55"
- }
- Frame {
- msec: 3424
- hash: "6df053920e87d7e6e3ec0368b4b14c25"
- }
- Frame {
- msec: 3440
- hash: "6e94791acce321417a37132821c0260d"
- }
- Frame {
- msec: 3456
- hash: "fea3e31cbf3078615f57c934197dac35"
- }
- Frame {
- msec: 3472
- hash: "e8d15890a8bd95db39889d19f046901b"
- }
- Frame {
- msec: 3488
- hash: "038b422b154dfef2d955b833892c581e"
- }
- Frame {
- msec: 3504
- hash: "01180b3d9b504ca2814382eadaf3a4e0"
- }
- Frame {
- msec: 3520
- hash: "869a0aa0d67043822c65383e0f3264d4"
- }
- Frame {
- msec: 3536
- hash: "43785b1214510c10b65018a9d68a93b1"
- }
- Frame {
- msec: 3552
- hash: "95e6ebc35c2fb128b6e6ac0743268523"
- }
- Frame {
- msec: 3568
- hash: "f8c22a6ca3169de4d29b3b0e2908f581"
- }
- Frame {
- msec: 3584
- hash: "6baf16c321847d269718bcb3468aeeb2"
- }
- Frame {
- msec: 3600
- hash: "30804b5eb2a6d99116475cbdc1a9c043"
- }
- Frame {
- msec: 3616
- hash: "c892c17ec947a910b74f5b8704405e9f"
- }
- Frame {
- msec: 3632
- hash: "696029b77512943001c9eba64191e633"
- }
- Frame {
- msec: 3648
- hash: "4c26bb0ca28d74a2bb79d0bfc8127361"
- }
- Frame {
- msec: 3664
- hash: "6e8c50cc14c9afe73b4baf09a6a8f1a4"
- }
- Frame {
- msec: 3680
- hash: "fd20e4259b44357c93f22f35c698fe1b"
- }
- Frame {
- msec: 3696
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3712
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3728
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3744
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3760
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3776
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3792
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3808
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3824
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3840
- image: "listview.3.png"
- }
- Frame {
- msec: 3856
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3872
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3888
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3904
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3920
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3936
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3952
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3968
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3984
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4000
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4016
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4032
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4048
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4064
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4080
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4096
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4112
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4128
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4144
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 521; y: 24
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4160
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 25
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4176
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 32
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 37
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4192
- hash: "a5df688148c264de1d376c9b87ddfa6b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 46
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4208
- hash: "a4e2c1878b0afce0ee1eebd63e9c951a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 66
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4224
- hash: "2f9a79278d492790ef86a09c77e95ff4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 531; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 531; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4240
- hash: "5b5ce7206b26528157c426f4e1e3e0a8"
- }
- Frame {
- msec: 4256
- hash: "65a1e5f81ab89b163aed46b984cca45e"
- }
- Frame {
- msec: 4272
- hash: "e28253ad5a2415251b68bcda1d7d4bd0"
- }
- Frame {
- msec: 4288
- hash: "71aae5abb4a9e9077053ea21dd3ec315"
- }
- Frame {
- msec: 4304
- hash: "33fcea38fc3b328b3294f9ac2a26aa1a"
- }
- Frame {
- msec: 4320
- hash: "6299eb1d87f371966307668b92de6a0b"
- }
- Frame {
- msec: 4336
- hash: "4f66d8c7cb6971d0fc24089d123c547b"
- }
- Frame {
- msec: 4352
- hash: "d9906d61b31fabf968290ebcd6688f34"
- }
- Frame {
- msec: 4368
- hash: "5a1945993ff8096ba6b933d45586044a"
- }
- Frame {
- msec: 4384
- hash: "331535e54da9bbdbc2fbf2b244ad0199"
- }
- Frame {
- msec: 4400
- hash: "4dc39de0c54f6e0b77f94f6ae6c345ec"
- }
- Frame {
- msec: 4416
- hash: "ec309a298ce246c13eb666488eb75016"
- }
- Frame {
- msec: 4432
- hash: "a133819f8adc6265eb0e438261c869e3"
- }
- Frame {
- msec: 4448
- hash: "da4d64fd6b3ae7d49ee5c5c8d0117a37"
- }
- Frame {
- msec: 4464
- hash: "620dd1c3fc41ce657eac9d1a5b765fd4"
- }
- Frame {
- msec: 4480
- hash: "ff1c370bd1bf75a98ae7125e7dd5a9db"
- }
- Frame {
- msec: 4496
- hash: "59c6e4297109b5cc7c197749867dddae"
- }
- Frame {
- msec: 4512
- hash: "91b1719e86529d0c35a53a2d0a095dd6"
- }
- Frame {
- msec: 4528
- hash: "2994663d35c9eb453a27c1a1fa9aeeb8"
- }
- Frame {
- msec: 4544
- hash: "ae4ec37b9f6a00b3c9139e5cfe13d32e"
- }
- Frame {
- msec: 4560
- hash: "a98340236d1b65f47e88684168c1429d"
- }
- Frame {
- msec: 4576
- hash: "34848b483ea6a2bd412e29d26beb3ab0"
- }
- Frame {
- msec: 4592
- hash: "dd9bae0e2fca84b265d8cb59686ff88d"
- }
- Frame {
- msec: 4608
- hash: "18b6ef6f5913b0612b76e7b2e25073dd"
- }
- Frame {
- msec: 4624
- hash: "9398aab9478279aed1bc40c9378f8da4"
- }
- Frame {
- msec: 4640
- hash: "a297a304c12102f23bd1e0f0207e0df9"
- }
- Frame {
- msec: 4656
- hash: "091db9138cd6ae801ad857105a83c8f9"
- }
- Frame {
- msec: 4672
- hash: "253938ca4a4f13433ddd502eb94cb7cd"
- }
- Frame {
- msec: 4688
- hash: "6002df1793d290e4e31ee0c91c37bbe6"
- }
- Frame {
- msec: 4704
- hash: "212476fa1c3a52fb8eba03ec3aecdcd8"
- }
- Frame {
- msec: 4720
- hash: "80d4d8434d4e96a2bc23f5ed060d6ddc"
- }
- Frame {
- msec: 4736
- hash: "2d4add725f31a04558635ce4b73a758a"
- }
- Frame {
- msec: 4752
- hash: "57c06022ec1e502c4f49f43063c433e7"
- }
- Frame {
- msec: 4768
- hash: "8393e97990993f9d5f68ea65f8e4a2db"
- }
- Frame {
- msec: 4784
- hash: "9a1fcd96dffaf5c79ecc7f9427e02499"
- }
- Frame {
- msec: 4800
- image: "listview.4.png"
- }
- Frame {
- msec: 4816
- hash: "5ae722cf541e3453e73bbee57dc379e9"
- }
- Frame {
- msec: 4832
- hash: "fc7326c2e2e56d9c3036e8dfc2ea77a8"
- }
- Frame {
- msec: 4848
- hash: "f22a2a68cea158f333b0457025d75490"
- }
- Frame {
- msec: 4864
- hash: "d684c8aa9b835779080f170cafead40f"
- }
- Frame {
- msec: 4880
- hash: "dd451e5e421f929d015981bc7aeb8c66"
- }
- Frame {
- msec: 4896
- hash: "d066f228295db7f46520495167d3e946"
- }
- Frame {
- msec: 4912
- hash: "ebf640a457e3498bade3220aafa70331"
- }
- Frame {
- msec: 4928
- hash: "190f5b1f3ce9d200790c34c50bcc62c5"
- }
- Frame {
- msec: 4944
- hash: "9d4ad865246eb008afa40740b5c9a208"
- }
- Frame {
- msec: 4960
- hash: "81c8b2c0b4f9e74f24d328a1d9b40a9f"
- }
- Frame {
- msec: 4976
- hash: "24acc300307e71bee79bce8de76f56cb"
- }
- Frame {
- msec: 4992
- hash: "1f9d31f94cfce6f868bfcc8a104d2465"
- }
- Frame {
- msec: 5008
- hash: "7a3cab008dcb7a893ae30797b33df6f2"
- }
- Frame {
- msec: 5024
- hash: "38d561a2950434e59513439c7f1120ea"
- }
- Frame {
- msec: 5040
- hash: "8d34131faa15bc126bd4d9ef3be39ef5"
- }
- Frame {
- msec: 5056
- hash: "85d57ef15791b56deb537795dd87911e"
- }
- Frame {
- msec: 5072
- hash: "71e932169915a6c8c2cef0b22febf316"
- }
- Frame {
- msec: 5088
- hash: "8b3452981963aeebadc9ac2013150263"
- }
- Frame {
- msec: 5104
- hash: "a3fb8abecfeb48ba1cd1fd8f40896fa0"
- }
- Frame {
- msec: 5120
- hash: "f53ab533f6a58ae45139f3da4bf8ab4e"
- }
- Frame {
- msec: 5136
- hash: "9ec7012404f3c1c7795810dcee5acc3b"
- }
- Frame {
- msec: 5152
- hash: "99ca43bab532dd5d7566e596c65053ce"
- }
- Frame {
- msec: 5168
- hash: "0af83ad2416821cc230cd2856d1a3e39"
- }
- Frame {
- msec: 5184
- hash: "86fa23ddf2005bbf35238ae04ae554ac"
- }
- Frame {
- msec: 5200
- hash: "bb52a748f1d85dde410cfa4f24e3ed20"
- }
- Frame {
- msec: 5216
- hash: "898b96bc5ee9a3ac61764e5cd9af8cfb"
- }
- Frame {
- msec: 5232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5344
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5360
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5376
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5392
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5408
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5424
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5440
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5456
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5472
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5488
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5504
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5520
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5536
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5552
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5568
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5584
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5600
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5616
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5632
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5648
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5664
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5680
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5696
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5712
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5728
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5744
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5760
- image: "listview.5.png"
- }
- Frame {
- msec: 5776
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5792
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5808
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5824
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5840
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5856
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5872
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5888
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5904
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5920
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5936
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5952
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5968
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 111; y: 230
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 227
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 223
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 210
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "0076b55d3da4ca365688b6a2c984103f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 205
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "db846ad8e3200ca1fce36a38dc7beab8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "3cb6b25725b4285f9c096d595224c5ca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 180
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "1832e12fdf3b464b02b296e727b33694"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 173
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "6d18d2b5f65cbba4915d0725d24b40f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 109; y: 158
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 140
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "79bc7afc6b1aa5f8904b3e6d5d4a9389"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "4436f2d15304c839aacec486c1fd6d96"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "c3bffc7c95893cf9bbd8596208b7f657"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 105
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "04231c2fdc02729aa34ed4e403dd373b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "392d75c4b372825e78366eb63a618170"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 83
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "7f91f7bdb0cb62d600ac4aa573681fe3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 79
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 76
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 72
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 68
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 64
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "c22da9ce54d04f51fb55da755753a509"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 61
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "59dbd5216847a62f60a1d0701a15bb62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 57
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 53
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "bbfc902db6e6ca253afb1c90306b2a63"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 47
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 106; y: 47
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6288
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6304
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6320
- hash: "2a1a1f9239a6ccb308e51796f9b0bb89"
- }
- Frame {
- msec: 6336
- hash: "3c1b44201616b8271023bf05a3f3f0f7"
- }
- Frame {
- msec: 6352
- hash: "87afcef49db8b2b547e85e834f8ec304"
- }
- Frame {
- msec: 6368
- hash: "290081b4b1272ef09ec9964c128e61b5"
- }
- Frame {
- msec: 6384
- hash: "19bb3b23ee4b14a5f0a313106ef7c8c1"
- }
- Frame {
- msec: 6400
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Frame {
- msec: 6416
- hash: "832d2aefbcaf776f35039be527d367c5"
- }
- Frame {
- msec: 6432
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Frame {
- msec: 6448
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6464
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6480
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6496
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6512
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6528
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6544
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6560
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6576
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6592
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6608
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6624
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6640
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6656
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6672
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6688
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6704
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6720
- image: "listview.6.png"
- }
- Frame {
- msec: 6736
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6752
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6768
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6784
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6800
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6816
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6832
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6848
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6864
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6880
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6896
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6912
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6928
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6944
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6960
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6976
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6992
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7008
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7024
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7040
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7056
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7072
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7088
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7104
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7120
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7136
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7152
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7168
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7184
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7200
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7216
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7232
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7248
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7264
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7280
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7296
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 519; y: 276
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 275
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 274
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 273
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 272
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 271
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 268
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 266
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 265
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "9047f597b9e59ca652c172338bed6ef9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 262
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "87476f78daecd6bb49e8d6e673d28100"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 260
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "6bfd895c6b7d97e4102eb26608cdfeca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 254
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "e4c2b75beaee54a5781a5acbeb37ea64"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 249
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "d5e816768e9c3db0631416bd86b1b461"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 243
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "df6c7252ebb51e7447396b640e1c6ead"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 237
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "5f4db5386dc76b9f2dac47618c733dee"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 231
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "534d1d16d8321996969b54875ec5f1e0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 225
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "5263016e53327df1972498b55a60c0ed"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 219
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "6787a5a16d2a61643bb1435f6488ada6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 215
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "1feabcd683590c3d28d899167e6278b3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 208
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "c0495d6083b2e4ddd2b1dca2f231529c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 520; y: 202
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "cb302493a17c1806dfcdf002c44e7acd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 196
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "f3822b79b678532ce7f826952636be90"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 189
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "6e30eed182c38be110ba9c7e95b223be"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 185
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "9e3ad0331c0c041b9a5747a1d44a43fe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 177
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "791e6abf9dae670770c2429ee9f1ad71"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 169
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "listview.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 160
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "d3ae366fb8212cb987e23150802c88e3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 156
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "b87708e19d7e8b64fe1ab50ec1723975"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 147
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "512678e45cdd8d48e10b08ee020afe8e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 144
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "211aa70e813819d476996b3396e9e5a0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "f16eaa360604be84ce61364ad9733b52"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 130
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "d3af36dfb187d08abe1458f186a935a2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7792
- hash: "9d0a0ba1deb7c4a4a8838e5e6a27f2f6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "69aac14f4c137e66724ca33f00a86676"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7824
- hash: "893d56e2a2ca257fae9f0c6c0629903d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "b9f734e57a72e33973740a59776948d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 106
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7856
- hash: "e4b0f3f6a6785d7a183e4a36c5803301"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7872
- hash: "99ee1e8803c05e546a721b0c9ee39499"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "96e7da2f895500a786ed36cb295e9003"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "cd369fc5dc31814208e56cf7cd0decea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "5fee72994b65a45b4900a3073f86a3e1"
- }
- Frame {
- msec: 7936
- hash: "9a2f8a65d842b8f92998e6411f7cd53c"
- }
- Frame {
- msec: 7952
- hash: "2848d69017ce71ae101ccdfa7c67f933"
- }
- Frame {
- msec: 7968
- hash: "6568aa88e81f988f65da435df7166167"
- }
- Frame {
- msec: 7984
- hash: "d5f15ee08a2d7667786757a378a7a7f4"
- }
- Frame {
- msec: 8000
- hash: "9b566bd02a561b32d1a4c1ec99c2e2c3"
- }
- Frame {
- msec: 8016
- hash: "580419e1c9e91046547d913f6b8790a4"
- }
- Frame {
- msec: 8032
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8048
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8064
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 521; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8096
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8112
- hash: "83b91a371d682a501bc3a3fceabe4f8c"
- }
- Frame {
- msec: 8128
- hash: "798b1dbfa0cce362213f426e2c60ac0e"
- }
- Frame {
- msec: 8144
- hash: "d71b6a693c430a618c23413cb65bb320"
- }
- Frame {
- msec: 8160
- hash: "2baae394390da39447a67151bc503d65"
- }
- Frame {
- msec: 8176
- hash: "06688b05c61a7b862d39534207a8adab"
- }
- Frame {
- msec: 8192
- hash: "a1d3042e16709817906dcdc673ee52c7"
- }
- Frame {
- msec: 8208
- hash: "236dd41feac1b1a8a4bd7911bb184da2"
- }
- Frame {
- msec: 8224
- hash: "f3ec821bba1d32e90bdab0e85c07d7d8"
- }
- Frame {
- msec: 8240
- hash: "e328c35adf7ffc3d7e3af97e798ec8a5"
- }
- Frame {
- msec: 8256
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8272
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8288
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8304
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8320
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8336
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8352
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8368
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8384
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8400
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8416
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8432
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8448
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8464
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8480
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8496
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8512
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8528
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8544
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8560
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8576
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8592
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8608
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8624
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8640
- image: "listview.8.png"
- }
- Frame {
- msec: 8656
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8672
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8688
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8704
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8720
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8736
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8752
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8768
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8784
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8800
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8816
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8832
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8848
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8864
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8880
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8896
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8912
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8928
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8944
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8960
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8976
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8992
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9008
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9024
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9040
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9056
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9072
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9088
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9104
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9120
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9136
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9152
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9168
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9184
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9200
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9216
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9232
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9248
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9264
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9280
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9296
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9312
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9328
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9344
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9360
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9376
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9392
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9408
- hash: "1171be123a361d72859c25434573482c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml
deleted file mode 100644
index b291ea4766..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml
+++ /dev/null
@@ -1,159 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml
deleted file mode 100644
index e32e9e691c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml
+++ /dev/null
@@ -1,187 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 592
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 608
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 624
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 640
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 672
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 688
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml
deleted file mode 100644
index ed0c53bc70..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml
+++ /dev/null
@@ -1,147 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml
deleted file mode 100644
index a70b741c03..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml
+++ /dev/null
@@ -1,171 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 592
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 608
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 624
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
index 7aadf36853..6670ae5908 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
@@ -6,154 +6,78 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
index 5624d6b6af..283b44377b 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
@@ -6,182 +6,162 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 592
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 608
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 624
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 640
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 672
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 688
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
index 16a8329822..2ee835a379 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
@@ -6,142 +6,114 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
index 23cc2555b2..3bbf8369c2 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
@@ -6,166 +6,110 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
Frame {
msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 592
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 608
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 624
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ hash: "7b874555d744b10ed666dcb6fad79a19"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png
new file mode 100644
index 0000000000..d466434eab
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png
new file mode 100644
index 0000000000..45d9712932
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png
new file mode 100644
index 0000000000..3f05a5eb2d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png
new file mode 100644
index 0000000000..d466434eab
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png
new file mode 100644
index 0000000000..c9026763af
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png
new file mode 100644
index 0000000000..45d9712932
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml
new file mode 100644
index 0000000000..20ed077a89
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml
@@ -0,0 +1,2119 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 32
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 48
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 64
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 80
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 96
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 112
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 128
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 144
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 160
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 176
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 192
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 208
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 224
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 240
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 256
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 272
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 288
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 304
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 320
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 336
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 352
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 368
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 384
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 400
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 416
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 432
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 448
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 464
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 480
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 496
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 512
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 528
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 544
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 560
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 576
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 592
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 608
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 624
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 640
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 656
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 672
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 688
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 704
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 720
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 736
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 752
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 768
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 784
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 800
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 816
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 832
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 848
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 864
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 880
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 896
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 912
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 928
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 944
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 960
+ image: "enforcerange.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 992
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1008
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1024
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1040
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1056
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1072
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1088
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1104
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1120
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1136
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1152
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1168
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1184
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1200
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 77; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1216
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1232
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1248
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 156
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1264
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1280
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 75; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 74; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1296
+ hash: "c7667b5af9f2ee912abe5879266cb1e0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 131
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1312
+ hash: "1e762d6ffe1ceb53046d7953645d02d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1328
+ hash: "0d2b7130a84a8efac1cf4fe8a1768231"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1344
+ hash: "6ef2715c3fd26d50d26fb740afa6dece"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1360
+ hash: "f489b6f951281ff9a981ec046ca5b17d"
+ }
+ Frame {
+ msec: 1376
+ hash: "fd6e7d7db7c4571ee606269fb9680ed9"
+ }
+ Frame {
+ msec: 1392
+ hash: "398a238f59a2edf07870b624b914c81d"
+ }
+ Frame {
+ msec: 1408
+ hash: "fdce64faab7e7e31a229adda47924cd1"
+ }
+ Frame {
+ msec: 1424
+ hash: "8d474956331fdd0c35beb13a06b7c557"
+ }
+ Frame {
+ msec: 1440
+ hash: "f89fed6f7fa07a8320f07a1e68240a7e"
+ }
+ Frame {
+ msec: 1456
+ hash: "940b70f15082ff138579892bb6f20ce9"
+ }
+ Frame {
+ msec: 1472
+ hash: "35ab744ce2a91567dbbd769f9486f870"
+ }
+ Frame {
+ msec: 1488
+ hash: "6b2d32b8f1df871c2c014af8b5d87329"
+ }
+ Frame {
+ msec: 1504
+ hash: "edf3b33b80cca53999779555f9cd6162"
+ }
+ Frame {
+ msec: 1520
+ hash: "180f3cc4ea5ff5b6f9e8be0294732d4e"
+ }
+ Frame {
+ msec: 1536
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Frame {
+ msec: 1552
+ hash: "3bb1e8d69f171f09eb4c6f9914fc9576"
+ }
+ Frame {
+ msec: 1568
+ hash: "0501da09be444df6cee4b19617290317"
+ }
+ Frame {
+ msec: 1584
+ hash: "8ce1ac0163b0353167488aff2879e841"
+ }
+ Frame {
+ msec: 1600
+ hash: "18e53bf6337cf6590fc3c73c00469d8e"
+ }
+ Frame {
+ msec: 1616
+ hash: "0c31ede980d07069f4977d5753d00ddf"
+ }
+ Frame {
+ msec: 1632
+ hash: "0a854a54176c24f0ebbb6cb747dc0ab7"
+ }
+ Frame {
+ msec: 1648
+ hash: "8dba1ebca6f00b7a64a6982fb8c28c50"
+ }
+ Frame {
+ msec: 1664
+ hash: "8d273efc36ba722af4d044e6552c9dcb"
+ }
+ Frame {
+ msec: 1680
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 1696
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 1712
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 1728
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 1744
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 1760
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 1776
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 1792
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 1808
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 1824
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 1840
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 1856
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 1872
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 1888
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 1904
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 1920
+ image: "enforcerange.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 1952
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 1968
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 1984
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2000
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2016
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 2032
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 2048
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 2064
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 2080
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 2096
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 2112
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 2128
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 2144
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 2160
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 2176
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 2192
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 2208
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 2224
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 2240
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2256
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2272
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2288
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2304
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2320
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2336
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2352
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2368
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2384
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2400
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2416
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2432
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2448
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2464
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2480
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2496
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2512
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2528
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2544
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2560
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2576
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2592
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2608
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2624
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2640
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2656
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2672
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2688
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2704
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2720
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2736
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2752
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2768
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2784
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2800
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2816
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2832
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2848
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2864
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2880
+ image: "enforcerange.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2912
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2928
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2944
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2960
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2976
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2992
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3008
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3024
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 82; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3040
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3056
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 82; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3072
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 82; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3088
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3104
+ hash: "89016574205e00cf42723446d6a3437e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3120
+ hash: "e2db9b1ae5c4be51a548834a7776da1f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 87
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3136
+ hash: "fcfad57224192065782a77ad3398d0d1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3152
+ hash: "bae4fc0fc2d33008ebe827ece94af196"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 84; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 88; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3168
+ hash: "569581944bf18c8165f72c60bdbf1011"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 96; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3184
+ hash: "613ff94a26bfaa9a4dc94fcbf6c3eb57"
+ }
+ Frame {
+ msec: 3200
+ hash: "a63f8e6b194f900acb1b7a332f9fb9ae"
+ }
+ Frame {
+ msec: 3216
+ hash: "6c04761cc86d28112c16f692cda58ba4"
+ }
+ Frame {
+ msec: 3232
+ hash: "544275da3f7e2ccaedc8c521bf17f59b"
+ }
+ Frame {
+ msec: 3248
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3264
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3280
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3296
+ hash: "58f2b900bc335424fc70eaaeb23ceb56"
+ }
+ Frame {
+ msec: 3312
+ hash: "58f2b900bc335424fc70eaaeb23ceb56"
+ }
+ Frame {
+ msec: 3328
+ hash: "544275da3f7e2ccaedc8c521bf17f59b"
+ }
+ Frame {
+ msec: 3344
+ hash: "df9fef370c2f6ff300b20fc24b5b9e34"
+ }
+ Frame {
+ msec: 3360
+ hash: "0662898d246e5ff6981610d32e2b8375"
+ }
+ Frame {
+ msec: 3376
+ hash: "6c04761cc86d28112c16f692cda58ba4"
+ }
+ Frame {
+ msec: 3392
+ hash: "82b31c8e8794ce3a9a6a635ef93b29b3"
+ }
+ Frame {
+ msec: 3408
+ hash: "388658b5e03f3853e93173bd9501b77b"
+ }
+ Frame {
+ msec: 3424
+ hash: "cf1856e961e6b8277a82c03ace5ba864"
+ }
+ Frame {
+ msec: 3440
+ hash: "e1d022cc1b41098baffe49925b20678f"
+ }
+ Frame {
+ msec: 3456
+ hash: "a63f8e6b194f900acb1b7a332f9fb9ae"
+ }
+ Frame {
+ msec: 3472
+ hash: "044c3712a6a5f6a973defe85643c8d02"
+ }
+ Frame {
+ msec: 3488
+ hash: "044c3712a6a5f6a973defe85643c8d02"
+ }
+ Frame {
+ msec: 3504
+ hash: "e4fe2f1a81a4a4806f4155807f285a2d"
+ }
+ Frame {
+ msec: 3520
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3536
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3552
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3568
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3584
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3600
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3616
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3632
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3648
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3664
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3680
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3696
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3712
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3728
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3744
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3760
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3776
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3792
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3808
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3824
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3840
+ image: "enforcerange.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3872
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3888
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3904
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3920
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3936
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3952
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3968
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3984
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4000
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4016
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4032
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 105; y: 169
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4048
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 168
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 167
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4064
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 164
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 163
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4080
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 162
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 160
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4096
+ hash: "331164730fb7ccf37dc08ddc26c0e182"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 156
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4112
+ hash: "73e27ff972eefc421bc65897ad8b9a11"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4128
+ hash: "c5e903fd827f8f1ec060dcb9a925bf6d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 109; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4144
+ hash: "74d4357dff4d6e00c5ae9ea0c34f1010"
+ }
+ Frame {
+ msec: 4160
+ hash: "790274ee21ba257b84671a6fb19c142f"
+ }
+ Frame {
+ msec: 4176
+ hash: "65ccc26f20be484fefa8ea25a7daf825"
+ }
+ Frame {
+ msec: 4192
+ hash: "e435e2fbba7f0f6a65b9fecf07893eb0"
+ }
+ Frame {
+ msec: 4208
+ hash: "6a994a18a9331731d5fca50dce2b9cff"
+ }
+ Frame {
+ msec: 4224
+ hash: "9fc4405cddc06310215969a4583b2353"
+ }
+ Frame {
+ msec: 4240
+ hash: "0d2b7130a84a8efac1cf4fe8a1768231"
+ }
+ Frame {
+ msec: 4256
+ hash: "791db15db47090e1af299e5b32e53918"
+ }
+ Frame {
+ msec: 4272
+ hash: "0ec6cf7a6ed9a073d2ce8f9e534e2ee5"
+ }
+ Frame {
+ msec: 4288
+ hash: "c7b358f51a9500ca4958d266de5307e6"
+ }
+ Frame {
+ msec: 4304
+ hash: "d24d00e4cd1ea3aaacf202e2fdf1eaa0"
+ }
+ Frame {
+ msec: 4320
+ hash: "169f1a7a933d84071c449132a3c2745e"
+ }
+ Frame {
+ msec: 4336
+ hash: "b6bf9c15ed40d6e862f693155c884035"
+ }
+ Frame {
+ msec: 4352
+ hash: "8639955aa7a03f54d50d7e9051a4b997"
+ }
+ Frame {
+ msec: 4368
+ hash: "411bc9a9aedbfb75f3122eaea6be0c16"
+ }
+ Frame {
+ msec: 4384
+ hash: "827094da86716daf69386af2c8d4027a"
+ }
+ Frame {
+ msec: 4400
+ hash: "ddddd5457e4a54ca5e7415dc2c7eabe5"
+ }
+ Frame {
+ msec: 4416
+ hash: "632a5756af20083504fb1faaa019dd48"
+ }
+ Frame {
+ msec: 4432
+ hash: "0cc2901b1b25412f13865887a8c9d13e"
+ }
+ Frame {
+ msec: 4448
+ hash: "4c8a9473eb9843634340d70f8eab9487"
+ }
+ Frame {
+ msec: 4464
+ hash: "398a238f59a2edf07870b624b914c81d"
+ }
+ Frame {
+ msec: 4480
+ hash: "a7c282235e9166b900ea2ff68800a5f5"
+ }
+ Frame {
+ msec: 4496
+ hash: "bae4fc0fc2d33008ebe827ece94af196"
+ }
+ Frame {
+ msec: 4512
+ hash: "45e0670a2b4c18b847a3c7870539b962"
+ }
+ Frame {
+ msec: 4528
+ hash: "8d474956331fdd0c35beb13a06b7c557"
+ }
+ Frame {
+ msec: 4544
+ hash: "5d5bdffc30d90fd5b061c6fcf24c2599"
+ }
+ Frame {
+ msec: 4560
+ hash: "15721b103981f5fe40b5dfe7d65c5b38"
+ }
+ Frame {
+ msec: 4576
+ hash: "940b70f15082ff138579892bb6f20ce9"
+ }
+ Frame {
+ msec: 4592
+ hash: "5137ea98fd291a4b967fb66d93253a37"
+ }
+ Frame {
+ msec: 4608
+ hash: "35ab744ce2a91567dbbd769f9486f870"
+ }
+ Frame {
+ msec: 4624
+ hash: "d5c55c00b07735e5d7c02dfa99ef2f45"
+ }
+ Frame {
+ msec: 4640
+ hash: "6b2d32b8f1df871c2c014af8b5d87329"
+ }
+ Frame {
+ msec: 4656
+ hash: "edf3b33b80cca53999779555f9cd6162"
+ }
+ Frame {
+ msec: 4672
+ hash: "180f3cc4ea5ff5b6f9e8be0294732d4e"
+ }
+ Frame {
+ msec: 4688
+ hash: "9b99a1b0c0bb0ce37655d92854ee4d19"
+ }
+ Frame {
+ msec: 4704
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 109; y: 131
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4720
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4736
+ hash: "18e53bf6337cf6590fc3c73c00469d8e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 110
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4752
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4768
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 105; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 103; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4784
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 102; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 100; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 100; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4800
+ image: "enforcerange.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 4832
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 4848
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 4864
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 4880
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 4896
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 4912
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 4928
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 4944
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 4960
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 4976
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 4992
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5008
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5024
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5040
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5056
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5072
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5088
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5104
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5120
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 5136
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5152
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5168
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5184
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5200
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5216
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5232
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5248
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5264
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5280
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5296
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5312
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5328
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5344
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5360
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5376
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5392
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5408
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5424
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5440
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5456
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5472
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5488
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5504
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5520
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5536
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5552
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5568
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5584
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5600
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 5616
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5632
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5648
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5664
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5680
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5696
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5712
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5728
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5744
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5760
+ image: "enforcerange.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5792
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5808
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5824
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5840
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5856
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5872
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5888
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5904
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5920
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5936
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5952
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5968
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5984
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6000
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6016
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6032
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6048
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6064
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6080
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6096
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6112
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6128
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6144
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6160
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 6176
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 6192
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6208
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6224
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6240
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6256
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6272
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6288
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6304
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6320
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6336
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6352
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6368
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6384
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6400
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6416
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6432
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6448
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6464
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6480
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6496
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6512
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6528
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6544
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6560
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6576
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6592
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6608
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6624
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6640
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6656
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
index a1947ca447..6a589c60da 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
index d27b7fa9f2..a8957d646e 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
index fdab8c6a25..fe2d28b6a3 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
index dc321a85bf..0f20b07456 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
index fdab8c6a25..fe2d28b6a3 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
index 15b51cb500..0ab58c50c9 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
index a1947ca447..6a589c60da 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
index 829fbb3e1b..6d09bc0028 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
@@ -478,7 +478,7 @@ VisualTest {
}
Frame {
msec: 1712
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ hash: "b6e433a23282a50db2e165a2447ba3f6"
}
Mouse {
type: 5
@@ -498,7 +498,7 @@ VisualTest {
}
Frame {
msec: 1728
- hash: "7cda93e59466b3348e7ffe3895f89e86"
+ hash: "68d443f16c16821ffc9ca68b17c76034"
}
Mouse {
type: 5
@@ -510,7 +510,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "06e0008c78e919f7270402938d9d764b"
+ hash: "04b9041c6f10969889d92e94785c7e88"
}
Mouse {
type: 5
@@ -530,7 +530,7 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "9d8da9199efebb95f56e5d4ebc9a585e"
+ hash: "64b902fe7ab4d89ef0c7b760974e3488"
}
Mouse {
type: 5
@@ -550,7 +550,7 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "54a60a4279911ba4a8a5741bcadfa783"
+ hash: "c2125b59e00f1a1c189c778c44fe39b0"
}
Mouse {
type: 5
@@ -570,35 +570,35 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "a1a19370a1a8ed78e475f0d0eb12311c"
+ hash: "c78175071f2e95649d529b9e1cf045b2"
}
Frame {
msec: 1808
- hash: "196a3b127cf7065614c34856bf8d8bca"
+ hash: "ca8ef2c2a7b06e55899b1b63208e257d"
}
Frame {
msec: 1824
- hash: "5fbefbd7c7be4374382cc4c8b86ac78a"
+ hash: "b54957726e6257956b63e1d7ebbc96e4"
}
Frame {
msec: 1840
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ hash: "48847db78ddde75bb96edf01c52c3400"
}
Frame {
msec: 1856
- hash: "20e76f0eb4ec5f691999faf8ad313370"
+ hash: "48dab5cd1feedf1b5dd67390d6f40fda"
}
Frame {
msec: 1872
- hash: "7f84a3545907c754ae8a6a30ef61c98d"
+ hash: "fe32013c245091b577d0e38eea05705d"
}
Frame {
msec: 1888
- hash: "b544901eae32903ad054e8cdfed715eb"
+ hash: "e4b6e31029c1ea26405537c6d2304b72"
}
Frame {
msec: 1904
- hash: "a010ed1e3312f4ca9f429b7e32cdcef9"
+ hash: "b5fc9ab0a96ef526e6eb1c022f26c6a7"
}
Frame {
msec: 1920
@@ -606,135 +606,135 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ hash: "c23846634417c3e8dbbef5175036c071"
}
Frame {
msec: 1952
- hash: "c73f63d1a024ba956e693487b3ccc761"
+ hash: "1bce9b85235e9a1a472c079dfec70ec5"
}
Frame {
msec: 1968
- hash: "539d3d00fce2d0128cd697d86d237fe7"
+ hash: "98e707a3e39a5f7bd4a101c2ed83535c"
}
Frame {
msec: 1984
- hash: "52752d7d6f2d0e085f7132313907b72b"
+ hash: "f73470027601a0c1a2382d5ded9e5fa6"
}
Frame {
msec: 2000
- hash: "f46dd5803a6075e979e0fc733d503bfb"
+ hash: "d917b18a47b4e90821cba8987492cd1f"
}
Frame {
msec: 2016
- hash: "b8734698a6bad00ecf019f85328c2c21"
+ hash: "fa526c5ef57eaa210fb4d03b72c35b69"
}
Frame {
msec: 2032
- hash: "1cfc499ca756023430cc5b2fa95a599d"
+ hash: "15cbc226b032d5a97199735ea7a1408b"
}
Frame {
msec: 2048
- hash: "63a816548837c19f8f0494c137fc0174"
+ hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
}
Frame {
msec: 2064
- hash: "1bce9b85235e9a1a472c079dfec70ec5"
+ hash: "c009924bfa30153f22ab168b539494e9"
}
Frame {
msec: 2080
- hash: "6677863e7f74c12648409883f73adbe2"
+ hash: "0525908c0302ada989e28990bac3f2ca"
}
Frame {
msec: 2096
- hash: "98e707a3e39a5f7bd4a101c2ed83535c"
+ hash: "75c1295ef99680784b2e11fb88fa1423"
}
Frame {
msec: 2112
- hash: "c1f6d8842d14a9394d4b7797314f50e8"
+ hash: "53064c1938f08a55603a99b0db225174"
}
Frame {
msec: 2128
- hash: "579758b477bcd2112b305a5aac7df338"
+ hash: "99d9e58697736198e0a00443d237e85b"
}
Frame {
msec: 2144
- hash: "4a7bb81090db246db53e2dbc56f710ea"
+ hash: "6c1e860aef983367365d53f5849ad441"
}
Frame {
msec: 2160
- hash: "074995cdd8a70817d1c8a7bb0ad4c542"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2176
- hash: "bd8d7bda4d2e9ad1fba2895d568f36cc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2192
- hash: "40cce3d2d80ac470af44fc334cec1d5b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2208
- hash: "15cbc226b032d5a97199735ea7a1408b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2224
- hash: "12b296aea9b058a5402d0d0a620f8edc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2240
- hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2256
- hash: "589a58ef76ea709dc8d80390c9044f99"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2272
- hash: "c009924bfa30153f22ab168b539494e9"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2288
- hash: "4b83674a7c2daa68d735901ad40be2bd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2304
- hash: "0525908c0302ada989e28990bac3f2ca"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2320
- hash: "89eb13976ba3ba4413cafeb0cc91c01b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2336
- hash: "75c1295ef99680784b2e11fb88fa1423"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2352
- hash: "93d89165cf6a97c76ae6e7f75678a3cd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2368
- hash: "53064c1938f08a55603a99b0db225174"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2384
- hash: "31db5684466c0c32128a9a8c7b1835e1"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2400
- hash: "99d9e58697736198e0a00443d237e85b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2416
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2432
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2448
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2464
@@ -894,7 +894,7 @@ VisualTest {
}
Frame {
msec: 2928
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Mouse {
type: 5
@@ -914,7 +914,7 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "b10a6206830a876017799ef2fcf61b1a"
+ hash: "52af1b81022e8572b9123461d123197f"
}
Mouse {
type: 5
@@ -934,7 +934,7 @@ VisualTest {
}
Frame {
msec: 2960
- hash: "b2e24759ba10afd6cff90f4b1e04b496"
+ hash: "e1390ad02ae7a6e757df4a7af9032167"
}
Mouse {
type: 5
@@ -954,11 +954,11 @@ VisualTest {
}
Frame {
msec: 2976
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ hash: "bf57f309378c956dfd70aa79a7dd97c5"
}
Frame {
msec: 2992
- hash: "7b31c6d5931677f1aa1e8c7d48a4ff22"
+ hash: "408b59b96ecad0541ecbb97262c2567b"
}
Frame {
msec: 3008
@@ -966,175 +966,175 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "dd639d1df3d4a9b8f06718def63d588f"
+ hash: "9aabf0500b1272375f5f6db1bd1d7b04"
}
Frame {
msec: 3040
- hash: "39d767b09a648ef6295cec2848f9226f"
+ hash: "2e92065ca9425d1645d69c1734804518"
}
Frame {
msec: 3056
- hash: "5dd46d5f386431e7b13348ac9a9630ed"
+ hash: "c73b2e430a0e96a660aa4447697e5adf"
}
Frame {
msec: 3072
- hash: "0354e5183b0e66e7ba146d292c559df4"
+ hash: "875560b509215a869d1cad8a05f38850"
}
Frame {
msec: 3088
- hash: "984aa6d7075e24de429e05b1b0eda94a"
+ hash: "fd8e51cca3432f6edcf949857737095f"
}
Frame {
msec: 3104
- hash: "1af58a2f44f1f613712d4df85e38356d"
+ hash: "aa5d4e65932b3ec2f5549079dfc7718d"
}
Frame {
msec: 3120
- hash: "6e4085e7f1fee724d78808753f04b471"
+ hash: "f811f3c6b022730dd68ebd7b1659ea40"
}
Frame {
msec: 3136
- hash: "73a019ef9057639d631cd99a431b3f3b"
+ hash: "e51a2e41972cfc3df46a7d4375024d80"
}
Frame {
msec: 3152
- hash: "c9414a2e655a90dfdcb6fb288b4ba0ca"
+ hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
}
Frame {
msec: 3168
- hash: "3f4c24f7ac89da982af22032309637fb"
+ hash: "9229054bb70662b12a4f7e45ac5b7a90"
}
Frame {
msec: 3184
- hash: "a50e6ada8f73a257657f4348ceaffcfd"
+ hash: "89ff346eca0b71cad3b04a2cb8064fb0"
}
Frame {
msec: 3200
- hash: "a67bf40d09259bbd079c12ae4f49150f"
+ hash: "94e6ecb87a7efca6344d6d63a1e3829f"
}
Frame {
msec: 3216
- hash: "a2fc512b7c234a9d0b2c1a83387a8a46"
+ hash: "bc5eb6b0eeae316ddd0b308da2cc32e2"
}
Frame {
msec: 3232
- hash: "85090683ce9a3c9833b1cb0b3df076ee"
+ hash: "240081760f0cf2f02be4d6d2600d2bbc"
}
Frame {
msec: 3248
- hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
+ hash: "69b335aeb81fc2ae6173f2ec5cdc4c55"
}
Frame {
msec: 3264
- hash: "2473eb11f7b65a784a2b166114026488"
+ hash: "10d481e57cc8cd694500d9ed6ae1f8bb"
}
Frame {
msec: 3280
- hash: "4865c30dc45fbf5ca82047b77eca0912"
+ hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
}
Frame {
msec: 3296
- hash: "54de88bca395449fbaea2c090c7a5d91"
+ hash: "aa94ebdbb4b8423aff28c95daff0baf5"
}
Frame {
msec: 3312
- hash: "833f9295cf9a34934f001eac48551b59"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3328
- hash: "5bf565f57ababa7380faeee94add91ca"
+ hash: "8ef246d322446e7f0848b99495f89e2b"
}
Frame {
msec: 3344
- hash: "6325578867f1eb3b2d47ed40b017b571"
+ hash: "c3b219bdd7710427d134402a8d3e6429"
}
Frame {
msec: 3360
- hash: "046a6114176b3a3206b7a2acd6e30b41"
+ hash: "3b2e2d957585fb44a7165186a146892c"
}
Frame {
msec: 3376
- hash: "f8d4120a17f28c2d1d9c4be959098058"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3392
- hash: "71356d2e48aad2900784ea6bc1a3d908"
+ hash: "e4dacafba5ab5f8db53f08cef458cf42"
}
Frame {
msec: 3408
- hash: "b84ad460fb81fdc4049abe8f3ff180bb"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3424
- hash: "0354239f5eaea23474d9f81385392a8a"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3440
- hash: "8ef0eef3393e07ae7605c865a95edc30"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3456
- hash: "5b8b384cc8e3faf4310015e19b3eb487"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3472
- hash: "77c18ac7dfff2a4e516915e3e3df0717"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3488
- hash: "c1d3264384c26345eb8100de829309ca"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3504
- hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
+ hash: "e4dacafba5ab5f8db53f08cef458cf42"
}
Frame {
msec: 3520
- hash: "f619097356671f6eb54d3b1c481e709d"
+ hash: "de7f3c83f37cc89c87009626c72e7642"
}
Frame {
msec: 3536
- hash: "e56e3a90da446e0c482cb93717f6aacc"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3552
- hash: "aa94ebdbb4b8423aff28c95daff0baf5"
+ hash: "40204fdb7a84b86f1380224908092354"
}
Frame {
msec: 3568
- hash: "e1744d9cacd1a2c96af4cfdd5c486995"
+ hash: "ff93c3290b7d9a9743cc11d41a112a0a"
}
Frame {
msec: 3584
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "c3b219bdd7710427d134402a8d3e6429"
}
Frame {
msec: 3600
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "56e2f6b2ac103caf7ada3b56c19622c2"
}
Frame {
msec: 3616
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "8ef246d322446e7f0848b99495f89e2b"
}
Frame {
msec: 3632
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "8eb6d69d9833d0fbf87f951f489b71fe"
}
Frame {
msec: 3648
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "17deb6b26fc9d27d5194995c102da4ac"
}
Frame {
msec: 3664
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3680
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "1734205ea5e7539b47d80c5a93ec74aa"
}
Frame {
msec: 3696
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "1734205ea5e7539b47d80c5a93ec74aa"
}
Frame {
msec: 3712
@@ -1298,7 +1298,7 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "c2c9c284b185a89faf4ddb5a7867f449"
+ hash: "f619097356671f6eb54d3b1c481e709d"
}
Mouse {
type: 5
@@ -1310,7 +1310,7 @@ VisualTest {
}
Frame {
msec: 4176
- hash: "de1c18aeda5d2fbd6dad4554c78617bd"
+ hash: "240081760f0cf2f02be4d6d2600d2bbc"
}
Mouse {
type: 5
@@ -1338,11 +1338,11 @@ VisualTest {
}
Frame {
msec: 4192
- hash: "a67bf40d09259bbd079c12ae4f49150f"
+ hash: "3b85c1739fdf3933d8cb0b2eaf22e6e3"
}
Frame {
msec: 4208
- hash: "94514668dafbe41c5890a578efd6dea4"
+ hash: "f811f3c6b022730dd68ebd7b1659ea40"
}
Frame {
msec: 4224
@@ -1350,139 +1350,139 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "4b5368f0d86bffeb6bd31b58aec88650"
+ hash: "7b7f5daf5eaf047e69d04b5bcb73240c"
}
Frame {
msec: 4256
- hash: "b459bde7bb4ce51e6ecdab58f64fcbb9"
+ hash: "1af58a2f44f1f613712d4df85e38356d"
}
Frame {
msec: 4272
- hash: "7bac8cc3ec64c9ad1c0da282e38c953e"
+ hash: "1bbdda445cec7f95a189c15d7e3c77b8"
}
Frame {
msec: 4288
- hash: "a73a58c3d7a757547740a2a161f4c756"
+ hash: "91d8bcfebff29d2caf526b4012daaf46"
}
Frame {
msec: 4304
- hash: "b35edcb1fa3568a3e770ab2364b82e75"
+ hash: "71ec8c363ca6a6f7556afb70faccffe6"
}
Frame {
msec: 4320
- hash: "d6c863ef57c5e5cb04cdac72f920db0b"
+ hash: "303ebc28d09a49de52cb1adaa03872dd"
}
Frame {
msec: 4336
- hash: "0db5e4588ff851918b07796f0cf07382"
+ hash: "9402e86bf4ffa62c60b02531a3735275"
}
Frame {
msec: 4352
- hash: "71ec8c363ca6a6f7556afb70faccffe6"
+ hash: "5652de6fb2e107d41c0c5aeacf5a3055"
}
Frame {
msec: 4368
- hash: "18d026e9c965ada1db67c643576d2a80"
+ hash: "b6a2ade6565a86b1f8e369b02e0b93f9"
}
Frame {
msec: 4384
- hash: "69f71c22dff981a4da8ec1edcf90e79f"
+ hash: "30dd35e0b9ffa846f3cfc39edcbae511"
}
Frame {
msec: 4400
- hash: "680460f5e4d9e649931601041af046b2"
+ hash: "401975fb4c9a48953aec25adb593eec4"
}
Frame {
msec: 4416
- hash: "3028763fd15de2607b20b1331b904a4a"
+ hash: "71f9039c7aa9c8dc6d1de4561b1d5537"
}
Frame {
msec: 4432
- hash: "333eb60e217fe1ea7469eab52ac461f1"
+ hash: "e1390ad02ae7a6e757df4a7af9032167"
}
Frame {
msec: 4448
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ hash: "53a26f00bd49b8a9c065be99f9402d9c"
}
Frame {
msec: 4464
- hash: "3445df9b41a0a3e74738cbf328ab7d5c"
+ hash: "b6e515e9a27af23b895f5024a41ce7b3"
}
Frame {
msec: 4480
- hash: "bd2c072558479e9de7a97207e58cc57f"
+ hash: "85d143505d56f53c629358b37ad11581"
}
Frame {
msec: 4496
- hash: "3d34b0b24a30eda93377dcb4585afed8"
+ hash: "de5cbdd848a07b78f9c5eb510cca2d3e"
}
Frame {
msec: 4512
- hash: "d3045703863b0c5a327b9355c23d69f2"
+ hash: "0ad7411316031e22034c14e81ca3a806"
}
Frame {
msec: 4528
- hash: "2f2eb55f693415b840a317211b250e9f"
+ hash: "32bef6f5005ad94e29ff59165958fbdc"
}
Frame {
msec: 4544
- hash: "791b9ca7d47a3343474c30a35e336d4b"
+ hash: "87758dd311f91193bf1e3536c2f58525"
}
Frame {
msec: 4560
- hash: "73a0c02ebad6d3d5f939d9a00dd898bf"
+ hash: "d4c34ed49317c6692d71681fcd9842b6"
}
Frame {
msec: 4576
- hash: "d5c11135d586711b12f236430a2c2795"
+ hash: "abaa235bb946a8abaddd52981d632c2d"
}
Frame {
msec: 4592
- hash: "34f9ea214fe714ff4e994f715ea6ea39"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4608
- hash: "8e49afa00983b156b818533923fb6edd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4624
- hash: "e7e7bef17cee92eca9191fd734d7a577"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4640
- hash: "e407f6ed7cb3c130365ab5515d6308c0"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4656
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4672
- hash: "0ad7411316031e22034c14e81ca3a806"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4688
- hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4704
- hash: "32bef6f5005ad94e29ff59165958fbdc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4720
- hash: "87758dd311f91193bf1e3536c2f58525"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4736
- hash: "015be92a4ff4e735fcc3cbc7a8b9d763"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4752
- hash: "d4c34ed49317c6692d71681fcd9842b6"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4768
- hash: "abaa235bb946a8abaddd52981d632c2d"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4784
@@ -1650,7 +1650,7 @@ VisualTest {
}
Frame {
msec: 5280
- hash: "95b380c9ab6f8db7b822faf023d94546"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Mouse {
type: 5
@@ -1670,7 +1670,7 @@ VisualTest {
}
Frame {
msec: 5296
- hash: "bb79e53556698c62ec30c75be9f6b7d7"
+ hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
}
Mouse {
type: 5
@@ -1698,115 +1698,115 @@ VisualTest {
}
Frame {
msec: 5312
- hash: "285cc2f0df1f59f25a0135560ab6edf2"
+ hash: "4aa05d978267325ae00cb45e310a2f01"
}
Frame {
msec: 5328
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ hash: "b5717b311259c77a0210e26ab99dd401"
}
Frame {
msec: 5344
- hash: "eb555741ab128a50de5a18a454f2e639"
+ hash: "9b3fde82278fa2f0caaf64cf23bb6530"
}
Frame {
msec: 5360
- hash: "5dbe6cf898c1e37fcaacecfcf57b2194"
+ hash: "e7795610115593e78bb32f7bcc0ae2eb"
}
Frame {
msec: 5376
- hash: "e7795610115593e78bb32f7bcc0ae2eb"
+ hash: "0dc7c4c161e0b3c3d176e5e6bc08a805"
}
Frame {
msec: 5392
- hash: "20e76f0eb4ec5f691999faf8ad313370"
+ hash: "7c2b0307c4040d8d9e88425b3bf3fb70"
}
Frame {
msec: 5408
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ hash: "06ce7db518da042e04dd3f79b7220974"
}
Frame {
msec: 5424
- hash: "e7a3a21feed244c5b1c710a9254c15f0"
+ hash: "7aeec517e845c1c5012ed63be6bbd006"
}
Frame {
msec: 5440
- hash: "5a4b1aca24f121d1373646e9d80b86fd"
+ hash: "53e9d5a0098f2e91bbea45360b876607"
}
Frame {
msec: 5456
- hash: "331d2ec7021655c86aa64e47718a1088"
+ hash: "22a6c7f3dcb5a36592909783b2466c8d"
}
Frame {
msec: 5472
- hash: "92096bc872e7395aa5b75c44646a0b60"
+ hash: "9d8da9199efebb95f56e5d4ebc9a585e"
}
Frame {
msec: 5488
- hash: "0d9aa6cee4d21488cbb5153f8f3ed593"
+ hash: "c553400402f233a6246be4e544b433ae"
}
Frame {
msec: 5504
- hash: "c1b943d43701605563fffffcb75f9fa7"
+ hash: "c2e41a54c03340832db93f6f88393f00"
}
Frame {
msec: 5520
- hash: "1b680025d5ad1ddd8f8d5f570ba73e71"
+ hash: "3622a619a99c939e96636a86c4428ba3"
}
Frame {
msec: 5536
- hash: "5539a3b9f60ea747c10ed8328b467cbf"
+ hash: "e65d5e6c756e750e6d98096fe211465c"
}
Frame {
msec: 5552
- hash: "0a1317bcb606cd3488c5b14ee5d96585"
+ hash: "cabd6d30b1f4e42b38b73803aae6d5be"
}
Frame {
msec: 5568
- hash: "8844af68b11db7d92c69804c7371a746"
+ hash: "68d443f16c16821ffc9ca68b17c76034"
}
Frame {
msec: 5584
- hash: "28d7fd127739c6e3b8488651b725c802"
+ hash: "a68b1bc6c2963ee92c3a45f500667b3b"
}
Frame {
msec: 5600
- hash: "0cf1a7d958a96aa2768995dddc5ccc09"
+ hash: "805319ac7ca842feb3649e92f8b5b72f"
}
Frame {
msec: 5616
- hash: "64b902fe7ab4d89ef0c7b760974e3488"
+ hash: "fd8d3f5688b1806998c6087e18c6c730"
}
Frame {
msec: 5632
- hash: "aba11c597eba550fc1eaddbf554057f6"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 5648
- hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5"
+ hash: "40382f644935dc4e99353fa29c3e0b21"
}
Frame {
msec: 5664
- hash: "0ba8b582234d9f0c198c0c9e18e1cb02"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5680
- hash: "f66eaf2b5c3529987c0d9d005351ed73"
+ hash: "b8db9180b4ad15fdbd25a4e974512f92"
}
Frame {
msec: 5696
- hash: "75b0bb720fa4c77da3783b3ff31c2fae"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5712
- hash: "345b235bb7f13409378e5c0c370f2a41"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5728
- hash: "83b7e902dce4e0fdc4ef5d629188c23c"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5744
- hash: "04b9041c6f10969889d92e94785c7e88"
+ hash: "0b7fc796f818bddcada99e9981f1cce0"
}
Frame {
msec: 5760
@@ -1814,63 +1814,63 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "4f3a902addc34ecdaf390e2427cc52e7"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5792
- hash: "68d443f16c16821ffc9ca68b17c76034"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5808
- hash: "9d25adc77befa761ee376a9b43595b5e"
+ hash: "2311ce1a83a43619ab7ce537a2b948e1"
}
Frame {
msec: 5824
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ hash: "2311ce1a83a43619ab7ce537a2b948e1"
}
Frame {
msec: 5840
- hash: "d5268cd58c222451d48038e715e83802"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5856
- hash: "f37d461541a8ec7a4161b18748de6aea"
+ hash: "b8db9180b4ad15fdbd25a4e974512f92"
}
Frame {
msec: 5872
- hash: "805319ac7ca842feb3649e92f8b5b72f"
+ hash: "65af7a4a4aea5a983ea3fb9324e74256"
}
Frame {
msec: 5888
- hash: "73124472a05080891d4948d8ca273f8c"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5904
- hash: "b6e433a23282a50db2e165a2447ba3f6"
+ hash: "b3e92eb4cfe548b92ac526066dfc7d23"
}
Frame {
msec: 5920
- hash: "fd8d3f5688b1806998c6087e18c6c730"
+ hash: "39fcad34db24d591e24c8ae1c7094d5b"
}
Frame {
msec: 5936
- hash: "f132dd459950ef2d18aa93ca950d0692"
+ hash: "165b91b850bcb8dd1d9b1eaa6f81be57"
}
Frame {
msec: 5952
- hash: "ade5beb259b5277c333ca806fc9bdbec"
+ hash: "f34d2248999f5f51210064315d631f60"
}
Frame {
msec: 5968
- hash: "ade5beb259b5277c333ca806fc9bdbec"
+ hash: "f34d2248999f5f51210064315d631f60"
}
Frame {
msec: 5984
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 6000
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 6016
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
index 581e8243df..c7fa6954f8 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
index 581e8243df..b6c5e19d76 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
deleted file mode 100644
index dcfca3f794..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
deleted file mode 100644
index 7cc40470bb..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
deleted file mode 100644
index a97f4ad519..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
deleted file mode 100644
index 7a8c6bd52c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
deleted file mode 100644
index ae47356225..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
deleted file mode 100644
index b3a72609a2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
index 579c68c49a..711c47a029 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
index b3a72609a2..e56fae0ac1 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
index 19758b0e38..0030842b9a 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
index 581e8243df..2ec8177be8 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
index 82cac48c87..38ed52594c 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
index 9277a823df..9e7bd6eb31 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
index 8c36da732c..9e7bd6eb31 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
index bf640297eb..45f96e1614 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
@@ -108,137 +108,193 @@ VisualTest {
msec: 416
hash: "3b88645092be28037fca4a6034f5b2f7"
}
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 432
hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 448
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "435ac0668ad4d0e196eb040d385053cb"
}
Frame {
msec: 464
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e9532fe1acc1c27a2119e6dde3e01637"
}
Frame {
msec: 480
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9c757feaf5a8d1e88c659fca97e3b7b2"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 496
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "ccc7785a45a41615db01580835a4638e"
}
Frame {
msec: 512
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "11ad92022bcd5d3fbd28ffb9f51c69eb"
}
Frame {
msec: 528
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a8a94e1f95216864c368b8c3d0ae682b"
}
Frame {
msec: 544
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d83e213d35e7fcff2580b4e197547f24"
}
Frame {
msec: 560
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 576
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 592
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 608
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 624
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 640
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0e9c577fa86d9b3734da0d50040624e0"
}
Frame {
msec: 656
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "834cf83f0f8d613191cac775b5737664"
}
Frame {
msec: 672
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "495ea7650b2ae45f9afd7f9f6ecdd793"
}
Frame {
msec: 688
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "55c761ccee6543bb3b9564bb813df58e"
}
Frame {
msec: 704
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e29e5f86cb3b1fb5ec77fde696024812"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 720
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f24b7d5a8f5ab03460505d6203269d1b"
}
Frame {
msec: 736
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "893473965efe9e0540b197cbaa3f765d"
}
Frame {
msec: 752
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a541b7be2f370f948048b2101b037ab7"
}
Frame {
msec: 768
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a541b7be2f370f948048b2101b037ab7"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 784
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "da065f1e72883a45241630b96ee5b1f8"
}
Frame {
msec: 800
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e97f78604c0c6d468c8dd225642e2ebd"
}
Frame {
msec: 816
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7b9d4b14eedfa4ff10dd7e3747c4a7f5"
}
Frame {
msec: 832
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "6d55ba6287c720614854d36bb681a9f3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 848
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "3e7a44811f59bfb81de2f4f884a7af17"
}
Frame {
msec: 864
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "101113a7723b9d09275f66152b82142f"
}
Frame {
msec: 880
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0044e068522f912630868476f8bf49f8"
}
Frame {
msec: 896
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 912
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 928
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 960
@@ -246,239 +302,351 @@ VisualTest {
}
Frame {
msec: 976
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e15814643bad6a71cb8c318ee5fd684a"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 992
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9b07b6861a97d0871ed89369ff7449da"
}
Frame {
msec: 1008
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7d95daf35c1823ea7187162b62010c57"
}
Frame {
msec: 1024
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "cc1e70fd1235d50ca291580bef1d6fc4"
}
Frame {
msec: 1040
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c8250f4cf69642e78523412b7b75501c"
}
Frame {
msec: 1056
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c57e421c803e8bfa1a85409cbb858829"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "19b429a90d9877e62a7dee53ebf01fb2"
}
Frame {
msec: 1088
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7c810f174bed3826016272515df2d525"
}
Frame {
msec: 1104
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9034cf480bda0d8b55aa6c43fc96b23d"
}
Frame {
msec: 1120
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f62697a1f4e4df2869c14462a0d514fd"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c878f53b338d1ce332973193b0fa4b86"
}
Frame {
msec: 1152
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "5d26f27061b319c391961dc30d985593"
}
Frame {
msec: 1168
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e038ae877e8dddd3d99bf97475f59b3d"
}
Frame {
msec: 1184
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f44adc5e46d320c62095e1285ca8848b"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1200
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "17f6b13e0556ac07dc527a9013a307a1"
}
Frame {
msec: 1216
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "70a1cc3b6dd3be4e30bb6763344fb980"
}
Frame {
msec: 1232
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "097c37d2243a27b8e800b5d4ec94b2e3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1248
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "15839227c002b1c71eb516f6653a7531"
}
Frame {
msec: 1264
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f4a8103ef9010c651368d325fe9eee98"
}
Frame {
msec: 1280
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d158ec1c83719c58c1d0a2e4cc90998f"
}
Frame {
msec: 1296
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "6f66a44f5dc3fe150db2291b8cbc7327"
}
Frame {
msec: 1312
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
}
Frame {
msec: 1328
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1344
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "807129a4c578b1a5f0d3d84686eb0553"
}
Frame {
msec: 1360
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f9f2da990518048f0b050cc193567a20"
}
Frame {
msec: 1376
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "762de7b1f4e56df6d7a245a23446884b"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "84ba7354badc3dca92974933c3610010"
}
Frame {
msec: 1408
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "36c3018870d74cff638d00acd03a0cf0"
}
Frame {
msec: 1424
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "82b756a14eb0e802cd3e2d2d2a07f28e"
}
Frame {
msec: 1440
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "74af1c12613130dc53533fe1178d5534"
}
Frame {
msec: 1456
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c32818b0ba24f11295580d1ccffffdc0"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1472
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "b858be109fac6852234bf1db161e515b"
}
Frame {
msec: 1488
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9b3f8cffd3e79241d8a3b1f7d80790db"
}
Frame {
msec: 1504
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "840dc72aabc4a9b28bae641354676324"
}
Frame {
msec: 1520
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c60bfd5cc8b26a841035db29baba5dab"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1536
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "88d80dc8b0d968aa718ff464e507f53b"
}
Frame {
msec: 1552
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f7ffc82d3448c415b4997401fb61b96b"
}
Frame {
msec: 1568
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "df8e9a09752fe2b2eff9184ba8e88ef1"
}
Frame {
msec: 1584
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1600
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1616
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1632
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1648
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1664
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1680
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1696
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1712
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1728
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1744
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1776
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1808
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1824
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1840
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1856
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1872
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1904
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "15e45e1f64438d7c31e79a9602e1db7a"
}
Frame {
msec: 1920
@@ -486,193 +654,201 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "fae571933c4eafb33bb764bd1cddfc30"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1952
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "33091359f9e6f21a14bf415d32d4d3b1"
}
Frame {
msec: 1968
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0fdcffa304f3eadde5cd7866d0a74e72"
}
Frame {
msec: 1984
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "024539dbf8e66f1ba7d5d8c91bd278f0"
}
Frame {
msec: 2000
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "4900babcc0a7bbd622a72590dcb0eea4"
}
Frame {
msec: 2016
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d6f68d576fe46bb832accf5e9e590f7e"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2032
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "5a54bcb9a59268d70a2bb99bd32395be"
}
Frame {
msec: 2048
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "72fbb18da8c5ef3e98390796dad31390"
}
Frame {
msec: 2064
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "ac073b398e3d50ef10c92d8e6b4b3fa0"
}
Frame {
msec: 2080
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "41e38d866d65bf1d42448b07a133cd93"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2096
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c45310b94cd2ff276e97be1706e1d432"
}
Frame {
msec: 2112
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "aefc6994644d266d4be0310f01c28be7"
}
Frame {
msec: 2128
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f07bcb1d8ad693e1ddd79bf651126554"
}
Frame {
msec: 2144
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "62ff227caab71d2d98daf0da302ec796"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "72350eeeaefd043354c82ca2039cff59"
}
Frame {
msec: 2176
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d89f288f0b231b4ec4a634b3856ecf8e"
}
Frame {
msec: 2192
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "bc7d7e2253651cb3ea1cdebf9f188ae0"
}
Frame {
msec: 2208
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7c89cdb693489708fe2db327ae66d083"
}
Frame {
msec: 2224
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8ca778c1812ede19545c3c70020faa67"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "bd50cd99f177eb3f70b2ffad9f7a49e1"
}
Frame {
msec: 2256
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "b439c3576cad17689e7b6b134bb04e14"
}
Frame {
msec: 2272
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2288
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2304
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2320
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2336
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2352
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2368
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2384
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2400
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2416
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 488; y: 56
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2432
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2592
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 553; y: 267
+ x: 489; y: 56
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2624
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2464
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 554; y: 267
+ x: 490; y: 59
modifiers: 0
sendToViewport: true
}
@@ -680,19 +856,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 555; y: 266
+ x: 491; y: 64
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2640
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2480
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 556; y: 265
+ x: 494; y: 74
modifiers: 0
sendToViewport: true
}
@@ -700,63 +876,75 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 558; y: 260
+ x: 497; y: 90
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2656
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2496
+ hash: "6502b3a17af7ebca92d4794f0c2a62ac"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 560; y: 256
+ x: 499; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 501; y: 126
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2672
- hash: "c315e184c4dcb11d7e9fd4509a8b6a1f"
+ msec: 2512
+ hash: "8a7ac12d59126b2784fd0af8d6b762a5"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 562; y: 250
+ x: 505; y: 170
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 2528
+ hash: "12fa9c4e2d6681f3a0643d8243d83e23"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 566; y: 234
+ x: 509; y: 214
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2688
- hash: "aeef1cacca9518408519b670443e396f"
+ msec: 2544
+ hash: "ccf18952f7c9686bd12fa196af9919e6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 568; y: 216
+ x: 516; y: 289
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2704
- hash: "621626927f83bf7b36b78f5ca7ed4ed0"
+ msec: 2560
+ hash: "70d654eecaf2163971596a503d2925a0"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 572; y: 192
+ x: 518; y: 316
modifiers: 0
sendToViewport: true
}
@@ -764,49 +952,85 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 572; y: 192
+ x: 518; y: 316
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 2576
+ hash: "01ef888104f290f25612970a91e64620"
+ }
+ Frame {
+ msec: 2592
+ hash: "25b730c7c126875078c64cce118f6277"
+ }
+ Frame {
+ msec: 2608
+ hash: "68f3366932fed9156bf68dce6660b2a8"
+ }
+ Frame {
+ msec: 2624
+ hash: "9f4be0b58c46035a11c5b80ec60618d5"
+ }
+ Frame {
+ msec: 2640
+ hash: "6d38a4eaa2a41c57599cca381957ec4c"
+ }
+ Frame {
+ msec: 2656
+ hash: "1061db26c9080067bf121eb1d164a3f3"
+ }
+ Frame {
+ msec: 2672
+ hash: "c78d271711dc8f13fb48b41871249141"
+ }
+ Frame {
+ msec: 2688
+ hash: "c5825611f6c429fddd8c20495507ea5f"
+ }
+ Frame {
+ msec: 2704
+ hash: "9888b608bcf80496a3fe8848be4e3629"
+ }
+ Frame {
msec: 2720
- hash: "b2aca965b745e98365195c52b9dd9a2c"
+ hash: "9995d6ba039045d94903d5095b018ca8"
}
Frame {
msec: 2736
- hash: "b80cc493e604c42aca2367e26bc9e844"
+ hash: "f8ea705b4710b3ffb11c2fe08ccccda2"
}
Frame {
msec: 2752
- hash: "39165ad87fc687e0f165f8a2675173b5"
+ hash: "7354c2fcabdede9fb1ee823ce098da3b"
}
Frame {
msec: 2768
- hash: "edd1da7c34c3eb7f1f16b782dfa41a13"
+ hash: "0d6beff960fa26771f09748356accedb"
}
Frame {
msec: 2784
- hash: "d31a7915cdb2a7f392e6edc3047a6606"
+ hash: "0720a8a1ed85344a1de6682b3aefd502"
}
Frame {
msec: 2800
- hash: "3038dbb3fe3c255adcbecfc106bacb99"
+ hash: "0245488740e13dbfc836b587b2bdf917"
}
Frame {
msec: 2816
- hash: "454137c508d76f2c38b8007247420b81"
+ hash: "25c4fcdd85017d18df7e83c15f1accbc"
}
Frame {
msec: 2832
- hash: "16eb385d3ce3b186745974500f855a97"
+ hash: "51192ae0eae814f3dead9d949e2e4676"
}
Frame {
msec: 2848
- hash: "8871fded1fbbdcb0fdfdaa2e6eecc3d1"
+ hash: "ddbe6b273882c6018c01e0a4480b1adb"
}
Frame {
msec: 2864
- hash: "f49955dab8341e7ca472c3f547cbeaab"
+ hash: "bb840a0677114b67d9b08589e8a8192b"
}
Frame {
msec: 2880
@@ -814,349 +1038,53 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "c0ef41c682fa9802c9eb74fd249cfd40"
+ hash: "6ceadf740293537c7b9f2e2cfe8e6f1e"
}
Frame {
msec: 2912
- hash: "6174fea6ef04fbcefd32d6a0b35a3514"
+ hash: "f5c99d06e0b3055374ee4c6bf3e634f4"
}
Frame {
msec: 2928
- hash: "7b2288a8be7b3c465e725aeb5788e91f"
+ hash: "18fe01fadf4c5acbd369f4450db1efa6"
}
Frame {
msec: 2944
- hash: "b39d8cb650ee00c245b556235843490b"
+ hash: "bed738f1883a76c5169dd2726456b9ea"
}
Frame {
msec: 2960
- hash: "9478ea0bf640924931d627cd8b607eba"
+ hash: "c80c45be3189269d8edc5be22db7227d"
}
Frame {
msec: 2976
- hash: "39743788f56c6f5c29fa9549e586d1ae"
+ hash: "3dcb08dd8ac8f083ad6aacbafaae05f4"
}
Frame {
msec: 2992
- hash: "ec8ab3547e10d18e9493b8fae5125591"
- }
- Frame {
- msec: 3008
- hash: "169b115d03db8c901db4f4c2909a18d3"
- }
- Frame {
- msec: 3024
- hash: "bf438b17a1e8df6d6bb05474cacd12a7"
- }
- Frame {
- msec: 3040
- hash: "2aad06334128659e143c4c6c8415a30b"
- }
- Frame {
- msec: 3056
- hash: "ea0e8d7387b9b54a47bb99c058093462"
- }
- Frame {
- msec: 3072
- hash: "e483e585399a47490599ca265cf73000"
- }
- Frame {
- msec: 3088
- hash: "43bed4aac1a2a9b66eafefc117424500"
- }
- Frame {
- msec: 3104
- hash: "ba5c36add368938f8134a0a88e599c00"
- }
- Frame {
- msec: 3120
- hash: "c905be5276a871bd1ac392580231c9e4"
- }
- Frame {
- msec: 3136
- hash: "0c96d9b0119513c1f327f9e6651e89cd"
- }
- Frame {
- msec: 3152
- hash: "c4ba0836dbb900600f8f4aed42eb1ea1"
- }
- Frame {
- msec: 3168
- hash: "253d014f89a616032664f29f268cfd85"
- }
- Frame {
- msec: 3184
- hash: "a5185192d7db7c4a4c8bec6cb5a2a73a"
- }
- Frame {
- msec: 3200
- hash: "d453cc5b89d3fa00586cc41d5a9a8092"
- }
- Frame {
- msec: 3216
- hash: "b3c39c0c06643612681b098101458d32"
- }
- Frame {
- msec: 3232
- hash: "09beec410a0ca7c47fe08991341aea0c"
- }
- Frame {
- msec: 3248
- hash: "c13c269b384029d04a05fd0170e5909e"
- }
- Frame {
- msec: 3264
- hash: "cafe360c512ab92804dc1fddae9b8fb6"
- }
- Frame {
- msec: 3280
- hash: "26dfe538a7edc8f43af1d78e678f3dfa"
- }
- Frame {
- msec: 3296
- hash: "11e03f6901a4bdbc1eabe72b1ddbee4b"
- }
- Frame {
- msec: 3312
- hash: "0ea8886b1256649665a1597f62cc633b"
- }
- Frame {
- msec: 3328
- hash: "013c34be077fb689333df9b04a931b3a"
- }
- Frame {
- msec: 3344
- hash: "d0e9f1d147e0767c12a89f33b5f2b5b3"
- }
- Frame {
- msec: 3360
- hash: "9888bf29cd868bad6b2593842413b283"
- }
- Frame {
- msec: 3376
- hash: "d8ec307a85cecaacaa908ceb34d5db5b"
- }
- Frame {
- msec: 3392
- hash: "4afe1df3e802b41d1b89b5fab4e35190"
- }
- Frame {
- msec: 3408
- hash: "e8f484ed8d2a6745ee87ac9544281d55"
- }
- Frame {
- msec: 3424
- hash: "48eaa0644a27cb3e53c75bd0ce08bf47"
- }
- Frame {
- msec: 3440
- hash: "f1523d82dfc5c136fbe8746449bb5013"
- }
- Frame {
- msec: 3456
- hash: "d664786f1a79f851e72aa48ee6736374"
- }
- Frame {
- msec: 3472
- hash: "e43bb6d0374c8bab67b5fafcaeb2a205"
- }
- Frame {
- msec: 3488
- hash: "77ef61827c993b16691a023e99cc7f7e"
- }
- Frame {
- msec: 3504
- hash: "6198e0d242db79e81fb81f621c78a3c9"
- }
- Frame {
- msec: 3520
- hash: "a66b4773ef05ca78aa12e2c8a151c53a"
- }
- Frame {
- msec: 3536
- hash: "52fa0b693c3de208e5943521eef5587c"
- }
- Frame {
- msec: 3552
- hash: "0e237f706f9c2c4c616271f9b9d014e5"
- }
- Frame {
- msec: 3568
- hash: "14edd1dc2371a9aadaa3c079d325fab6"
- }
- Frame {
- msec: 3584
- hash: "1fe873b07ee24edaea224939e10830f1"
- }
- Frame {
- msec: 3600
- hash: "30804b5eb2a6d99116475cbdc1a9c043"
- }
- Frame {
- msec: 3616
- hash: "c892c17ec947a910b74f5b8704405e9f"
- }
- Frame {
- msec: 3632
- hash: "696029b77512943001c9eba64191e633"
- }
- Frame {
- msec: 3648
- hash: "4c26bb0ca28d74a2bb79d0bfc8127361"
- }
- Frame {
- msec: 3664
- hash: "2d1539db88647d73b9c53cde7c424dd7"
- }
- Frame {
- msec: 3680
- hash: "fd20e4259b44357c93f22f35c698fe1b"
- }
- Frame {
- msec: 3696
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3712
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3728
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3744
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3760
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3776
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3792
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3808
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3824
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3840
- image: "listview.3.png"
- }
- Frame {
- msec: 3856
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3872
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3888
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3904
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3920
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3936
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3952
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3968
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3984
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4000
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4016
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4032
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4048
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4064
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4080
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4096
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4112
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4128
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4144
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ hash: "38850ecc15cdcd55b758f94e8ac7fe55"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 521; y: 24
+ x: 517; y: 241
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4160
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 25
- modifiers: 0
- sendToViewport: true
+ msec: 3008
+ hash: "033c44c51b8ab8f1555e153e20a80699"
}
Frame {
- msec: 4176
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 3024
+ hash: "b6dc510369c679a028bb059e74796f6c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 32
+ x: 518; y: 240
modifiers: 0
sendToViewport: true
}
@@ -1164,51 +1092,55 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 521; y: 37
+ x: 519; y: 239
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4192
- hash: "a5df688148c264de1d376c9b87ddfa6b"
+ msec: 3040
+ hash: "f3606887493ee9c0db86b1c6cc6fef6d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 46
+ x: 524; y: 229
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4208
- hash: "a4e2c1878b0afce0ee1eebd63e9c951a"
+ msec: 3056
+ hash: "79975f978ebf4556381d08b500dcab72"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 66
+ x: 530; y: 204
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 3072
+ hash: "1345974969c1a56c4c14c74301985289"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 88
+ x: 532; y: 167
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4224
- hash: "2f9a79278d492790ef86a09c77e95ff4"
+ msec: 3088
+ hash: "fd623f2bf161f326da6dec8b5d8bf16f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 531; y: 136
+ x: 530; y: 117
modifiers: 0
sendToViewport: true
}
@@ -1216,731 +1148,283 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 531; y: 136
+ x: 530; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4240
- hash: "5b5ce7206b26528157c426f4e1e3e0a8"
- }
- Frame {
- msec: 4256
- hash: "65a1e5f81ab89b163aed46b984cca45e"
- }
- Frame {
- msec: 4272
- hash: "e28253ad5a2415251b68bcda1d7d4bd0"
- }
- Frame {
- msec: 4288
- hash: "71aae5abb4a9e9077053ea21dd3ec315"
- }
- Frame {
- msec: 4304
- hash: "33fcea38fc3b328b3294f9ac2a26aa1a"
- }
- Frame {
- msec: 4320
- hash: "6299eb1d87f371966307668b92de6a0b"
- }
- Frame {
- msec: 4336
- hash: "4f66d8c7cb6971d0fc24089d123c547b"
- }
- Frame {
- msec: 4352
- hash: "d9906d61b31fabf968290ebcd6688f34"
- }
- Frame {
- msec: 4368
- hash: "5a1945993ff8096ba6b933d45586044a"
- }
- Frame {
- msec: 4384
- hash: "331535e54da9bbdbc2fbf2b244ad0199"
- }
- Frame {
- msec: 4400
- hash: "4dc39de0c54f6e0b77f94f6ae6c345ec"
- }
- Frame {
- msec: 4416
- hash: "ec309a298ce246c13eb666488eb75016"
- }
- Frame {
- msec: 4432
- hash: "a133819f8adc6265eb0e438261c869e3"
- }
- Frame {
- msec: 4448
- hash: "da4d64fd6b3ae7d49ee5c5c8d0117a37"
- }
- Frame {
- msec: 4464
- hash: "620dd1c3fc41ce657eac9d1a5b765fd4"
- }
- Frame {
- msec: 4480
- hash: "ff1c370bd1bf75a98ae7125e7dd5a9db"
- }
- Frame {
- msec: 4496
- hash: "59c6e4297109b5cc7c197749867dddae"
- }
- Frame {
- msec: 4512
- hash: "91b1719e86529d0c35a53a2d0a095dd6"
- }
- Frame {
- msec: 4528
- hash: "2994663d35c9eb453a27c1a1fa9aeeb8"
- }
- Frame {
- msec: 4544
- hash: "ae4ec37b9f6a00b3c9139e5cfe13d32e"
- }
- Frame {
- msec: 4560
- hash: "a98340236d1b65f47e88684168c1429d"
- }
- Frame {
- msec: 4576
- hash: "34848b483ea6a2bd412e29d26beb3ab0"
- }
- Frame {
- msec: 4592
- hash: "dd9bae0e2fca84b265d8cb59686ff88d"
- }
- Frame {
- msec: 4608
- hash: "18b6ef6f5913b0612b76e7b2e25073dd"
- }
- Frame {
- msec: 4624
- hash: "9398aab9478279aed1bc40c9378f8da4"
- }
- Frame {
- msec: 4640
- hash: "a297a304c12102f23bd1e0f0207e0df9"
- }
- Frame {
- msec: 4656
- hash: "091db9138cd6ae801ad857105a83c8f9"
- }
- Frame {
- msec: 4672
- hash: "253938ca4a4f13433ddd502eb94cb7cd"
- }
- Frame {
- msec: 4688
- hash: "6002df1793d290e4e31ee0c91c37bbe6"
- }
- Frame {
- msec: 4704
- hash: "212476fa1c3a52fb8eba03ec3aecdcd8"
- }
- Frame {
- msec: 4720
- hash: "80d4d8434d4e96a2bc23f5ed060d6ddc"
- }
- Frame {
- msec: 4736
- hash: "2d4add725f31a04558635ce4b73a758a"
- }
- Frame {
- msec: 4752
- hash: "57c06022ec1e502c4f49f43063c433e7"
- }
- Frame {
- msec: 4768
- hash: "8393e97990993f9d5f68ea65f8e4a2db"
- }
- Frame {
- msec: 4784
- hash: "9a1fcd96dffaf5c79ecc7f9427e02499"
- }
- Frame {
- msec: 4800
- image: "listview.4.png"
- }
- Frame {
- msec: 4816
- hash: "5ae722cf541e3453e73bbee57dc379e9"
- }
- Frame {
- msec: 4832
- hash: "fc7326c2e2e56d9c3036e8dfc2ea77a8"
- }
- Frame {
- msec: 4848
- hash: "f22a2a68cea158f333b0457025d75490"
- }
- Frame {
- msec: 4864
- hash: "d684c8aa9b835779080f170cafead40f"
- }
- Frame {
- msec: 4880
- hash: "dd451e5e421f929d015981bc7aeb8c66"
- }
- Frame {
- msec: 4896
- hash: "d066f228295db7f46520495167d3e946"
- }
- Frame {
- msec: 4912
- hash: "ebf640a457e3498bade3220aafa70331"
- }
- Frame {
- msec: 4928
- hash: "190f5b1f3ce9d200790c34c50bcc62c5"
- }
- Frame {
- msec: 4944
- hash: "9d4ad865246eb008afa40740b5c9a208"
- }
- Frame {
- msec: 4960
- hash: "81c8b2c0b4f9e74f24d328a1d9b40a9f"
- }
- Frame {
- msec: 4976
- hash: "24acc300307e71bee79bce8de76f56cb"
- }
- Frame {
- msec: 4992
- hash: "1f9d31f94cfce6f868bfcc8a104d2465"
- }
- Frame {
- msec: 5008
- hash: "7a3cab008dcb7a893ae30797b33df6f2"
- }
- Frame {
- msec: 5024
- hash: "38d561a2950434e59513439c7f1120ea"
- }
- Frame {
- msec: 5040
- hash: "8d34131faa15bc126bd4d9ef3be39ef5"
- }
- Frame {
- msec: 5056
- hash: "85d57ef15791b56deb537795dd87911e"
- }
- Frame {
- msec: 5072
- hash: "71e932169915a6c8c2cef0b22febf316"
- }
- Frame {
- msec: 5088
- hash: "8b3452981963aeebadc9ac2013150263"
- }
- Frame {
- msec: 5104
- hash: "a3fb8abecfeb48ba1cd1fd8f40896fa0"
- }
- Frame {
- msec: 5120
- hash: "f53ab533f6a58ae45139f3da4bf8ab4e"
- }
- Frame {
- msec: 5136
- hash: "9ec7012404f3c1c7795810dcee5acc3b"
- }
- Frame {
- msec: 5152
- hash: "99ca43bab532dd5d7566e596c65053ce"
- }
- Frame {
- msec: 5168
- hash: "0af83ad2416821cc230cd2856d1a3e39"
- }
- Frame {
- msec: 5184
- hash: "86fa23ddf2005bbf35238ae04ae554ac"
- }
- Frame {
- msec: 5200
- hash: "bb52a748f1d85dde410cfa4f24e3ed20"
- }
- Frame {
- msec: 5216
- hash: "898b96bc5ee9a3ac61764e5cd9af8cfb"
- }
- Frame {
- msec: 5232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5344
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3104
+ hash: "f1dfb47c5d4449e6cf7e2e6a2e86b1c5"
}
Frame {
- msec: 5360
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3120
+ hash: "26b31d08a1d50614771bec0458a2776b"
}
Frame {
- msec: 5376
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3136
+ hash: "dd017925e34f942c279ceb18b5e222da"
}
Frame {
- msec: 5392
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3152
+ hash: "be400b4ad1d9a1ccca56b8ff6b809272"
}
Frame {
- msec: 5408
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3168
+ hash: "4a4faa75155bb2c260f3a35675bd113e"
}
Frame {
- msec: 5424
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3184
+ hash: "3884c5d0d4c127876ba92a7b3a416339"
}
Frame {
- msec: 5440
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3200
+ hash: "b3d15196484410e24084b0f0d8fd683f"
}
Frame {
- msec: 5456
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3216
+ hash: "ed636ae433d185338ddbf7bffae731e1"
}
Frame {
- msec: 5472
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3232
+ hash: "0e1f352c163ad8fe852c2e4857881d2f"
}
Frame {
- msec: 5488
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3248
+ hash: "3c3b44481a6c2330a4a03076e35055f4"
}
Frame {
- msec: 5504
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3264
+ hash: "6ea3210a929774aea84a7beb4a784842"
}
Frame {
- msec: 5520
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3280
+ hash: "74dd747f9a64b19e5c5230c90ad3b642"
}
Frame {
- msec: 5536
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3296
+ hash: "c02be4ebefd19f4c5e864e8bbab7c13e"
}
Frame {
- msec: 5552
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3312
+ hash: "ce661af9085c833ec7d1fd66ebe67649"
}
Frame {
- msec: 5568
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3328
+ hash: "4bf921874cfdc1b7d14e3a110b9e70a1"
}
Frame {
- msec: 5584
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3344
+ hash: "f3e9cf8ac9e109e88d8c426fdcee28a9"
}
Frame {
- msec: 5600
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3360
+ hash: "aa718a37f7ccf655d176adb799b5ddfb"
}
Frame {
- msec: 5616
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3376
+ hash: "aa114a9676af508b4a106b21f7a2ed10"
}
Frame {
- msec: 5632
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3392
+ hash: "a5bbbaebb61b83384f5be82a9c3181ba"
}
Frame {
- msec: 5648
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3408
+ hash: "83deebf650b192de7c8a764d5379eeb4"
}
Frame {
- msec: 5664
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3424
+ hash: "5b433e1f5b97b39b6e86c837f0b91f2b"
}
Frame {
- msec: 5680
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3440
+ hash: "b5236be4e416f89a91eda7afbd75fc63"
}
Frame {
- msec: 5696
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3456
+ hash: "1713477f5484a1b35686f2f4bff27612"
}
Frame {
- msec: 5712
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3472
+ hash: "77f91f90744a23bbe172629f311d1a4e"
}
Frame {
- msec: 5728
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3488
+ hash: "3963753a90d6cbf74bc21c9d06f4227b"
}
Frame {
- msec: 5744
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3504
+ hash: "7f64804cd07a0ae63d0e3a1b9f8f8a84"
}
Frame {
- msec: 5760
- image: "listview.5.png"
+ msec: 3520
+ hash: "9ae6bc952da97239bfee88633637aeb7"
}
Frame {
- msec: 5776
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3536
+ hash: "ba34cd0d57d5d027ad6c2de102676399"
}
Frame {
- msec: 5792
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3552
+ hash: "c49632f9369aa901fcb702e76295c1e8"
}
Frame {
- msec: 5808
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3568
+ hash: "3adab59e06a635a033564dfc8edc4877"
}
Frame {
- msec: 5824
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3584
+ hash: "67643cbfb3c9864b7447a9a8e316b251"
}
Frame {
- msec: 5840
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3600
+ hash: "d04d288cbf89e1ad3bbf25ffebd7a382"
}
Frame {
- msec: 5856
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3616
+ hash: "e6c4d34b9b3de464ec0dcf8719b86313"
}
Frame {
- msec: 5872
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3632
+ hash: "f73462d0fe19cbbd771f9f78d7bc4384"
}
Frame {
- msec: 5888
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3648
+ hash: "6369f075a492240aee36eae8dcb2ace5"
}
Frame {
- msec: 5904
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3664
+ hash: "1e9424a3b93833f8ae855c5f7877679a"
}
Frame {
- msec: 5920
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3680
+ hash: "da274c1ae57d217ef4515326d32646b4"
}
Frame {
- msec: 5936
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3696
+ hash: "1cbe684ba95e6ef635873f746e942f3d"
}
Frame {
- msec: 5952
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3712
+ hash: "228e13c1d3dea6e666637de7cedd6dd4"
}
Frame {
- msec: 5968
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3728
+ hash: "a3f8fec49fb88652e9339b621ea8b972"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 111; y: 230
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 227
+ x: 487; y: 34
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 223
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 210
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "0076b55d3da4ca365688b6a2c984103f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 205
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "db846ad8e3200ca1fce36a38dc7beab8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "3cb6b25725b4285f9c096d595224c5ca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 180
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "1832e12fdf3b464b02b296e727b33694"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 173
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "6d18d2b5f65cbba4915d0725d24b40f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 109; y: 158
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 140
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "79bc7afc6b1aa5f8904b3e6d5d4a9389"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "4436f2d15304c839aacec486c1fd6d96"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "c3bffc7c95893cf9bbd8596208b7f657"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 105
- modifiers: 0
- sendToViewport: true
+ msec: 3744
+ hash: "7c3eb16bf4f66d2b9889c9d80aaae8b2"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 101; y: 100
+ x: 488; y: 40
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6144
- hash: "04231c2fdc02729aa34ed4e403dd373b"
+ msec: 3760
+ hash: "1825d33eb9ae94a63d334d93e07ce9af"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 101; y: 96
+ x: 489; y: 49
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6160
- hash: "392d75c4b372825e78366eb63a618170"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 87
- modifiers: 0
- sendToViewport: true
+ msec: 3776
+ hash: "306652a5a179cf23ee87c10571814f53"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 102; y: 83
+ x: 490; y: 55
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6176
- hash: "7f91f7bdb0cb62d600ac4aa573681fe3"
+ msec: 3792
+ hash: "3d3ba7cd968a1f91f7534cabd7cc034b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 102; y: 79
+ x: 490; y: 60
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6192
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 76
- modifiers: 0
- sendToViewport: true
+ msec: 3808
+ hash: "862f70151938a5d27db37a9f5dd53faa"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 103; y: 72
+ x: 491; y: 64
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6208
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 68
- modifiers: 0
- sendToViewport: true
+ msec: 3824
+ hash: "92b9283fa8b5642ce9bd14d875a12b75"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 105; y: 64
+ x: 491; y: 72
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6224
- hash: "c22da9ce54d04f51fb55da755753a509"
+ msec: 3840
+ image: "listview.3.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 105; y: 61
+ x: 493; y: 93
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6240
- hash: "59dbd5216847a62f60a1d0701a15bb62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 57
- modifiers: 0
- sendToViewport: true
+ msec: 3856
+ hash: "58e61d0a4f397c5a2b137d6a6e85d99b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 106; y: 53
+ x: 493; y: 123
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6256
- hash: "bbfc902db6e6ca253afb1c90306b2a63"
+ msec: 3872
+ hash: "6cdd764ee39789307e5e313bfbbb7765"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 106; y: 47
+ x: 494; y: 141
modifiers: 0
sendToViewport: true
}
@@ -1948,311 +1432,131 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 106; y: 47
+ x: 494; y: 141
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6272
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6288
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6304
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6320
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6336
- hash: "2a1a1f9239a6ccb308e51796f9b0bb89"
- }
- Frame {
- msec: 6352
- hash: "3c1b44201616b8271023bf05a3f3f0f7"
- }
- Frame {
- msec: 6368
- hash: "87afcef49db8b2b547e85e834f8ec304"
- }
- Frame {
- msec: 6384
- hash: "290081b4b1272ef09ec9964c128e61b5"
- }
- Frame {
- msec: 6400
- hash: "19bb3b23ee4b14a5f0a313106ef7c8c1"
- }
- Frame {
- msec: 6416
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Frame {
- msec: 6432
- hash: "832d2aefbcaf776f35039be527d367c5"
- }
- Frame {
- msec: 6448
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Frame {
- msec: 6464
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6480
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6496
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6512
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6528
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6544
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6560
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6576
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6592
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6608
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6624
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6640
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6656
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6672
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6688
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6704
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6720
- image: "listview.6.png"
- }
- Frame {
- msec: 6736
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6752
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6768
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6784
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6800
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6816
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6832
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6848
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6864
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6880
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6896
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6912
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6928
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6944
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6960
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6976
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6992
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3888
+ hash: "a88656d49e4636b18c4f6f4a0ab943d6"
}
Frame {
- msec: 7008
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3904
+ hash: "f1ec9a65d5f8d2020db1b70bcd419417"
}
Frame {
- msec: 7024
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3920
+ hash: "ca7d3d7d26445d13acd7fe4a2c5d1d4d"
}
Frame {
- msec: 7040
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3936
+ hash: "90016f51541a15ba4b6265f6843a2998"
}
Frame {
- msec: 7056
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3952
+ hash: "bdb992552a5c5707ddb372631f72e6a3"
}
Frame {
- msec: 7072
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3968
+ hash: "af69ed47f0f40648d55af10c87866805"
}
Frame {
- msec: 7088
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3984
+ hash: "33e77562bdf839ca1e969b918d90a07b"
}
Frame {
- msec: 7104
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4000
+ hash: "2001b5ca444808a79c49adc9d03c960e"
}
Frame {
- msec: 7120
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4016
+ hash: "e4186283e5fe0c1efb29eca6f59e9079"
}
Frame {
- msec: 7136
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4032
+ hash: "dab82d0bbba66df3297712b42f74f25a"
}
Frame {
- msec: 7152
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4048
+ hash: "b180ad3acdfd736276ef4d1de040bb55"
}
Frame {
- msec: 7168
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4064
+ hash: "577445b0e4d6f8079830c2b87ce5829d"
}
Frame {
- msec: 7184
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4080
+ hash: "45fffe51376abef4cb28842b392ab0b7"
}
Frame {
- msec: 7200
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4096
+ hash: "fc14e3b2d16e1f078d223876ef71c81e"
}
Frame {
- msec: 7216
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4112
+ hash: "4ef2b65280a00a6a4e66185f41479aef"
}
Frame {
- msec: 7232
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4128
+ hash: "131181ce7ff2f4d4e69823fcb7a20755"
}
Frame {
- msec: 7248
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4144
+ hash: "8e6db058e96dad9c4963b881083ab9bf"
}
Frame {
- msec: 7264
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4160
+ hash: "e2d407b6dff40625790d4fd9e599b374"
}
Frame {
- msec: 7280
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4176
+ hash: "631fe708fdcb1e4f4ea89b10da5db623"
}
Frame {
- msec: 7296
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4192
+ hash: "e11831f37a3a1da78cbdc7604ddccd68"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 519; y: 276
+ x: 491; y: 193
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7312
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4208
+ hash: "c2dccc4e890b2302edd413dcdb87b50b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 275
+ x: 491; y: 189
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7328
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4224
+ hash: "b4f6a6650dd779c8ad8696c23f44411a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 274
+ x: 493; y: 187
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7344
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4240
+ hash: "ad913e53e63c030ffdf4560766722760"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 273
+ x: 494; y: 182
modifiers: 0
sendToViewport: true
}
@@ -2260,43 +1564,43 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 518; y: 272
+ x: 495; y: 180
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7360
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4256
+ hash: "ef31f8a4d5bde5a2e308d19ee6d5e759"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 271
+ x: 496; y: 174
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7376
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4272
+ hash: "3ba07527f66e8bea5a8fb7647b0b4f3f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 268
+ x: 496; y: 168
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7392
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4288
+ hash: "70e5fe656f5fd843383964825690b678"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 266
+ x: 497; y: 159
modifiers: 0
sendToViewport: true
}
@@ -2304,776 +1608,620 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 518; y: 265
+ x: 497; y: 156
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7408
- hash: "9047f597b9e59ca652c172338bed6ef9"
+ msec: 4304
+ hash: "b7d8738be4cd6caa63dbecdb0f810a2f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 262
+ x: 497; y: 147
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7424
- hash: "87476f78daecd6bb49e8d6e673d28100"
+ msec: 4320
+ hash: "d6312191f9d7bbddc07f9253d8a93469"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 260
+ x: 497; y: 139
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7440
- hash: "6bfd895c6b7d97e4102eb26608cdfeca"
+ msec: 4336
+ hash: "b182da64886cf4f444296e5fde26701e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 254
+ x: 497; y: 128
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7456
- hash: "e4c2b75beaee54a5781a5acbeb37ea64"
+ msec: 4352
+ hash: "ebefef14b6fb990e0c6900884528bbd3"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 249
+ x: 497; y: 120
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7472
- hash: "d5e816768e9c3db0631416bd86b1b461"
+ msec: 4368
+ hash: "9a3451ed091b1bb6b975a9c5506b1ea4"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 243
+ x: 497; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7488
- hash: "22cb512b302afc6c3c9dec1d47b3bf03"
+ msec: 4384
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 237
+ x: 498; y: 114
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7504
- hash: "a7e458e007954bd908cf27a1841d36ea"
+ msec: 4400
+ hash: "eaaf9ea1d7fcf4a2a9dd58b1b5bb3cae"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 231
+ x: 498; y: 112
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7520
- hash: "0f9fa53b247f72e9a8ff6201b188b410"
+ msec: 4416
+ hash: "7ca8e3d76cf913d85f84f0b96acde829"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 225
+ x: 498; y: 110
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7536
- hash: "c986ea3853dd33f7f2b5629f67429423"
+ msec: 4432
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 219
+ x: 498; y: 109
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7552
- hash: "114ffaa5cf38e4884a1d477884541b44"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 215
+ x: 498; y: 108
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7568
- hash: "7cdf1bb327484618909ded5411aca4ec"
+ msec: 4448
+ hash: "d032b257259810b4fe514c63ca5c9e4b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 208
+ x: 498; y: 106
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7584
- hash: "d4c005194ed510f5d54a811176943dc2"
+ msec: 4464
+ hash: "568f6a57e6f1644b0dc245d03a1d7b85"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 520; y: 202
+ x: 499; y: 105
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7600
- hash: "3103351bc83675c877fb6dcd1a6ddbbc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 196
- modifiers: 0
- sendToViewport: true
+ msec: 4480
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7616
- hash: "2c13ddda8d89501c9487b83f8b115570"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 189
- modifiers: 0
- sendToViewport: true
+ msec: 4496
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7632
- hash: "476834b6d88077f9983ed358c06bd0c3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 185
- modifiers: 0
- sendToViewport: true
+ msec: 4512
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7648
- hash: "cc2148c6a7ba0bbe6ceea848b7e48621"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 177
- modifiers: 0
- sendToViewport: true
+ msec: 4528
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7664
- hash: "5b8824848dd1de3632b26e04e95b5899"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 169
- modifiers: 0
- sendToViewport: true
+ msec: 4544
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7680
- image: "listview.7.png"
+ msec: 4560
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 160
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4576
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7696
- hash: "d0a4a8b631e3494043f261fb8da67938"
+ msec: 4592
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 156
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4608
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7712
- hash: "985111215c3959a45b293879af701318"
+ msec: 4624
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 147
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4640
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7728
- hash: "ed5917a3fe95777f2efdaa154af0c489"
+ msec: 4656
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 144
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4672
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7744
- hash: "6fa9de2983f0e30cb96c035c28757b93"
+ msec: 4688
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 137
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4704
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7760
- hash: "fd568c7d27618a71b0f0882ca57b685b"
+ msec: 4720
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 130
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4736
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7776
- hash: "f5b941f5741a9a78122605576809c395"
+ msec: 4752
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 124
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4768
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7792
- hash: "ffc96a85d7dbbed257b69a0c735e21b8"
+ msec: 4784
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 122
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4800
+ image: "listview.4.png"
}
Frame {
- msec: 7808
- hash: "cfb6335c5449554e631d6e3106ea8a00"
+ msec: 4816
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 116
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4832
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7824
- hash: "ff9786e85ee8af6177ac8e5cc1307462"
+ msec: 4848
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 111
+ x: 499; y: 106
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7840
- hash: "3140b49dfee8e690b5c778044385e107"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 106
+ x: 498; y: 107
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7856
- hash: "0d899af24685a9998a6b961023286fde"
+ msec: 4864
+ hash: "d48ecbd0661e08b2117fe2fd96ffeb2c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 104
+ x: 497; y: 110
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7872
- hash: "99ee1e8803c05e546a721b0c9ee39499"
+ msec: 4880
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 101
+ x: 496; y: 113
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7888
- hash: "96e7da2f895500a786ed36cb295e9003"
+ msec: 4896
+ hash: "5b12e9d17d9d464b055601db9cf0da44"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 99
+ x: 495; y: 115
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7904
- hash: "cd369fc5dc31814208e56cf7cd0decea"
+ msec: 4912
+ hash: "25333e1f0cc9cfc664fd7369af544c06"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 97
+ x: 494; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7920
- hash: "5fee72994b65a45b4900a3073f86a3e1"
- }
- Frame {
- msec: 7936
- hash: "9a2f8a65d842b8f92998e6411f7cd53c"
+ msec: 4928
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7952
- hash: "2848d69017ce71ae101ccdfa7c67f933"
+ msec: 4944
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7968
- hash: "6568aa88e81f988f65da435df7166167"
+ msec: 4960
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7984
- hash: "d5f15ee08a2d7667786757a378a7a7f4"
+ msec: 4976
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8000
- hash: "9b566bd02a561b32d1a4c1ec99c2e2c3"
+ msec: 4992
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8016
- hash: "580419e1c9e91046547d913f6b8790a4"
+ msec: 5008
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8032
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5024
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8048
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5040
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8064
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5056
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 521; y: 97
+ x: 494; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 8080
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8096
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8112
- hash: "83b91a371d682a501bc3a3fceabe4f8c"
- }
- Frame {
- msec: 8128
- hash: "798b1dbfa0cce362213f426e2c60ac0e"
- }
- Frame {
- msec: 8144
- hash: "d71b6a693c430a618c23413cb65bb320"
- }
- Frame {
- msec: 8160
- hash: "2baae394390da39447a67151bc503d65"
- }
- Frame {
- msec: 8176
- hash: "06688b05c61a7b862d39534207a8adab"
- }
- Frame {
- msec: 8192
- hash: "a1d3042e16709817906dcdc673ee52c7"
- }
- Frame {
- msec: 8208
- hash: "236dd41feac1b1a8a4bd7911bb184da2"
- }
- Frame {
- msec: 8224
- hash: "f3ec821bba1d32e90bdab0e85c07d7d8"
- }
- Frame {
- msec: 8240
- hash: "e328c35adf7ffc3d7e3af97e798ec8a5"
- }
- Frame {
- msec: 8256
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8272
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8288
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8304
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8320
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8336
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8352
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5072
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8368
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5088
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8384
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5104
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8400
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5120
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8416
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5136
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8432
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5152
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8448
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5168
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8464
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5184
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8480
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5200
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8496
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5216
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8512
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5232
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8528
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5248
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8544
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5264
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8560
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5280
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8576
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5296
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8592
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5312
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8608
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5328
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8624
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5344
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8640
- image: "listview.8.png"
+ msec: 5360
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8656
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5376
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8672
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5392
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8688
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5408
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8704
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5424
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8720
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5440
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8736
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5456
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8752
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5472
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8768
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5488
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8784
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5504
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8800
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5520
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8816
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5536
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8832
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5552
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8848
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5568
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8864
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5584
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8880
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5600
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8896
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5616
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8912
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5632
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8928
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5648
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8944
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5664
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8960
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5680
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8976
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5696
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8992
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5712
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9008
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5728
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9024
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5744
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9040
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5760
+ image: "listview.5.png"
}
Frame {
- msec: 9056
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5776
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9072
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5792
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9088
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5808
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9104
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5824
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9120
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5840
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9136
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5856
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9152
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5872
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9168
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5888
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9184
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5904
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9200
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5920
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9216
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5936
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9232
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5952
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9248
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5968
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9264
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5984
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9280
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6000
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9296
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6016
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9312
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6032
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9328
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6048
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9344
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6064
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9360
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6080
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9376
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6096
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9392
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6112
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9408
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6128
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml b/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml
new file mode 100644
index 0000000000..a796be73ab
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml
@@ -0,0 +1,31 @@
+import QtQuick 1.0
+
+Item {
+ id: document
+ width: 200; height: 200
+
+ ListView {
+ id: serviceListView
+ anchors.fill: parent
+ model: 100
+
+ preferredHighlightBegin: 90
+ preferredHighlightEnd: 90
+
+ highlightRangeMode: ListView.StrictlyEnforceRange
+
+ delegate: Component {
+ Item {
+ height: 15 + ((serviceListView.currentIndex == index) ? 20 : 0)
+ width: 200
+ Rectangle { width: 180; height: parent.height - 4; x: 10; y: 2; color: "red" }
+ }
+ }
+ }
+
+ Rectangle {
+ y: 90; width: 200; height: 35
+ border.color: "black"
+ color: "transparent"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/ListView/listview.qml b/tests/auto/declarative/qmlvisual/ListView/listview.qml
index 341311df07..6171c75a6c 100644
--- a/tests/auto/declarative/qmlvisual/ListView/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/listview.qml
@@ -1,6 +1,8 @@
import QtQuick 1.0
Rectangle {
+ id: root
+ property int current: 0
width: 600; height: 300; color: "white"
ListModel {
@@ -49,14 +51,16 @@ Rectangle {
Component {
id: myHighlight
- Rectangle { color: "black" }
+ Rectangle { width: 200; height: 50; color: "black" }
}
ListView {
id: list1
width: 200; height: parent.height
model: myModel; delegate: myDelegate
- highlight: myHighlight; currentIndex: list3.currentIndex
+ highlight: myHighlight
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
focus: true
}
ListView {
@@ -66,13 +70,14 @@ Rectangle {
preferredHighlightBegin: 80
preferredHighlightEnd: 220
highlightRangeMode: "ApplyRange"
- currentIndex: list1.currentIndex
+ currentIndex: root.current
}
ListView {
id: list3
x: 400; width: 200; height: parent.height
model: myModel; delegate: myDelegate; highlight: myHighlight
- currentIndex: list1.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
preferredHighlightBegin: 125
preferredHighlightEnd: 125
highlightRangeMode: "StrictlyEnforceRange"
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
index c59b816768..f94e879839 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
index d4dbc7049a..521e818775 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png
deleted file mode 100644
index ed9d3453cb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png
deleted file mode 100644
index ed9d3453cb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png
deleted file mode 100644
index 45ee400008..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png
deleted file mode 100644
index c73e1586b7..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png
deleted file mode 100644
index e2fff6d6e3..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png
deleted file mode 100644
index d7a13df741..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png
deleted file mode 100644
index d3a2650dfb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
index a09dd286c3..645abf816f 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png
deleted file mode 100644
index 600462a976..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png
deleted file mode 100644
index 6defca0653..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png
deleted file mode 100644
index 91967e128f..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
index d099a79317..517331abed 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
index 385efc8454..806063fd26 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
index 25a7c3c2ad..8dfcf7bad8 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
deleted file mode 100644
index 25a7c3c2ad..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png
deleted file mode 100644
index 7a24f51fbd..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png
deleted file mode 100644
index 7a24f51fbd..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png
deleted file mode 100644
index 45ee400008..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
index 08cb46bcc7..18043827ba 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
@@ -6,239 +6,255 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 32
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 48
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 64
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 80
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 96
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 112
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 128
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 144
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 160
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 176
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 192
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 208
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 224
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 240
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 256
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 272
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 288
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 304
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 320
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 336
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 352
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 368
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 384
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 400
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 416
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 432
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 448
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 464
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 480
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 496
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 512
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 528
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 544
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 560
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 576
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 592
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 608
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 624
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 640
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 656
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 672
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 688
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 704
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 720
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 736
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 752
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 768
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 784
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 26; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 816
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 832
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 848
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 26; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 864
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 880
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ae75402b2fa678a20c32d743e2b297a0"
}
Frame {
msec: 896
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "76a9721ada8280925ff32e7207c01944"
}
Frame {
msec: 912
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "87fb13adce4e2af05a7ad2f8cd18bad9"
}
Frame {
msec: 928
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "cd7be3a5b9bae876998770dc52dbcd86"
}
Frame {
msec: 944
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "3ba0b907dad0bfa9b20337d41661030b"
}
Frame {
msec: 960
@@ -246,319 +262,271 @@ VisualTest {
}
Frame {
msec: 976
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "856cbf02e052f9b08a02608128af818d"
}
Frame {
msec: 992
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "5af677254d12dc96b82cde90c5a65140"
}
Frame {
msec: 1008
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "72cb4e75acb87de293a3cb1872eb946b"
}
Frame {
msec: 1024
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "9b057090349c0c544036a33a60710920"
}
Frame {
msec: 1040
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ae19cf81092e75979b6471c0b05541cf"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1056
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "0f42c19fee319bc8c27a89e9692c5cd9"
}
Frame {
msec: 1072
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "865e19e35f361b08e6e844aa88d149eb"
}
Frame {
msec: 1088
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d5fcf7bd78da8918a3512a76189c7202"
}
Frame {
msec: 1104
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d2a6b42c2a3f7ca9eb35acc47f1faaf6"
}
Frame {
msec: 1120
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "1388e856eb04fc24091c94406f4b5118"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 48; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1136
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "1388e856eb04fc24091c94406f4b5118"
}
Frame {
msec: 1152
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d529b6dcf510392488b370f6cfb87b3c"
}
Frame {
msec: 1168
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "a50b1f2869c95f97a194a95581fa7be9"
}
Frame {
msec: 1184
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "4bbee959f95548c3e76fb60ad363c184"
}
Frame {
msec: 1200
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "5ec0185f4479377579822f92eb7f375a"
}
Frame {
msec: 1216
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "263d09b9447d942c6c048139164d4427"
}
Frame {
msec: 1232
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "291cc81fc3f82bca46db4e4403f39d49"
}
Frame {
msec: 1248
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "c212f98ededa9ce7fc0fec697116a8e2"
}
Frame {
msec: 1264
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "4309ef22d0c36d28a462ab2d4bf2cabd"
}
Frame {
msec: 1280
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "f899f861c569416708c6754d821239e9"
}
Frame {
msec: 1296
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ed5ec237020ff06f258ce6e1b31e5eb8"
}
Frame {
msec: 1312
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "98f3fe1c211d4f7bdc47b4a485226f14"
}
Frame {
msec: 1328
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "40e376d37a85d225c46579b8f7c27159"
}
Frame {
msec: 1344
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "cc8a178bf0cfc285185d17b37722bf41"
}
Frame {
msec: 1360
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "b612439873d0eeb015d31cccd8e5a436"
}
Frame {
msec: 1376
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 57; y: 164
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1392
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "48c436165872098b474d0c691df11473"
}
Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 57; y: 162
+ x: 44; y: 50
modifiers: 0
sendToViewport: true
}
Frame {
msec: 1408
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 57; y: 159
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 57; y: 156
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1424
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 56; y: 152
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 56; y: 147
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1440
- hash: "87b7cacfb2d9e8ad916e331b2cf1f13e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 55; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 54; y: 133
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1456
- hash: "34290c1435c1a96d08152479d2d1334e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 54; y: 126
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 54; y: 126
+ x: 44; y: 50
modifiers: 0
sendToViewport: true
}
Frame {
msec: 1472
- hash: "ef5fb09ec8fb4b0d97c864618d6f6231"
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1488
- hash: "d5b4c2e1d4b0bc877c99739a67b4a4fb"
+ hash: "33cb50c11326c0589c7cc43ba6193e03"
}
Frame {
msec: 1504
- hash: "a3623a3f253590d51ee03b6849e88edb"
+ hash: "3f7e7534ccd7105762c78afab5ab997d"
}
Frame {
msec: 1520
- hash: "4c1115f1041629b7c37cf4ae001fd7d3"
+ hash: "53b23d3eb2aaa1b21e4abaf9c0bfc7f2"
}
Frame {
msec: 1536
- hash: "845bb3d1f52bee4a469fb12d6875a323"
+ hash: "609b37b12154291a28961210e81049fb"
}
Frame {
msec: 1552
- hash: "eb08b5a671149005dbafc8507bb78b18"
+ hash: "33cc6e17d087c251381ecf1b4cb9887c"
}
Frame {
msec: 1568
- hash: "16744a5b90b29954faf0710010ac6369"
+ hash: "dcb3e716035ca3f43895fda99c27e0d8"
}
Frame {
msec: 1584
- hash: "322bbe367fbbf0bf07f9153da652a5fc"
+ hash: "56bb753199873fac4ed9f30682bd1a3c"
}
Frame {
msec: 1600
- hash: "257769f7c3e24bb2d0cd674dfbe42913"
+ hash: "8b744c5cbf6154b73bd6c4fe6b087f0a"
}
Frame {
msec: 1616
- hash: "8e299cbcaeae4d53d0fc05e03d36e0d9"
+ hash: "f2d5996d7fd5391a4d96493e9ef6a637"
}
Frame {
msec: 1632
- hash: "f3fb7f30336045abb4557247aab5bde1"
+ hash: "4407a05b64c68d43b29124df1f0d8f44"
}
Frame {
msec: 1648
- hash: "468400fb4e9bfa454ea00f19aa5d77b5"
+ hash: "b71e43a8f7aa7a58cea80629b782a972"
}
Frame {
msec: 1664
- hash: "429cc820ada7a515b2cb71f133320949"
+ hash: "cca961a04dfdf9da8282219f2022fd2e"
}
Frame {
msec: 1680
- hash: "721ec7594d8f815e5648eb8d570d1179"
+ hash: "f3349a7ae7d7a97a6665476244d46dd6"
}
Frame {
msec: 1696
- hash: "9bc4105a0456c36738c435323e690db1"
+ hash: "78fc6123a10c027faa08dc2ff8318acc"
}
Frame {
msec: 1712
- hash: "e54a84718dbdc45dd814089051772585"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1728
- hash: "2c969450ede6b6ea7e0e68ee54d02aaa"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1744
- hash: "c2015dd1d4bd223a7fe1df03027af2f3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1760
- hash: "74108fedfb0967adea181893834bcd9b"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1776
- hash: "b04a22f1cfde6ede57117992cd97dc1c"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1792
- hash: "271d71cb03dd38100812466a973b79ef"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1808
- hash: "130709eecd8eca395085020a83e7553a"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1824
- hash: "a0e5e187ed5245fd766803d266195e6b"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1840
- hash: "d29c145f3ba39a7c2c6ac54b27f9cea1"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1856
- hash: "6e41349b4adb6e37a2f9f2482c0aa5b1"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1872
- hash: "c02c52d3c87c6befb65f3bf392981cd5"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1888
- hash: "ec48d113c8468bd1e1b465e248eecaee"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1904
- hash: "a2c9b917d1f0cff0e088d3b624d9eeb8"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1920
@@ -566,255 +534,287 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "c4d4f8a351316b4a33f42f5fb030f304"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1952
- hash: "1baee6be1da687309d84a992e430c915"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1968
- hash: "4245f02817f7a674c34c581cbd9e1181"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1984
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 76
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2000
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 2016
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 2032
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 76
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2048
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9f94c38547da1855e4bd3ae498aed705"
}
Frame {
msec: 2064
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "783f73da3736a2c554c8d749ce0522c0"
}
Frame {
msec: 2080
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9a0e1c2bed75874381e4b1ce275d0f68"
}
Frame {
msec: 2096
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "e2ce85192977e6422c89190b3cea4518"
}
Frame {
msec: 2112
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "ba9c80ff0ed723bca702cb6b4c6dfb76"
}
Frame {
msec: 2128
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "7e194db1b86bc7346248d2acf34af286"
}
Frame {
msec: 2144
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "cdd013bb8ee5880b16449efc99dd3ae5"
}
Frame {
msec: 2160
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "3ef7d0fb43c2a1c1398f1152573974e0"
}
Frame {
msec: 2176
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "176d1a86257cc85315dac4ecfe33f543"
}
Frame {
msec: 2192
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6def1267e573217a19e7b8e2cf6d7b6c"
}
Frame {
msec: 2208
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "f679db34d99e24cda2e41c2afeaf551e"
}
Frame {
msec: 2224
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "54a27193c5e59cd7220b65d8fbbd9061"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 112; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2240
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "171db3d0bf50062a0d7edd8e4c174024"
}
Frame {
msec: 2256
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9a7d293dc455e1ef0d18f44c3db7eed7"
}
Frame {
msec: 2272
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "83bef2586d5abeb0ac8765d62135d308"
}
Frame {
msec: 2288
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "56fed2e01cc8a6b9ccbf15731d4e533b"
+ }
+ Frame {
+ msec: 2304
+ hash: "10174f2574c51155b8ee77ae545ac76d"
}
Mouse {
- type: 2
+ type: 3
button: 1
- buttons: 1
- x: 70; y: 89
+ buttons: 0
+ x: 112; y: 79
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2304
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
- }
- Frame {
msec: 2320
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "107928ffebd936080325a1f4e39a0ac0"
}
Frame {
msec: 2336
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "107928ffebd936080325a1f4e39a0ac0"
}
Frame {
msec: 2352
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 70; y: 89
- modifiers: 0
- sendToViewport: true
+ hash: "d46e040f85295e66d8b22185be553d3e"
}
Frame {
msec: 2368
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "3368a34c316486a779d62d143588b425"
}
Frame {
msec: 2384
- hash: "3b9a75225adddb01e92286463e15bf98"
+ hash: "8f4cd4223c05e1b06a688c5eabc2a854"
}
Frame {
msec: 2400
- hash: "32f99602756898b4ec607d4124b5120f"
+ hash: "b576bf54b4bae38e8af6d922b3c73463"
}
Frame {
msec: 2416
- hash: "60007f14752d2d87ba6e335ad596f1ad"
+ hash: "a3a238f5bf182ec6afc398569fd51ac7"
}
Frame {
msec: 2432
- hash: "dcfad2407f53f83964fa7be762a137bd"
+ hash: "a31329ba054a6fe144c030cffb5bd401"
}
Frame {
msec: 2448
- hash: "fcc1a30a33bec046868734014132eb70"
+ hash: "0a4b96a93e62359b6003daa703af1a5f"
}
Frame {
msec: 2464
- hash: "f60592829a2765b3cd3a0cecb9c45426"
+ hash: "a16f126d874d957b879f45d36e88df34"
}
Frame {
msec: 2480
- hash: "a0e26063acd1b53b5eeeb31187f38336"
+ hash: "89735c5b14f075b8f65533d16b3f714a"
}
Frame {
msec: 2496
- hash: "d7f3e776038bd479db292bcba3a65fc7"
+ hash: "5d67dac0c4d2cf60e4cb717f4e4bc25f"
}
Frame {
msec: 2512
- hash: "4af31954235ab8a7cf8462eaa64d7dda"
+ hash: "dbfcc86e621a140466dd2a9215087e81"
}
Frame {
msec: 2528
- hash: "aff3f287c07f546e0d3e9e68731d82fe"
+ hash: "9f8dfa788048466dc07463e83d0377ff"
}
Frame {
msec: 2544
- hash: "75fbc4e26466e8a1f66503addfcbb525"
+ hash: "021e1edec94a1909790a4acdbbc71fd8"
}
Frame {
msec: 2560
- hash: "cb4c91f725ec46dd066475efc2bc2d65"
+ hash: "f16be9ff4aba07708d469d6cfb80f1c2"
}
Frame {
msec: 2576
- hash: "106434203ccc2fd8246c56520095a473"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2592
- hash: "129ced0e7fc406e81b1ced72397adc5c"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2608
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2624
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2640
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2656
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2672
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2688
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2704
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2720
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2736
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 116; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2752
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2768
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2784
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2800
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 116; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2816
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a0aa5583886efc9bb0571bbb02fdb051"
}
Frame {
msec: 2832
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a0aa5583886efc9bb0571bbb02fdb051"
}
Frame {
msec: 2848
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "edec25fdce2e05c0456434be4b8fad84"
}
Frame {
msec: 2864
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "0c2061fc908c98980404b9e08acdc2f2"
}
Frame {
msec: 2880
@@ -822,311 +822,295 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "80eba5bc28e88ab12e195555f76bef1c"
}
Frame {
msec: 2912
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "3a80012f6ca448fc30db70e9bcb23ddc"
}
Frame {
msec: 2928
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "22a68838e9f6039e782facce7cfe0c9b"
}
Frame {
msec: 2944
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "243fcc73e46db96ab6a91748adeff1a9"
}
Frame {
msec: 2960
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "433bf03a821da5641909785b4c22cb55"
}
Frame {
msec: 2976
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "66be8aa73b1e7173d899df3c0b9072a6"
}
Frame {
msec: 2992
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "d7e563c1a1db45865794351daea5eb08"
}
Frame {
msec: 3008
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "cc4345c2d4d0d7748c352a22f63030cb"
}
Frame {
msec: 3024
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "382172adf3a339cac16a3e185ef4bb05"
}
Frame {
msec: 3040
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "6019a3eac1825acdeac24d39c898d506"
}
Frame {
msec: 3056
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "ac4b9427592a6fe7585625de8d1bff96"
}
Frame {
msec: 3072
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3088
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3104
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3120
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3136
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3152
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3168
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 80; y: 189
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3184
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3200
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3216
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3232
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 80; y: 189
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3248
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3264
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a623e09cddb4304db658e30aef433dd8"
}
Frame {
msec: 3280
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "4dce74fbb6649138a6ea6c288818fda5"
}
Frame {
msec: 3296
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "2356d6d1f8481cf60542126f197ee0b1"
}
Frame {
msec: 3312
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7553601e70a7ccc3c60306fcf4999bed"
}
Frame {
msec: 3328
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "bc86afd210d18dc68b433d70705b6603"
}
Frame {
msec: 3344
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "8538d87120dd14958f92b81ceff304a3"
}
Frame {
msec: 3360
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "2a8d299ff16589069d493bbab2ceda53"
}
Frame {
msec: 3376
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "9f92b838c36e46d61a78f9013f04b580"
}
Frame {
msec: 3392
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 49; y: 162
- modifiers: 0
- sendToViewport: true
+ hash: "7e6710b5491d5b9ad9a84691eadaa66c"
}
Frame {
msec: 3408
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1b165e39ff01747d5e9ad0d8769c8ee9"
}
Frame {
msec: 3424
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 49; y: 161
- modifiers: 0
- sendToViewport: true
+ hash: "f78ad1eeb030eb58f8140da041acf4cd"
}
Frame {
msec: 3440
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 49; y: 159
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 48; y: 157
- modifiers: 0
- sendToViewport: true
+ hash: "f009dcb6b085ae38a45206f35ab37754"
}
Frame {
msec: 3456
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "371dd67bf5a16ea085a256dd2e2583f9"
}
Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 48; y: 153
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 48; y: 149
+ x: 75; y: 164
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3472
- hash: "1c84452b0ce90ae6f136f5bcce408220"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 50; y: 144
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 50; y: 138
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 50; y: 138
- modifiers: 0
- sendToViewport: true
+ hash: "9a0606cd6930b3f992f0533f3f6a0f7a"
}
Frame {
msec: 3488
- hash: "4c77d402b995297dadb5e671f071605f"
+ hash: "1d538ccb1874fe2ddb410d48ca668d74"
}
Frame {
msec: 3504
- hash: "babd28626a81bd48b39b56f8da69c360"
+ hash: "71e08cb1eced66950e5893306b3043e7"
}
Frame {
msec: 3520
- hash: "71654a76f9b94fafaf3767003598fb96"
+ hash: "71e08cb1eced66950e5893306b3043e7"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 75; y: 164
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3536
- hash: "87ad69a660e072e71f940db93be3a949"
+ hash: "71e08cb1eced66950e5893306b3043e7"
}
Frame {
msec: 3552
- hash: "147f7f3f1913bc5ac5889c1a4daa8026"
+ hash: "2da0d9bb50d97ca78ee56f3c528a7db5"
}
Frame {
msec: 3568
- hash: "9c26b3ad7a5dacd56028afa7bf4deef6"
+ hash: "7f5105df4d41a6739ce13d69451d6059"
}
Frame {
msec: 3584
- hash: "18611ff90e5af36c9b6396c3df4cd646"
+ hash: "8d171773d643ca5bfb095208efe841a9"
}
Frame {
msec: 3600
- hash: "84701fd73ed8e1951bd4c806b70654ac"
+ hash: "8aa93bddb58d0533b03d2b7fc6efb839"
}
Frame {
msec: 3616
- hash: "42b40f1683beb23f4fe5ade066c0626f"
+ hash: "26e2bcff7c3de9995e29fd8a06db4139"
}
Frame {
msec: 3632
- hash: "8c6aeefaa6f36cdffcf7bdb1597c6fbe"
+ hash: "94fe4626d8f978649bf200bf79885ec0"
}
Frame {
msec: 3648
- hash: "731cea2e0d8fb8aac6ae919b23b89b87"
+ hash: "61e92064d9da2db6ea0adfdffaad81f6"
}
Frame {
msec: 3664
- hash: "d4dc70a8e09e7ec03e7c1f5123b7abef"
+ hash: "54d5845c08eb5cc9263c84146fd9fcd2"
}
Frame {
msec: 3680
- hash: "5246e2f52aa104e8030eef105a5b5a7c"
+ hash: "d10a128980a46713093899696110d81e"
}
Frame {
msec: 3696
- hash: "a9c3d0034c09ba81d19d57ff550d7b4f"
+ hash: "ff6301533f4fb29194f20a4520824030"
}
Frame {
msec: 3712
- hash: "e9092b1be19273f1f29912cd493dd238"
+ hash: "598b6e7c6c6c0de77b4793d1f68beea6"
}
Frame {
msec: 3728
- hash: "c2b19c7b818c94e932558676a026f049"
+ hash: "e3d123e179a6930e1bc1864095621607"
}
Frame {
msec: 3744
- hash: "6627c4d6daab8e6500dbd0d921bc1ebd"
+ hash: "b1bb4c350969f579630680803e622662"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 72; y: 147
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3760
- hash: "45c584ca18e8bfd6aa495c16a977662a"
+ hash: "3dd276bb96dd3a5ef96095e0b8251c05"
}
Frame {
msec: 3776
- hash: "de79039a8bb623f7d48afe1549ae23e0"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3792
- hash: "076d29278466038071095093266553f5"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3808
- hash: "73ed162dc5f9983bf22446f63691f7e4"
+ hash: "144402c1397313fb5d13b4972bb3a450"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 72; y: 146
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3824
- hash: "4cc3648635884a69191f0cfe2051f621"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3840
@@ -1134,241 +1118,197 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "126b19793c902cf8848824fe4a38fe0c"
}
Frame {
msec: 3872
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "1f7a173f70f04adcc28481cfa40ad82e"
}
Frame {
msec: 3888
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "5189e3a7f4c93d6095d526ee4583adea"
}
Frame {
msec: 3904
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "03ef5fa51d7455e58c34c52be2b2625b"
}
Frame {
msec: 3920
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "6589088e4efab3426d5b3c08f885fcc4"
}
Frame {
msec: 3936
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "35593c99aa3f7040efe6420ce90426f7"
}
Frame {
msec: 3952
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "61e13ba4ed7251e607ae299841b55fea"
}
Frame {
msec: 3968
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7bc5f663e54b6ac10b7aa8787de0483a"
}
Frame {
msec: 3984
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "141e2fa188fabeef8587770b2d18538c"
}
Frame {
msec: 4000
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "5f59ea38bb55096d6ca50ffb9e9706ec"
}
Frame {
msec: 4016
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "9ff31c7768afa3eba211e862bbfddda1"
}
Frame {
msec: 4032
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "f8731aa264c5e534f13f4fa89fc320a1"
}
Frame {
msec: 4048
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "87bc86979d05432f8ad16ca1f0537fa0"
}
Frame {
msec: 4064
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "749f93235f677af13d162aacfde3840a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 69; y: 113
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4080
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4096
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4112
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4128
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 112
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4144
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 112
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4160
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4176
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "de1b3a0b2ffb02f4969ce532bb7d6ad9"
}
Frame {
msec: 4192
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "1e0bb98146f64975c4d5b8f8ef65319c"
}
Frame {
msec: 4208
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3540ee1fc403cc923100888e3bd15168"
}
Frame {
msec: 4224
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "8f8178db769ed067e40c06ec2a8f3e3f"
}
Frame {
msec: 4240
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "18310df1f8f735313e71739c58b2e42d"
}
Frame {
msec: 4256
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "0797a57080ad60f00a185ad7eecbc40f"
}
Frame {
msec: 4272
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "80cffb466c0e8947f775a4b7a677cd20"
}
Frame {
msec: 4288
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3f80ed589a282924e1dd4fbbd99078b0"
}
Frame {
msec: 4304
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7368b2da0c37d4b212fff8222244d413"
}
Frame {
msec: 4320
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7fb81e12fc1cb3e6f08a4bd0af23f40d"
}
Frame {
msec: 4336
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Frame {
- msec: 4352
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Frame {
- msec: 4368
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "6677c15df6babf38036d4083c63c2684"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 151; y: 170
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 168
+ x: 67; y: 89
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4384
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ msec: 4352
+ hash: "106d90e84bd5b88c5df048ffc717e843"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 166
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4368
+ hash: "ce69c7e561e9f0c1fd5f3dba2ffda3e8"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 163
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4384
+ hash: "63b2956e9bad879bef156a318162656c"
}
Frame {
msec: 4400
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 160
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 154
- modifiers: 0
- sendToViewport: true
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Frame {
msec: 4416
- hash: "ac75b9adaecd10206c4daa07c93adb27"
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 155; y: 148
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 141
+ x: 67; y: 88
modifiers: 0
sendToViewport: true
}
Frame {
msec: 4432
- hash: "539ec244fd42801cfcf97adc12f48786"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4448
- hash: "7d7bc6f7d2ff1da352ddab0d679906e7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 166; y: 83
+ x: 67; y: 87
modifiers: 0
sendToViewport: true
}
@@ -1376,93 +1316,113 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 166; y: 83
+ x: 67; y: 87
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 4448
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
+ }
+ Frame {
msec: 4464
- hash: "4b508eb55971a03c6dc8a50d0244fa21"
+ hash: "e33d1f7d03ec85600cb61896c66fd9ca"
}
Frame {
msec: 4480
- hash: "2ceb497ca10e6448a019b62a225a72e4"
+ hash: "72347f42ad925abdc614244b2ec01e7a"
}
Frame {
msec: 4496
- hash: "1fd9b89ebcb8e707c9b1b13ba64061b4"
+ hash: "5fbd0e2ce5e2fe609dfc5e5643bfbc8a"
}
Frame {
msec: 4512
- hash: "24a3a48843860f643e55ca6dfec84f98"
+ hash: "4bcb24b700ac09da7387738bce36def5"
}
Frame {
msec: 4528
- hash: "48ea9398101f44a707c44ee1c5102d0c"
+ hash: "7c489062131ef9fcdfe765cd0361361b"
}
Frame {
msec: 4544
- hash: "d8f2cebcdb542e75bbbaa4391ca881b8"
+ hash: "c4c1834200b2b7b3eb38b20d7147b8ee"
}
Frame {
msec: 4560
- hash: "df35827ac111c67588922aadd45b3c85"
+ hash: "49994b7471ec620ff52e5ba516bbb5d4"
}
Frame {
msec: 4576
- hash: "c1e612548c8d5c2f844e94ad4c0f1db4"
+ hash: "e1cf4e92e291b8509a8eb8a84f70dcad"
}
Frame {
msec: 4592
- hash: "c298bccebeb1f4528c935e5fd256479c"
+ hash: "9c7d6d53aa6089712389b1c2b4207d15"
}
Frame {
msec: 4608
- hash: "4c01d969eba4eca32b8a3b7f6f9c99f0"
+ hash: "408731f3b11d888fff1ef9340ad1c568"
}
Frame {
msec: 4624
- hash: "66c783ae698cb91195088591a9bd67c1"
+ hash: "d34f3092b84dea762adf7cf86c80abc6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 67; y: 67
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4640
- hash: "5419f6889162fb0db6b8c9e521f57f4f"
+ hash: "d0202d3154721c968301e4fdb759b5d2"
}
Frame {
msec: 4656
- hash: "d153dbf30acf36145d7fcb8e37dd5c6d"
+ hash: "89601cb9b82465f6ae96156b7e259e70"
}
Frame {
msec: 4672
- hash: "ffbf186683dc979ef29cdd5ff50296fc"
+ hash: "7c775a699646acf45f26dea5bd5db783"
}
Frame {
msec: 4688
- hash: "ddcedde95d1ebcafe5b73924ecfa047a"
+ hash: "be285c318afaeb932a2fd50fdc357813"
}
Frame {
msec: 4704
- hash: "d94b9e92f2c1a5e0ea2f8dd21a905517"
+ hash: "5ddee39853aa1b8d1be287c86e5b763c"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 67; y: 67
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4720
- hash: "92c27d497128ccdcbfe8224a0f55a302"
+ hash: "5ddee39853aa1b8d1be287c86e5b763c"
}
Frame {
msec: 4736
- hash: "7146017581b03e6551822653e54d5001"
+ hash: "8386713865c12636ce442cd31eacb8ba"
}
Frame {
msec: 4752
- hash: "a39567e01b8963d3b71f5f525d1582d4"
+ hash: "9f4df793b3b6320e238b451e35183b9f"
}
Frame {
msec: 4768
- hash: "842654ef5a24143e41412b2450b6024c"
+ hash: "3cd41f6ab2303dd666269cca13dc95e3"
}
Frame {
msec: 4784
- hash: "c2a002588b4b3f89806d6d283c39ea54"
+ hash: "504a3dd9018c3c725a92a9d6e84743fc"
}
Frame {
msec: 4800
@@ -1470,239 +1430,287 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "2bea5cc22ea4989f8f07fbf62d09880b"
+ hash: "63158568d5fdf558d0192809da0cf5fe"
}
Frame {
msec: 4832
- hash: "b8326b959b75b05c050ff91f0c34fa55"
+ hash: "c4f7130484f17854eace9e541c92207a"
}
Frame {
msec: 4848
- hash: "d5f2e63bd18b2067221ec80764c7500d"
+ hash: "406a0371c7366fadefcbae7d428d1879"
}
Frame {
msec: 4864
- hash: "157f93ebaa95664965539237ba121265"
+ hash: "f9d6128c4fe60d95a001642cb80ccb99"
}
Frame {
msec: 4880
- hash: "5bda47a6295e500f24b6ba7bf04e9282"
+ hash: "2fb6886550a0eb7927274cd9cfc46819"
}
Frame {
msec: 4896
- hash: "0134d543cfbf085eb4b5ea4a0f5ae32f"
+ hash: "dd4ac1eb6d18bc267b2f39d6d291a8bd"
}
Frame {
msec: 4912
- hash: "d27f2ad3bd9817c23caf01ba64335776"
+ hash: "7f1e1114fe65b7a54364a04ad7697d4c"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 66; y: 45
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4928
- hash: "4dd96288601f4481a24b75afedd34599"
+ hash: "60a4882d0384489465fec8660933c29c"
}
Frame {
msec: 4944
- hash: "d5ebfbd190fe2482af54004ad9434818"
+ hash: "2330e35830fb707c9d9074b54cd5c7f6"
}
Frame {
msec: 4960
- hash: "6a8c5c64228b3be521407e00c2b6a1de"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 4976
- hash: "645219e7aa6761bef1b11ac8f17f1f42"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 4992
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 5008
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 66; y: 43
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5024
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 5040
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "a304ddc3e20220f7ed06aeae22589927"
}
Frame {
msec: 5056
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "8ef8e13dff7e5f12c1d0a7a0e438a24f"
}
Frame {
msec: 5072
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "ef7ef97e56c6b7579e11022861dd3eb5"
}
Frame {
msec: 5088
- hash: "6a8c5c64228b3be521407e00c2b6a1de"
+ hash: "133613dd5ac9242ce0b6926986cd384a"
}
Frame {
msec: 5104
- hash: "f91cea801322d1bc6ac1b9eeae96c704"
+ hash: "eb5125c97b9deca07e999ec7e78986b3"
}
Frame {
msec: 5120
- hash: "d27f2ad3bd9817c23caf01ba64335776"
+ hash: "123c37efefdc1c8e6b27b7eff3bffff8"
}
Frame {
msec: 5136
- hash: "5bda47a6295e500f24b6ba7bf04e9282"
+ hash: "8443d904bcb63ab2d14cbb5a2e2a8fe7"
}
Frame {
msec: 5152
- hash: "d5f2e63bd18b2067221ec80764c7500d"
+ hash: "379826db02c7e5cb8ab9007a419e34f9"
}
Frame {
msec: 5168
- hash: "b10145c10c2bc9d01ec6a49a399f728e"
+ hash: "672d45cdc24a2e1286956e3ce00cab56"
}
Frame {
msec: 5184
- hash: "f0b759a49bf21b0c9b311a1dd02d7807"
+ hash: "cbaa7c4f52b2ebc1176a3bbe3e029487"
}
Frame {
msec: 5200
- hash: "1c5546c3ddbde95d10921c8c32fd2d67"
+ hash: "35d70b84722fecd08b1c03f01c5a9895"
}
Frame {
msec: 5216
- hash: "c2a002588b4b3f89806d6d283c39ea54"
+ hash: "65c1d1c4fc845229853836afd2e7a3c4"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 68; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5232
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a238ffd4f6de5ca91bcf0e629407ad11"
}
Frame {
msec: 5248
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "42322853eef74b9b849d81d7aa2ea4af"
}
Frame {
msec: 5264
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "25fb0c4c04d9dcda865a8b254970330c"
}
Frame {
msec: 5280
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
}
Frame {
msec: 5296
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 68; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5312
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
}
Frame {
msec: 5328
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "39e05f846071d4ec9a1413922a928995"
}
Frame {
msec: 5344
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "7040400386930b34d989df4cdf36d125"
}
Frame {
msec: 5360
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "2d3c081a1bbb94952becfd486d455de5"
}
Frame {
msec: 5376
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "7a0719f22b0b74e4139ada77ca8d38d6"
}
Frame {
msec: 5392
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "40d070285de7865fa8f415ff06be69d3"
}
Frame {
msec: 5408
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "875ba6c617a4b5d157c747ead185247c"
}
Frame {
msec: 5424
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "2d0ef679259f503d42cc2267b8d95a4e"
}
Frame {
msec: 5440
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "b2aeceddd4d36e600f617578d64a4c32"
}
Frame {
msec: 5456
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a065ec04aff7a7c164ed8c152130589f"
}
Frame {
msec: 5472
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a09d94403ce40a8afb12e390aea3d848"
}
Frame {
msec: 5488
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "34b116228527a669dadbfc75f309d045"
}
Frame {
msec: 5504
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "5bee91cba46537ddaefe87f4e118d3d5"
}
Frame {
msec: 5520
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "d0d8bd32268f3e3a62a08514f0d53799"
}
Frame {
msec: 5536
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "b90c3915255d3f98700f8af0181fa6ee"
}
Frame {
msec: 5552
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5568
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5584
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5600
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5616
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5632
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5648
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5664
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5680
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5696
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5712
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5728
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5744
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5760
@@ -1710,2042 +1718,50 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5792
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5808
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5824
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5840
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5856
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5872
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5888
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5904
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5920
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5936
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5952
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 5968
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 5984
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6000
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6016
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6032
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6048
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6064
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6080
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6096
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6112
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6128
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6144
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6160
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6176
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6192
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6208
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6224
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6240
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6256
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6272
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6288
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6304
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6320
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6336
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6352
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6368
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6384
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6400
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6416
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6432
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6448
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6464
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6480
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6496
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6512
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 177; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6544
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6560
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6576
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 178; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6624
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6640
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6656
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6672
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6688
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6704
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6720
- image: "packageviews.6.png"
- }
- Frame {
- msec: 6736
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6752
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6768
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6784
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6800
- hash: "f6de07972a225d276b4b5c424dc490ef"
- }
- Frame {
- msec: 6816
- hash: "d8c400ca33d590a9b4d9b179b5634d94"
- }
- Frame {
- msec: 6832
- hash: "21ec87c22e52b3daa78bd94b771a105c"
- }
- Frame {
- msec: 6848
- hash: "19a3667f4051e40e944ec58abb16846a"
- }
- Frame {
- msec: 6864
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6880
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6896
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6912
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6928
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6944
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6960
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6976
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6992
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7008
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7024
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7040
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7056
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7072
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7088
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7104
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7120
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7136
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7152
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7168
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7184
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7200
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7216
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7232
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7248
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7264
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7280
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7296
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7312
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7328
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7344
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7360
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7376
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7392
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7408
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 157; y: 37
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7440
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 39
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 44
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 51
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "e8ad02d4c2429a03ff0686888e4038bf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 59
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 67
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "43dcc86aeff3b8b74ae1b87e735e8963"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "96e10ce9e5a80caf626213e5c696d84d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "3b34cb99481d5418136840afd649807d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 164; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "494cf05eb3d8eb221d0e3c233c936e87"
- }
- Frame {
- msec: 7552
- hash: "e0d5f3aab9fbfac1de47f42202dbeb79"
- }
- Frame {
- msec: 7568
- hash: "8cd6919e15ea4320e00e79d43596ea80"
- }
- Frame {
- msec: 7584
- hash: "395a63aa12928a6b597eabd74f019a03"
- }
- Frame {
- msec: 7600
- hash: "16d4ccbda396a9afcaeac4ddca733012"
- }
- Frame {
- msec: 7616
- hash: "71955518b68a9817a41d5d0f63adcc57"
- }
- Frame {
- msec: 7632
- hash: "152f2569fe8849d5c4289699dba2ee32"
- }
- Frame {
- msec: 7648
- hash: "a1de2cb5acc31a9d73e005c3a44cee4f"
- }
- Frame {
- msec: 7664
- hash: "96ceaad68263b5165a65f557ae19d9cd"
- }
- Frame {
- msec: 7680
- image: "packageviews.7.png"
- }
- Frame {
- msec: 7696
- hash: "9ff5d2774820dac56655a44d965c7742"
- }
- Frame {
- msec: 7712
- hash: "79cdbfb2f93a35680eab38f0df2eaf66"
- }
- Frame {
- msec: 7728
- hash: "19896d510a27871fc589579e27adc0dc"
- }
- Frame {
- msec: 7744
- hash: "71b62e488897345eebf8d9640d50585f"
- }
- Frame {
- msec: 7760
- hash: "4853b95a3f1ae0ebbd468dff3605d595"
- }
- Frame {
- msec: 7776
- hash: "a8030aa0aede17d91758af08256cf39d"
- }
- Frame {
- msec: 7792
- hash: "a2a5e71349060ae262d337d9aa33b549"
- }
- Frame {
- msec: 7808
- hash: "7b5f32f0e53ab102ef6f1eca7da016dd"
- }
- Frame {
- msec: 7824
- hash: "7b5f32f0e53ab102ef6f1eca7da016dd"
- }
- Frame {
- msec: 7840
- hash: "25908df38057c7394135108d9618e28d"
- }
- Frame {
- msec: 7856
- hash: "d3b3ab6e43eef22ca71fc35c36b1f50d"
- }
- Frame {
- msec: 7872
- hash: "c25759db4e12acbe8e4701c7c86d1957"
- }
- Frame {
- msec: 7888
- hash: "fe67a155ead8495d646fa7bbcf5db6b4"
- }
- Frame {
- msec: 7904
- hash: "34e2877a8b84e53e5c85fb1b25d57e2b"
- }
- Frame {
- msec: 7920
- hash: "2fc6c5a0e9bb80e3c8f12553e7e96d02"
- }
- Frame {
- msec: 7936
- hash: "b5122a2530e21a01e93862bd8060e320"
- }
- Frame {
- msec: 7952
- hash: "9c55e0c920bcf5189fb24e1765d221db"
- }
- Frame {
- msec: 7968
- hash: "1106703562135e36ae62130200960fc8"
- }
- Frame {
- msec: 7984
- hash: "c24b57dbf01d2646fbbeb3e66636e220"
- }
- Frame {
- msec: 8000
- hash: "71663a05c04bb77c2e25299a9c6dd9ce"
- }
- Frame {
- msec: 8016
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8032
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8048
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8064
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8080
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8096
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8112
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8128
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8144
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8160
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8176
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8192
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8208
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8224
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8240
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8256
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8272
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8288
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8304
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8320
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8336
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8352
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8368
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8384
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8400
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8416
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8432
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8448
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8464
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8480
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8496
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8512
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8528
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8544
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8560
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8576
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8592
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8608
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8624
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8640
- image: "packageviews.8.png"
- }
- Frame {
- msec: 8656
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8672
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8688
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8704
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 46; y: 147
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8720
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 146
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8736
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 145
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 143
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8752
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8768
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 138
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 129
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8784
- hash: "7b1354e70befc84c343145987c81562f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 45; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8800
- hash: "6107f00c6472d877b5c109dd58d73145"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 45; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 45; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8816
- hash: "47288701643899e26b53d28595d59b29"
- }
- Frame {
- msec: 8832
- hash: "a3b4b613d19c8f21ec1b75c1c660ed1d"
- }
- Frame {
- msec: 8848
- hash: "7a5d9fe471eb673f68b77d97f9108bac"
- }
- Frame {
- msec: 8864
- hash: "20a09795ffcf05276d7a5be24b33e207"
- }
- Frame {
- msec: 8880
- hash: "225e529ac77f225fc8b84ed71cdcd70f"
- }
- Frame {
- msec: 8896
- hash: "e4188406a3d3d1f1b83547d362a187f8"
- }
- Frame {
- msec: 8912
- hash: "82707040aad297885ba1c8c6672dc017"
- }
- Frame {
- msec: 8928
- hash: "a369118e98e2bd67dc4242c5e8c86cb8"
- }
- Frame {
- msec: 8944
- hash: "001ef50f7d2b7db7e0db8d2190137d0c"
- }
- Frame {
- msec: 8960
- hash: "2db473b2bd9fd602ed0298501752dae9"
- }
- Frame {
- msec: 8976
- hash: "f9cdbb4e515abf23721627e3f2748960"
- }
- Frame {
- msec: 8992
- hash: "cbc072c5b117ce156a4d6661ae488a77"
- }
- Frame {
- msec: 9008
- hash: "79acb38cec803e6ebeb570dc4d7bbb30"
- }
- Frame {
- msec: 9024
- hash: "848014437545fc8d2e454a774586a8ca"
- }
- Frame {
- msec: 9040
- hash: "0836f3a48355f6384c6b3f452df1e7d6"
- }
- Frame {
- msec: 9056
- hash: "b3da223cdf138e915fcb424cf9181d6b"
- }
- Frame {
- msec: 9072
- hash: "1a7cf7e7ddaac64eeff0d23997580b8c"
- }
- Frame {
- msec: 9088
- hash: "cfbd055b2f905db503250b49120948db"
- }
- Frame {
- msec: 9104
- hash: "c5b8a4ce51ec806f0ce654a8977fb17d"
- }
- Frame {
- msec: 9120
- hash: "d09ba0ea9e7fed2f50d6463ac74da470"
- }
- Frame {
- msec: 9136
- hash: "47ec5bab098fd88ef5be3703c316717a"
- }
- Frame {
- msec: 9152
- hash: "3ea8c442ed43bd3a2aebc9cc2aacfc01"
- }
- Frame {
- msec: 9168
- hash: "f016f14b0b21781924ac2afe146b1b97"
- }
- Frame {
- msec: 9184
- hash: "7b7b6954cce0ca202585310520bbb3e3"
- }
- Frame {
- msec: 9200
- hash: "b0de94ee3b0ce4845101606d2d512426"
- }
- Frame {
- msec: 9216
- hash: "8dc56bcb2313bd8dd9ef0cbc098b80e5"
- }
- Frame {
- msec: 9232
- hash: "a1692b26fb73ade5a05e03de3f4a8dbe"
- }
- Frame {
- msec: 9248
- hash: "672dd46e629475d823b182104f15aa24"
- }
- Frame {
- msec: 9264
- hash: "2859e53d63c20af7891efc99d5e515b5"
- }
- Frame {
- msec: 9280
- hash: "b44b1c4eaa33fbd09c8e59c1bf2a8f2a"
- }
- Frame {
- msec: 9296
- hash: "d520fa81032ca25ec2cb6c358488049d"
- }
- Frame {
- msec: 9312
- hash: "3676c00bd5c3e9af8c4092afd80f58c2"
- }
- Frame {
- msec: 9328
- hash: "6be4d4c35aba5a8d32a28dd88f32acd1"
- }
- Frame {
- msec: 9344
- hash: "375473d4d838ef937c3164e7451d9391"
- }
- Frame {
- msec: 9360
- hash: "610253e766974af4958c3623547deebd"
- }
- Frame {
- msec: 9376
- hash: "20b79be381a95930c924240815cc63f4"
- }
- Frame {
- msec: 9392
- hash: "88130d7132f472ff8495d640adf290cc"
- }
- Frame {
- msec: 9408
- hash: "2e81f4c9a0221708146adcb508eb2d30"
- }
- Frame {
- msec: 9424
- hash: "977f52ed922ba5db66440f115f7484a2"
- }
- Frame {
- msec: 9440
- hash: "706f99c32d00be14ae67b4866fee0cd9"
- }
- Frame {
- msec: 9456
- hash: "210231604091497b510c4a1d42295574"
- }
- Frame {
- msec: 9472
- hash: "210231604091497b510c4a1d42295574"
- }
- Frame {
- msec: 9488
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9504
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9520
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9536
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9552
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9568
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9584
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9600
- image: "packageviews.9.png"
- }
- Frame {
- msec: 9616
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9632
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9648
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9664
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9680
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9696
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9712
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9728
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9744
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9760
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9776
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9792
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9808
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9824
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9840
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9856
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9872
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9888
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9904
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9920
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9936
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9952
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9968
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9984
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10000
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10016
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10032
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10048
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10064
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10080
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10096
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10112
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10128
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10144
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10160
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10176
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 48; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 10192
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10208
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10224
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10240
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10256
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 48; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 10272
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10288
- hash: "c54f97c72088b6319efba3c79bbef0fa"
- }
- Frame {
- msec: 10304
- hash: "3627adf820bc44f99cca852096f337a0"
- }
- Frame {
- msec: 10320
- hash: "48c0f775534ff9bbe9227e60ad9a3622"
- }
- Frame {
- msec: 10336
- hash: "da5c6fd80ee0dc20e81031c84ede20cf"
- }
- Frame {
- msec: 10352
- hash: "ce7595da55b274259771eb99a42df454"
- }
- Frame {
- msec: 10368
- hash: "c2dd2aa17b9508477699fefe55bfbd06"
- }
- Frame {
- msec: 10384
- hash: "4ee897ddfec1081eef8bc5d799774f82"
- }
- Frame {
- msec: 10400
- hash: "f4da67964a175acf4cde4a24b054c24c"
- }
- Frame {
- msec: 10416
- hash: "e3da951dad465f1a69d8d7c08e888f02"
- }
- Frame {
- msec: 10432
- hash: "ff862073eada170a07d209048367b823"
- }
- Frame {
- msec: 10448
- hash: "cb61d5a89c1acc2b646f3c07214bea4a"
- }
- Frame {
- msec: 10464
- hash: "15d842ac551c15a136c7598adf2fe2b1"
- }
- Frame {
- msec: 10480
- hash: "04b9e85f7418bbc402e51e0ce8149180"
- }
- Frame {
- msec: 10496
- hash: "455dff37edfac66f5e4ae78e10b93cf9"
- }
- Frame {
- msec: 10512
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10528
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10544
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10560
- image: "packageviews.10.png"
- }
- Frame {
- msec: 10576
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10592
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10608
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10624
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10640
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10656
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10672
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10688
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10704
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10720
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10736
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10752
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10768
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10784
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10800
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10816
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10832
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10848
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10864
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10880
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10896
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10912
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10928
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10944
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10960
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10976
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10992
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11008
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11024
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11040
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11056
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11072
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11088
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11104
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11120
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11136
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11152
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11168
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11184
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11200
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11216
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11232
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11248
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11264
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11280
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11296
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11312
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11328
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11344
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11360
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11376
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11392
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11408
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11424
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11440
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11456
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11472
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11488
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11504
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 47; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 11520
- image: "packageviews.11.png"
- }
- Frame {
- msec: 11536
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11552
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11568
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 47; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 11584
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11600
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11616
- hash: "cf515f316c197a307a7fb8373df3b107"
- }
- Frame {
- msec: 11632
- hash: "927379ba611284d5c98a3eb5aca04f7c"
- }
- Frame {
- msec: 11648
- hash: "387ad2042589de0a19cb13aa0cac8872"
- }
- Frame {
- msec: 11664
- hash: "6536ad87d1f04b13c28c43ae0fed984f"
- }
- Frame {
- msec: 11680
- hash: "38d77d6610739614e95c70f32736f238"
- }
- Frame {
- msec: 11696
- hash: "9a6c3a95b61d3b9b787417600123b6d8"
- }
- Frame {
- msec: 11712
- hash: "782d907d7d170108beb030c93d9a4d94"
- }
- Frame {
- msec: 11728
- hash: "646ee08d1ffe676ca0363f70e14c2ed6"
- }
- Frame {
- msec: 11744
- hash: "830730ed9990c8f96fa5c7e6b4228884"
- }
- Frame {
- msec: 11760
- hash: "2e678862f358814278d38950c7c5765b"
- }
- Frame {
- msec: 11776
- hash: "c656eb6ace9caf86d417d79452c4ea34"
- }
- Frame {
- msec: 11792
- hash: "227a9bb3644c26622ef654ba2c61ddad"
- }
- Frame {
- msec: 11808
- hash: "bc8188bf8be749bfb28fc64bb5773922"
- }
- Frame {
- msec: 11824
- hash: "f1e90cfd466bdc26ba98632fe1e5360c"
- }
- Frame {
- msec: 11840
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11856
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11872
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11888
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11904
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11920
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11936
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11952
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11968
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11984
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12000
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12016
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12032
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12048
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12064
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12080
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12096
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12112
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12128
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12144
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12160
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12176
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12192
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12208
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12224
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12240
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12256
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12272
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12288
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12304
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12320
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12336
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12352
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12368
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12384
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12400
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12416
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12432
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12448
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12464
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12480
- image: "packageviews.12.png"
- }
- Frame {
- msec: 12496
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12512
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12528
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12544
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12560
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12576
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12592
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12608
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12624
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12640
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12656
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12672
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12688
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12704
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12720
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12736
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12752
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12768
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12784
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12800
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12816
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12832
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12848
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12864
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12880
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12896
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12912
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12928
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12944
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12960
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12976
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12992
- hash: "81795ee4213ac62e073d811aaf6b580c"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
}
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
index 99379f1515..a9de3f87d4 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
+++ b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
@@ -17,18 +17,10 @@ Rectangle {
ListElement { itemColor: "yellow" }
ListElement { itemColor: "slategrey" }
ListElement { itemColor: "cyan" }
- ListElement { itemColor: "red" }
- ListElement { itemColor: "green" }
- ListElement { itemColor: "blue" }
- ListElement { itemColor: "orange" }
- ListElement { itemColor: "purple" }
- ListElement { itemColor: "yellow" }
- ListElement { itemColor: "slategrey" }
- ListElement { itemColor: "cyan" }
}
delegate: Package {
Rectangle {
- id: listItem; Package.name: "list"; width:root.width/2; height: 50; color: "transparent"; border.color: "white"
+ id: listItem; Package.name: "list"; width:root.width/2; height: 25; color: "transparent"; border.color: "white"
MouseArea {
anchors.fill: parent
onClicked: myState.state = myState.state == "list" ? "grid" : "list"
@@ -50,12 +42,12 @@ Rectangle {
State {
name: "list"
ParentChange { target: myContent; parent: listItem }
- PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width }
+ PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width; height: listItem.height }
},
State {
name: "grid"
ParentChange { target: myContent; parent: gridItem }
- PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width }
+ PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width; height: gridItem.height }
}
]
@@ -64,7 +56,7 @@ Rectangle {
from: "*"; to: "*"
SequentialAnimation {
ParentAnimation{
- NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" }
+ NumberAnimation { properties: "x,y,width,height"; easing.type: "InOutQuad" }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png
new file mode 100644
index 0000000000..c5e802926e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png
new file mode 100644
index 0000000000..b0f69c28b7
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png
new file mode 100644
index 0000000000..1317eef8a7
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml
new file mode 100644
index 0000000000..eb4564c89e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml
@@ -0,0 +1,951 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 32
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 48
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 64
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 80
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 96
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 112
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 128
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 144
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 160
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 176
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 192
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 208
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 224
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 240
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 256
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 272
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 288
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 304
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 320
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 336
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 352
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 368
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 384
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 400
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 416
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 432
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 448
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 464
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 480
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 496
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 512
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 93; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 528
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 544
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 560
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 576
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 592
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 93; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 608
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 624
+ hash: "e5bda0daf98288ce18db6ce06eda3ba0"
+ }
+ Frame {
+ msec: 640
+ hash: "d35008f75b8c992f80fb16ba7203649d"
+ }
+ Frame {
+ msec: 656
+ hash: "14f43e0784ddf42ea8550db88c501bf1"
+ }
+ Frame {
+ msec: 672
+ hash: "02276e158b5391480b1bdeaadf1fb903"
+ }
+ Frame {
+ msec: 688
+ hash: "35d9513eb97a2c482b7cd197de910934"
+ }
+ Frame {
+ msec: 704
+ hash: "faf0fd681e60bb2489099f5df772b6cd"
+ }
+ Frame {
+ msec: 720
+ hash: "a863d3e346f94785a3a392fdc91526eb"
+ }
+ Frame {
+ msec: 736
+ hash: "fdf328d3f6eb8410da59a91345e41a44"
+ }
+ Frame {
+ msec: 752
+ hash: "83514a3b10d5be8f6c3b128d0f3e0b1c"
+ }
+ Frame {
+ msec: 768
+ hash: "ead0eae76cd00189075964671effbaea"
+ }
+ Frame {
+ msec: 784
+ hash: "24d2457fcd51490fda23071bf9929d12"
+ }
+ Frame {
+ msec: 800
+ hash: "1478683446cf543dacbe31d0b76a98a6"
+ }
+ Frame {
+ msec: 816
+ hash: "99f7da1f31fe920f6c02add4042ae925"
+ }
+ Frame {
+ msec: 832
+ hash: "22def892006cf66667770b0f17baf6c0"
+ }
+ Frame {
+ msec: 848
+ hash: "6a36d5a77099bfd58baf285478ff04e4"
+ }
+ Frame {
+ msec: 864
+ hash: "6258150666b59b20ab476724c07fc20c"
+ }
+ Frame {
+ msec: 880
+ hash: "f1636315bc950a6dd400d9c7ed263b88"
+ }
+ Frame {
+ msec: 896
+ hash: "18447ea8dc2e8da956788e5b3cf3790a"
+ }
+ Frame {
+ msec: 912
+ hash: "1d2a6e65997a73e9e670356c8e8b63b2"
+ }
+ Frame {
+ msec: 928
+ hash: "bed0242c0f9ef229d1392835286d5782"
+ }
+ Frame {
+ msec: 944
+ hash: "88923c190e9e5beadef8a409c06df9d6"
+ }
+ Frame {
+ msec: 960
+ image: "colorAnimation-visual.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "85b1821cc50f2a9f3ed6944f792b7a2f"
+ }
+ Frame {
+ msec: 992
+ hash: "395195716d76bc0be7b2033ed37a7a1c"
+ }
+ Frame {
+ msec: 1008
+ hash: "243dbffcf416926242bbcb7348974c4c"
+ }
+ Frame {
+ msec: 1024
+ hash: "a755068679616d8ac65c2aa7431f2a19"
+ }
+ Frame {
+ msec: 1040
+ hash: "e8249b35a47eb492cbdf2d91cc8426f0"
+ }
+ Frame {
+ msec: 1056
+ hash: "15f3da1c0e6f0779b96859d51171dd27"
+ }
+ Frame {
+ msec: 1072
+ hash: "258c0c756aac3de743b43051f2aace6b"
+ }
+ Frame {
+ msec: 1088
+ hash: "a58b9fdf301d72b2cc5c93934cc8927b"
+ }
+ Frame {
+ msec: 1104
+ hash: "a9181d30870d472521f8904818ce520f"
+ }
+ Frame {
+ msec: 1120
+ hash: "7f9e94069ccf3897c26a71bd7becd903"
+ }
+ Frame {
+ msec: 1136
+ hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b"
+ }
+ Frame {
+ msec: 1152
+ hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7"
+ }
+ Frame {
+ msec: 1168
+ hash: "734f0de45a6e34c9eab7ef606196f96a"
+ }
+ Frame {
+ msec: 1184
+ hash: "02a361c4534fdf7f286dc3e6dc23275c"
+ }
+ Frame {
+ msec: 1200
+ hash: "e649155ad69999c14b92f6561e4d1185"
+ }
+ Frame {
+ msec: 1216
+ hash: "01af177084fab755d622973f64b92018"
+ }
+ Frame {
+ msec: 1232
+ hash: "097cc4a082dfab995d213a3a73883c97"
+ }
+ Frame {
+ msec: 1248
+ hash: "d7b4239a3280b1eb8e885e3f422df8e9"
+ }
+ Frame {
+ msec: 1264
+ hash: "59893977994e34e83f91e7ce3ad65d6d"
+ }
+ Frame {
+ msec: 1280
+ hash: "b68e3fbb5cdcd6bd96df7dec558db42b"
+ }
+ Frame {
+ msec: 1296
+ hash: "94ad0580648f36a1e18a9ea7e249b04d"
+ }
+ Frame {
+ msec: 1312
+ hash: "750a4c01d2f5806a89a1c6cc6a9b9a68"
+ }
+ Frame {
+ msec: 1328
+ hash: "4f109f50f388f1bfa4bc6b03b3e6e514"
+ }
+ Frame {
+ msec: 1344
+ hash: "c6168d5cf27a533e8ee636637667be47"
+ }
+ Frame {
+ msec: 1360
+ hash: "f8120547bed987aa34c00da5a01a4d1e"
+ }
+ Frame {
+ msec: 1376
+ hash: "cbff526136fa2c128c8b898fbbef9e5c"
+ }
+ Frame {
+ msec: 1392
+ hash: "f29e52398fab1a239a63df4c32f2fc69"
+ }
+ Frame {
+ msec: 1408
+ hash: "7178bfe86fd2fd513218b33760460f8d"
+ }
+ Frame {
+ msec: 1424
+ hash: "ca83285bc8ac633403896fe976896eb0"
+ }
+ Frame {
+ msec: 1440
+ hash: "96ba486c09cc69d5aa38c46c00df1181"
+ }
+ Frame {
+ msec: 1456
+ hash: "b88eab335842787869f4a14824c19dd8"
+ }
+ Frame {
+ msec: 1472
+ hash: "065aa59012729e1e1a246a2083142690"
+ }
+ Frame {
+ msec: 1488
+ hash: "dd0e98c8398861002c5f178c5f9f612d"
+ }
+ Frame {
+ msec: 1504
+ hash: "04192c2b545948048eccf4d81bbde198"
+ }
+ Frame {
+ msec: 1520
+ hash: "bb7502c7208281ef9fd41714ab88a1a8"
+ }
+ Frame {
+ msec: 1536
+ hash: "5397195471890d08b703dca101e5bc7c"
+ }
+ Frame {
+ msec: 1552
+ hash: "4c678cdbebb2ffd2cbf012ca77800cde"
+ }
+ Frame {
+ msec: 1568
+ hash: "0d7a34ecd0c7f52b2c015037bf1902c6"
+ }
+ Frame {
+ msec: 1584
+ hash: "fd9d5048be749ac4369fda2d018b43ae"
+ }
+ Frame {
+ msec: 1600
+ hash: "93ee03795cd57ae6f7fe3a020b039ad4"
+ }
+ Frame {
+ msec: 1616
+ hash: "5e1118963f219c39761ca7fbf564a9ca"
+ }
+ Frame {
+ msec: 1632
+ hash: "8f40038741903150136170503649d941"
+ }
+ Frame {
+ msec: 1648
+ hash: "b087b7d0aa6224821f8e18718ff5e77d"
+ }
+ Frame {
+ msec: 1664
+ hash: "aa46b04a3c67dc772265ed2901955565"
+ }
+ Frame {
+ msec: 1680
+ hash: "ac024bf2aeb4becdf31a09fe0a6db8f3"
+ }
+ Frame {
+ msec: 1696
+ hash: "13745a174e4d06e2108a5bf125ba50cc"
+ }
+ Frame {
+ msec: 1712
+ hash: "bd972f0d8e230eca0b3fea1b8c960c08"
+ }
+ Frame {
+ msec: 1728
+ hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba"
+ }
+ Frame {
+ msec: 1744
+ hash: "5128584c50305c7d218b81b8367fa3d5"
+ }
+ Frame {
+ msec: 1760
+ hash: "a71461d3593f3685620668916de870bd"
+ }
+ Frame {
+ msec: 1776
+ hash: "74ebac8f32cf044b58d9883dbcd9a722"
+ }
+ Frame {
+ msec: 1792
+ hash: "fedc5b638f339b90fe59b478721e65b7"
+ }
+ Frame {
+ msec: 1808
+ hash: "8593a81be812edf54ec94da8ae9c1314"
+ }
+ Frame {
+ msec: 1824
+ hash: "4e9b083075bc5e9287a8abc982778b56"
+ }
+ Frame {
+ msec: 1840
+ hash: "1d6f02aa99afa47d77fc49ab894b365a"
+ }
+ Frame {
+ msec: 1856
+ hash: "a204feec783b3b05de4c209c21745826"
+ }
+ Frame {
+ msec: 1872
+ hash: "665a2a8ff00b9663157802767f504754"
+ }
+ Frame {
+ msec: 1888
+ hash: "624fb09ebe60cb87d767faf8d2420b1e"
+ }
+ Frame {
+ msec: 1904
+ hash: "e5af0cdc33f3275a25abb09e9165f310"
+ }
+ Frame {
+ msec: 1920
+ image: "colorAnimation-visual.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "e7aa6374c73832e57ceb2427a1e258aa"
+ }
+ Frame {
+ msec: 1952
+ hash: "b5abd0dff1ab076faac7cc226e83f5d0"
+ }
+ Frame {
+ msec: 1968
+ hash: "b759acc35bccff8efc2e6fe276ddc0f7"
+ }
+ Frame {
+ msec: 1984
+ hash: "ce52e18c1f7732768779863b45314ff5"
+ }
+ Frame {
+ msec: 2000
+ hash: "99d30652559dd6931e0c95543eeaa149"
+ }
+ Frame {
+ msec: 2016
+ hash: "ffbd9a00e05e085b89296d19d5caec57"
+ }
+ Frame {
+ msec: 2032
+ hash: "9c9d658b9c25602816b8066bf19105db"
+ }
+ Frame {
+ msec: 2048
+ hash: "2b7fd058e6601e22a30bb7106b1c683b"
+ }
+ Frame {
+ msec: 2064
+ hash: "f4c7e26b19ee0a3e7c9688685eb7bd05"
+ }
+ Frame {
+ msec: 2080
+ hash: "0dc6d593bceff56b7f81f2a49d37fefb"
+ }
+ Frame {
+ msec: 2096
+ hash: "9bfd7ad5091ccbdde43c593e133a7b10"
+ }
+ Frame {
+ msec: 2112
+ hash: "2703b617937914a90ea42ebf249d79ee"
+ }
+ Frame {
+ msec: 2128
+ hash: "b77e2983138254016c4cca53100f46fa"
+ }
+ Frame {
+ msec: 2144
+ hash: "60c4dd24187d1281081479e586f02b37"
+ }
+ Frame {
+ msec: 2160
+ hash: "62f2511abd99ef1231c9fa4b91d4abfe"
+ }
+ Frame {
+ msec: 2176
+ hash: "e309b3353fd174e883d309571caddc98"
+ }
+ Frame {
+ msec: 2192
+ hash: "1e2d6a134c7b12dde551b148ef4f088c"
+ }
+ Frame {
+ msec: 2208
+ hash: "e5dc5450604a491cc24a0dcf5c278b58"
+ }
+ Frame {
+ msec: 2224
+ hash: "c8dae97c10e1962c1e6a51ab3ab8579e"
+ }
+ Frame {
+ msec: 2240
+ hash: "4e1b7e06f55fb084080689b474f1fe1d"
+ }
+ Frame {
+ msec: 2256
+ hash: "b4639c907fa937bf15fac62421170cd8"
+ }
+ Frame {
+ msec: 2272
+ hash: "c250208a0caeb5f6cb4d3aac3d7d350b"
+ }
+ Frame {
+ msec: 2288
+ hash: "a73351eabecf0d71149efe31f197413e"
+ }
+ Frame {
+ msec: 2304
+ hash: "479425f1b7aff79e4dfb7fca534af018"
+ }
+ Frame {
+ msec: 2320
+ hash: "046d0f0040a52d1f26ba9f7c5de06ef4"
+ }
+ Frame {
+ msec: 2336
+ hash: "655778bf13c6080903150b0eb43a7edc"
+ }
+ Frame {
+ msec: 2352
+ hash: "72da0bbe81514870655fdd3354adac60"
+ }
+ Frame {
+ msec: 2368
+ hash: "defe0bdf675c65fff55aaaced1e4dae7"
+ }
+ Frame {
+ msec: 2384
+ hash: "c988628b6c3d3780e9a865c7694926cd"
+ }
+ Frame {
+ msec: 2400
+ hash: "5ab17563655231089edd986ff13d6012"
+ }
+ Frame {
+ msec: 2416
+ hash: "c1adff1d2e5800ed466d1691d3b17382"
+ }
+ Frame {
+ msec: 2432
+ hash: "70129ba01fbb19592b9dc0d0a3b3e7df"
+ }
+ Frame {
+ msec: 2448
+ hash: "0000829ef7ed908bf430d42904d59cc2"
+ }
+ Frame {
+ msec: 2464
+ hash: "843d2927f50ab87b4a86b7a6aaeed91f"
+ }
+ Frame {
+ msec: 2480
+ hash: "da86d21756025e7de8050586d5e2a1f8"
+ }
+ Frame {
+ msec: 2496
+ hash: "48dd1bd6580133b0793fee327ea4f1e6"
+ }
+ Frame {
+ msec: 2512
+ hash: "f0618193dcd0ba2837249515a1898b1c"
+ }
+ Frame {
+ msec: 2528
+ hash: "a530184e57251065286c0cbba7301e9c"
+ }
+ Frame {
+ msec: 2544
+ hash: "64a1d7203973d65dd342793007a61c58"
+ }
+ Frame {
+ msec: 2560
+ hash: "5b830dfc6ba442772de87d75d5a578de"
+ }
+ Frame {
+ msec: 2576
+ hash: "5563b056b0409b65f60dd16dd0dd890e"
+ }
+ Frame {
+ msec: 2592
+ hash: "b8bcf9ad2ca8720c11563a23d8280804"
+ }
+ Frame {
+ msec: 2608
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2624
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2640
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2656
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2672
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2688
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2704
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2720
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2736
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2752
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2768
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2784
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2800
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2816
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2832
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2848
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2864
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2880
+ image: "colorAnimation-visual.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2912
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2928
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2944
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2960
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2976
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2992
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3008
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3024
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3040
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3056
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3072
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3088
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3104
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3120
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3136
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3152
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3168
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3184
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3200
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3216
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3232
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3248
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3264
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3280
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3296
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3312
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3328
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3344
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3360
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3376
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3392
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3408
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3424
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3440
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3456
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3472
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3488
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3504
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3520
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3536
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3552
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3568
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3584
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3600
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3616
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3632
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3648
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3664
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3680
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
index 64d6b06895..a02c063eac 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
index f7fce15f46..0714b4acc6 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
index 3080df5e30..7d2b66ef46 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
index 36b39fa678..09febd7525 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
@@ -6,239 +6,247 @@ VisualTest {
}
Frame {
msec: 16
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 32
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 48
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 64
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 80
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 96
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 112
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 128
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 144
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 160
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 176
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 192
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 208
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 224
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 240
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 256
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 272
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 288
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 304
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 320
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 336
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 352
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 368
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 384
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 400
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 416
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 432
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 448
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 464
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 480
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 496
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 512
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 528
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 544
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 560
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 576
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 592
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 608
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 624
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 640
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 656
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 672
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 688
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 704
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 720
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 736
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 27; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 768
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 784
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 800
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 816
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e8e6b7d7f81895ae556936ba5e0848a5"
}
Frame {
msec: 832
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 848
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 864
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "02e3d071d5fc0832041688950d3610b8"
}
Frame {
msec: 880
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "aad38d9678bdeeed750f381a40e22a61"
}
Frame {
msec: 896
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a8753ac7d026d94224c488fa16d5774a"
}
Frame {
msec: 912
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9de26e2d70bd285116df820ca87c2e4d"
}
Frame {
msec: 928
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 944
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 960
@@ -246,247 +254,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 992
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 1008
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1024
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1040
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "81c157daf3086b21ea2ba39277a31f3d"
}
Frame {
msec: 1056
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a19d2e389a71472929fed6691dbe40ec"
}
Frame {
msec: 1072
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "0fc67582f36db63dc3df1027bf7ad90b"
}
Frame {
msec: 1088
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c53f1a42113fdc2e525c43460ed40f81"
}
Frame {
msec: 1104
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c8968753e599419bc2d70adb95b643f2"
}
Frame {
msec: 1120
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "449fbda0dc3e45d022832f9d15203466"
}
Frame {
msec: 1136
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "7778e32071419dd53920536bac1eb21a"
}
Frame {
msec: 1152
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "279510c6ca5429a22855a08e88a1b4b5"
}
Frame {
msec: 1168
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "ac86ca53dc52c7c54bd993faa2daf0b9"
}
Frame {
msec: 1184
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "7e20361da8a49f9699e290673bdd60ee"
}
Frame {
msec: 1200
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "aa5f6e188212cee2dbf8d1e52692ac88"
}
Frame {
msec: 1216
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "14018d9d2370c46b5f0c280cb169225e"
}
Frame {
msec: 1232
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1248
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1264
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1280
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1296
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1312
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1328
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1344
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1360
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1376
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1392
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1408
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1424
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1440
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1456
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1472
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1488
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1504
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1520
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1536
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1552
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1568
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1584
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1600
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 109; y: 247
- modifiers: 0
- sendToViewport: true
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1616
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1632
- hash: "c91921dba899d7a86de3cd013773889f"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1648
- hash: "888c0fc86155e10b5fc577ef6ec5755a"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1664
- hash: "7fd61a8910bf7b0d2bf57653a268c5d8"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1680
- hash: "f42f5073f90a423adf011d0e168c8a9b"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1696
- hash: "a3d89deb6cfa2bbbaa1d7d5b5e5b48d5"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 27; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1712
- hash: "f10e997d7a17c18251a32d58b018105a"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1728
- hash: "09ffb57d5f67edfa34d6aad36a002554"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1744
- hash: "01f3a2f5b9815f1397a907b099339360"
+ hash: "7b99c5dd3750291043f62479314ccb2f"
}
Frame {
msec: 1760
- hash: "58c0910c49748edd2ef8472960179472"
+ hash: "d3409cf579db724440f3f59cfc902974"
}
Frame {
msec: 1776
- hash: "cc82c5f7f93c5bc1af1c6c509268566a"
+ hash: "2ad2a4b3f933e3a27acb232adf06eb7f"
}
Frame {
msec: 1792
- hash: "3ef272c6439b85fbc166375d1b98403c"
+ hash: "35074cf4f2753c77e112092e92630c71"
}
Frame {
msec: 1808
- hash: "98c576f0900e4b8752d1f951bb6bf391"
+ hash: "f7038f7e6d7b6498ff1a4098c79f9d2a"
}
Frame {
msec: 1824
- hash: "4d66dd64d8736ef50163e08723873478"
+ hash: "fec23135661d2368cf3cf64f7d62af73"
}
Frame {
msec: 1840
- hash: "9a5d8455b6763456185625811253e0b1"
+ hash: "4143603bf203319f423d21f204fac3b0"
}
Frame {
msec: 1856
- hash: "77e85731efa786a2492aae19a87523c6"
+ hash: "f3d41bdc8ae60f6fbf109206ac9023de"
}
Frame {
msec: 1872
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "41064ea276aabfba45966130d2ec4b06"
}
Frame {
msec: 1888
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "dfbe242fc8bc3c70207be901ac2db139"
}
Frame {
msec: 1904
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "a8a9f435774def4255ae433646cc5263"
}
Frame {
msec: 1920
@@ -494,247 +502,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "db3010ef552146df938c237f6c92bff5"
+ hash: "895ad99b422c5c6637f6569f391b4011"
}
Frame {
msec: 1952
- hash: "101e8595d0301e88376ec52ba9361f84"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1968
- hash: "119d548c59baa7e47266d2ceca663288"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 1984
- hash: "f141fafe102a0b9a2bf33e8c3fc800ff"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2000
- hash: "b01f9ca8d4fbff17b3d48c70898a044d"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2016
- hash: "cf67954a2d1b22e8d2cfdc26419bafb8"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2032
- hash: "7680b2b5a63dea13d733947297e01355"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 2048
- hash: "af1c017acf6b3c8cff86c9ceb60db3cb"
+ hash: "9de26e2d70bd285116df820ca87c2e4d"
}
Frame {
msec: 2064
- hash: "0b23ec51f71fddae5e2238ab5754f1db"
+ hash: "a8753ac7d026d94224c488fa16d5774a"
}
Frame {
msec: 2080
- hash: "976643961ecbdc86335180ba812b874e"
+ hash: "aad38d9678bdeeed750f381a40e22a61"
}
Frame {
msec: 2096
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "abddb88af9b07e782f6c2103479abe3d"
}
Frame {
msec: 2112
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "02e3d071d5fc0832041688950d3610b8"
}
Frame {
msec: 2128
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 2144
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "e8e6b7d7f81895ae556936ba5e0848a5"
}
Frame {
msec: 2160
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2176
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2192
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2208
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2224
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2240
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2256
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2272
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2288
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2304
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2320
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2336
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2352
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2368
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2384
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2400
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2416
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2432
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2448
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2464
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2480
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2496
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2512
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2528
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2544
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2560
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2576
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2592
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2608
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2624
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2640
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2656
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2672
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2688
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2704
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2720
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2736
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2752
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 109; y: 247
- modifiers: 0
- sendToViewport: true
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2768
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2784
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2800
- hash: "ab924ae435262e76381c2e4af5d64342"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2816
- hash: "d60758fc12471a19d31c85f058f2ded7"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2832
- hash: "c62e2956f8eb5d2c8cd76ba05c5929d5"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2848
- hash: "f2967ee7e035a9ff258116a2706529f8"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2864
- hash: "885c4705c6c29f69c56c44abc1251d75"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2880
@@ -742,198 +742,74 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "f4af6871e522511f95bc4c5abfc2a562"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2912
- hash: "b27e1e7e0d90468525309528ccfe2823"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2928
- hash: "78e7d84a4466258b40315fe61b7ca15c"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2944
- hash: "471013d921d8d6e7468fd6aba0b75c71"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2960
- hash: "856048da893c9136ac5740bc89b64128"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2976
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2992
- hash: "2264fa3acd979f104633c1301a0efd8f"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3008
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3024
- hash: "ad899d1ecaa43a5541be7b70413caee5"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3040
- hash: "4e652524c992f5ee1b987275ca509728"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3056
- hash: "a44b3dec2a016694bc8553a51b29d46c"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3072
- hash: "7fbe20346bc3c28c345e0797b55599f3"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3088
- hash: "bcff18ad433bb4f08126ee66efb037d1"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3104
- hash: "836666c64f73c38e87de95944ff2fe72"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3120
- hash: "4379982d23db239b1741b5d72c53e160"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3136
- hash: "0ed9476337214e1493c1510b8a4c90f8"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3152
- hash: "dab637406577a1924c7dbb30680e1af3"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3168
- hash: "38b7e5894cf49a19ac055264d6447b9f"
- }
- Frame {
- msec: 3184
- hash: "5f207d1dfad4907f200d76104881bf56"
- }
- Frame {
- msec: 3200
- hash: "3434fc7f81e859722585dae97c557864"
- }
- Frame {
- msec: 3216
- hash: "7c775b9be8c5293d4962324574267c22"
- }
- Frame {
- msec: 3232
- hash: "da0ff6955c2e4cd86421bdb9053f56e6"
- }
- Frame {
- msec: 3248
- hash: "a1297d525a3ad41abbbb7c2f15efd4fb"
- }
- Frame {
- msec: 3264
- hash: "5326b220995b2a1eaa308ad10fd353fa"
- }
- Frame {
- msec: 3280
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3296
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3312
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3328
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3344
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 3360
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3376
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3392
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3408
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3424
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3440
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3456
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3472
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3488
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3504
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3520
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3536
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3552
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3568
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3584
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3600
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3616
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3632
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
index 6c3e52daf4..3ff4214d8a 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
@@ -1,17 +1,17 @@
import QtQuick 1.0
/*
-This test starts with a red rectangle at 0,0. It should animate a color change to blue,
+This test starts with a 30x40 rectangle at 0,0. It should animate a width change to 40,
then jump 50 pixels right, and then animate moving 50 pixels down. Afer this it should
do an exact visual reversal (animate up 50 pixels, jump left 50 pixels, and then animate
-a change back to red).
+a change back to 30px wide).
*/
Rectangle {
- width: 400; height: 400
+ width: 100; height: 100
Rectangle {
id: myRect
- width: 100; height: 100
+ width: 30; height: 40
color: "red"
}
MouseArea {
@@ -24,8 +24,7 @@ Rectangle {
when: clickable.pressed
PropertyChanges {
target: myRect
- x: 50; y: 50
- color: "blue"
+ x: 50; y: 50; width: 40
}
}
@@ -33,7 +32,7 @@ Rectangle {
to: "state1"
reversible: true
SequentialAnimation {
- ColorAnimation {}
+ NumberAnimation { properties: "width"; easing.type: "InOutQuad" }
PropertyAction { properties: "x" }
NumberAnimation { properties: "y"; easing.type: "InOutQuad" }
}
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
index d8be67b465..3545e5a853 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
index e5494aa315..c7da35979b 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
index fbb03dea69..d51e8e4ff8 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
index d8be67b465..c7da35979b 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png
new file mode 100644
index 0000000000..8552406140
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
index 13ba28950a..774cc134d8 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
@@ -6,239 +6,335 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 32
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 48
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 64
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 80
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 96
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 112
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 128
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 144
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 160
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 176
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 192
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 208
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 224
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 240
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 256
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 272
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 288
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 304
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 320
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 336
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 352
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 368
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 384
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 400
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 416
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 432
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 448
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 464
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 480
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 496
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 512
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 528
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 544
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 560
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 576
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 592
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 608
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 624
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 640
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 656
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 672
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 688
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 704
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 155; y: 261
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 260
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 720
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 260
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 258
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 254
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 105; y: 249
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "3e70a9fcacf40284c4bbf6a8376edfec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 247
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 245
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 768
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "3b65fbe0980fabd4bcba5757323c8fcf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 20; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -25; y: 241
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 784
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0a79d810c2ff479fcc42d40125f6ccda"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -68; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: -68; y: 238
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "9e5b85c715a2a573f0dd3bc7e342625f"
}
Frame {
msec: 816
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "371faa0d3bb3815470ef48713f0363b6"
}
Frame {
msec: 832
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "2f948f765ec2d861841439f03e402bcf"
}
Frame {
msec: 848
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "74dbda8d6d005fb8fb307fc4cf146e1e"
}
Frame {
msec: 864
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "bdf1f0db0411a3456ddc0efff0584e9c"
}
Frame {
msec: 880
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "cb5c7c9fc7e4707f1d8b7bbb9f19065d"
}
Frame {
msec: 896
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "f60df4e47f5b9d16b576ab4107a0c11c"
}
Frame {
msec: 912
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "6fcc1b9d2d1829c48cdfefba632c6a91"
}
Frame {
msec: 928
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "e53272919fa23f7023ce66d3b15c2f05"
}
Frame {
msec: 944
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "dc043143bf35a808fcdf2b692753dc86"
}
Frame {
msec: 960
@@ -246,279 +342,327 @@ VisualTest {
}
Frame {
msec: 976
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "8a5247a3847809f56a2fdce0f4ac9c99"
}
Frame {
msec: 992
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d4122caf5fc8cfd59e6048b830acc3fb"
}
Frame {
msec: 1008
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1024
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1040
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1056
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1072
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1088
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1104
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1120
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1136
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1152
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1168
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1184
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1200
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1216
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1232
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1248
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1264
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1280
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1296
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1312
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 174; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1328
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1344
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1360
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1376
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "be218d7ebfb01cf288b284cf40337913"
}
Frame {
msec: 1392
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "bd1af1e9187a58841b33862047ad4ae3"
}
Frame {
msec: 1408
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "6154c00e9290393daaf1e7a0618874c7"
}
Frame {
msec: 1424
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "6ed42be04df8a4cc15d9d885e4b157f5"
}
Frame {
msec: 1440
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 204
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 130; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "2187c8e798b2b60567284af6923a9418"
}
Frame {
msec: 1456
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "39ef8ac3108be3c5b8c85aaa06539952"
}
Frame {
msec: 1472
- hash: "09d6255a3fc628c52a386a878bdecb4e"
+ hash: "a30c2d3bbebdf3ae84c8148dfff53abf"
}
Frame {
msec: 1488
- hash: "6d5e292fecfc2ec45a5695fa9e5173f3"
+ hash: "f9b5ef6675c326a3c6462f8ad173c875"
}
Frame {
msec: 1504
- hash: "848051f677a2172d8cbe75a451026459"
+ hash: "eab82ad570e59a68c41450df5146aea6"
}
Frame {
msec: 1520
- hash: "95b1a914c1d33866cd728ad1ad612884"
+ hash: "2caf2dae27a5603de6665c1cafbe6576"
}
Frame {
msec: 1536
- hash: "780a03cd9aec2f0f7f61a51629261385"
+ hash: "601b397404250d01ec9e483683c32776"
}
Frame {
msec: 1552
- hash: "c7ea3a54cfb618bb02d93f6e17e2a74d"
+ hash: "06dd6ec2e0f016fc0cb6bbce27e3dcd3"
}
Frame {
msec: 1568
- hash: "85ea65c275c6217c44038c1bc87f2356"
+ hash: "9ebba3740bb33db00ebb62706e1d27a5"
}
Frame {
msec: 1584
- hash: "af77f08c99d41295ef6c99089c322f61"
+ hash: "9ebba3740bb33db00ebb62706e1d27a5"
}
Frame {
msec: 1600
- hash: "1427c98bee08b57e94cea220b7c017e4"
+ hash: "06dd6ec2e0f016fc0cb6bbce27e3dcd3"
}
Frame {
msec: 1616
- hash: "fa1062676e7f2e429e3f5f3babbccc5f"
+ hash: "601b397404250d01ec9e483683c32776"
}
Frame {
msec: 1632
- hash: "016c51ef6ad6729db5328b199c18c830"
+ hash: "a80dcdc8ce2c4e2653e01423ea053eba"
}
Frame {
msec: 1648
- hash: "94a3647a5c98770d60a2b5f17281e87e"
+ hash: "8fe7230266084f07f8fd9c6991461163"
}
Frame {
msec: 1664
- hash: "fc075081b0b7d8bc2556250962e52327"
+ hash: "5d9ed702af5c520f4b268077b957586a"
}
Frame {
msec: 1680
- hash: "0ef1d28912378939e0f82387164ace07"
+ hash: "6cccabc3a6ac3eef95794e6712404234"
}
Frame {
msec: 1696
- hash: "d55312d705b8ed5d188caf4f41820e0f"
+ hash: "8bfc492064d6c93727b59fd3ca2a8dc8"
}
Frame {
msec: 1712
- hash: "41c9c187b208ec1cef4e9ffe976c38ce"
+ hash: "e506cf18d730f4ab1e8e803b7663238a"
}
Frame {
msec: 1728
- hash: "6166be5f86adfc6b4c9438358529e5ce"
+ hash: "2187c8e798b2b60567284af6923a9418"
}
Frame {
msec: 1744
- hash: "aaa81e964b5c5ef2ebf2c200e7a47c26"
+ hash: "6ed42be04df8a4cc15d9d885e4b157f5"
}
Frame {
msec: 1760
- hash: "65dbdd2495e12b7dd7bbc31e1b2fa5b1"
+ hash: "b887f64a8e44a243f11e37692d54d2d1"
}
Frame {
msec: 1776
- hash: "b2d10e7cbccb0fdf3286fef81999d37e"
+ hash: "d5f157d073cd8de8cc58124455a38675"
}
Frame {
msec: 1792
- hash: "e239d20ee23a6ff680ded67182066430"
+ hash: "d39f213d4b91229bd76d48589a067623"
}
Frame {
msec: 1808
- hash: "d4f2df7f9c7a7a9e98975e44393a2e37"
+ hash: "7b2413f4fd12fd4d38fc40ebbbd893f3"
}
Frame {
msec: 1824
- hash: "9c1ce93161e16704feb7d37cd01acbe9"
+ hash: "bd1af1e9187a58841b33862047ad4ae3"
}
Frame {
msec: 1840
- hash: "94e148b49b53cab2491a974eb85ab489"
+ hash: "1e54f1b5ef6bb7085a36d433af94a9b3"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 145; y: 286
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 286
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 195; y: 288
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1856
- hash: "9a1dfb6b09218c83c89f9a2d32f92ef6"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 290
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 253; y: 290
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1872
- hash: "7cb78e2e5f6d35d456c95f2bd8652eb5"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 286; y: 292
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 315; y: 292
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1888
- hash: "e3a3be52fda460050db6d2d9947d3cf8"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 346; y: 294
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 385; y: 294
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1904
- hash: "6651ca6a31f281676a5ba312c306ee91"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 420; y: 294
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 420; y: 294
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1920
@@ -526,287 +670,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "feddbf269adfc8bb1b1a3656b5b5736d"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1952
- hash: "4710e2abb2d907686a5ef58c3d22b391"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1968
- hash: "2a479b302b425df282502e71b4ad7fbf"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1984
- hash: "a912a2993c3a2a280e83caee932ff707"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2000
- hash: "022504443e57ee5593e5054961265a15"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2016
- hash: "a47ccf22b66f7d62c017aa1da19904d2"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2032
- hash: "133c29b49f3a98fb5eca71fff217252d"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2048
- hash: "058c2a759a415d548fec309bfb255a70"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2064
- hash: "662be553c32b0145b3f4fee9bb0d659d"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2080
- hash: "7c7460ff21e7c27af2326b399b5b9791"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2096
- hash: "e6b9049949a0ee4ff8a0fcaf5464f479"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2112
- hash: "39db5e52253948ca5059d9c102bedea0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2128
- hash: "eb1939458851780b7bb51ee50f0a3bd7"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2144
- hash: "feaaa4fab78c73321dd9ab820ec2b746"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2160
- hash: "221c8afbedcfb8ca7e87e279e5406103"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2176
- hash: "41c8d2686ddb882981a7d3a5c8c69005"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2192
- hash: "abb2d6a76af5114b191a4373f95cdb6f"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2208
- hash: "7d3b1fc34082a160cbea4409af85fc9c"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2224
- hash: "55e07e33b231e3c7925c7b3cfada4839"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2240
- hash: "55e07e33b231e3c7925c7b3cfada4839"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2256
- hash: "3a616453adf2b16e23654f515d797e99"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2272
- hash: "b3461a3c55b9603905ad208c7396e1a9"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2288
- hash: "b3461a3c55b9603905ad208c7396e1a9"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2304
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2320
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2336
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2352
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2368
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2384
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2400
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2416
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2432
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2448
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2464
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2480
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2496
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2512
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "4c6ff9097308cb3840ef39a081bdc94f"
}
Frame {
msec: 2528
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "93a2b229f21b76354a8cf94f150c69e2"
}
Frame {
msec: 2544
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "e65350b411affe4274499fd577ccf842"
}
Frame {
msec: 2560
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "499968d33068c7e08898a19cce691766"
}
Frame {
msec: 2576
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "fe884e410a8c7b2167f814ebdf7700af"
}
Frame {
msec: 2592
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "c0225009d42b670f5f1ce0871be90db6"
}
Frame {
msec: 2608
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "320d205e147fa6470d71538d686ff458"
}
Frame {
msec: 2624
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "ec0a1fa273e6568d041ee2497a715704"
}
Frame {
msec: 2640
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "159c558e0d1b59db8e9459c4203d56f3"
}
Frame {
msec: 2656
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "00d237cd7ad6df807b4f9281bbc72992"
}
Frame {
msec: 2672
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "c472991635460a93f744538328cd89f4"
}
Frame {
msec: 2688
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "318ba06f590d4e3a1dea6affcc60243b"
}
Frame {
msec: 2704
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "d344b62df42e88e14d45def62565791a"
}
Frame {
msec: 2720
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "5c2658568080a663440e09acbcf2fa8d"
}
Frame {
msec: 2736
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 29; y: 239
- modifiers: 0
- sendToViewport: true
+ hash: "8e64867dabeaeae51149362c5f42545b"
}
Frame {
msec: 2752
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "abd81e11370469803bad5de9a9c77f63"
}
Frame {
msec: 2768
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "1cce356ebd61d7c88edb84c58a564def"
}
Frame {
msec: 2784
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "0ab027423651612ceba2b35e57d75d91"
}
Frame {
msec: 2800
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
+ hash: "515b6375cf0fefc8580d62cd5b2680f7"
}
Frame {
msec: 2816
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 35; y: 241
- modifiers: 0
- sendToViewport: true
+ hash: "f44c12b701e73a7e4d35fd10ea0f5003"
}
Frame {
msec: 2832
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 63; y: 243
- modifiers: 0
- sendToViewport: true
+ hash: "76bee658c9915fda03967fcb2e595683"
}
Frame {
msec: 2848
- hash: "fbd9a45fc6b5a96b4e521dc5c68dbf7e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 244
- modifiers: 0
- sendToViewport: true
+ hash: "064d5525e1fa7c8ec5f571a56e666754"
}
Frame {
msec: 2864
- hash: "6f1a516cde59f142f5ac8b4e824a2bab"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 243
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 158; y: 243
- modifiers: 0
- sendToViewport: true
+ hash: "ffd23fa2b1281cd120d6b11912bb8641"
}
Frame {
msec: 2880
@@ -814,338 +910,198 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "3f6d74079d8ec38eb1f12ddde18f864a"
+ hash: "c6d306961e1e574d8c57fd849029121c"
}
Frame {
msec: 2912
- hash: "b58ac3c0ab5e556be249bfdc3fb85c56"
+ hash: "1fcf6b150607c0ea807026f8f9e28f61"
}
Frame {
msec: 2928
- hash: "291dd50b6dd4ee71265631ce338f16d2"
+ hash: "e16a333231b3c65c85ff498e941f8c05"
}
Frame {
msec: 2944
- hash: "6af30d160a3c1126718c62fcd5e85a89"
+ hash: "3e49589f1b4a6b8212f5c10d234f8ffa"
}
Frame {
msec: 2960
- hash: "3f09b75f49f53e83d53fdc8cb2a1a2a7"
+ hash: "02ce2b719ddbd977bb933882a40024f5"
}
Frame {
msec: 2976
- hash: "7c9e03c8bc2691253eb5be656bbcfaa5"
+ hash: "a161119d1f022885db1af71ededa2b8c"
}
Frame {
msec: 2992
- hash: "95c1ca6b2550f5575c2297acad5bfd0f"
+ hash: "62a006aab9629dc1e8359c52664ee34b"
}
Frame {
msec: 3008
- hash: "be05537c0b9246b0c4d48ae344275bb9"
+ hash: "62a006aab9629dc1e8359c52664ee34b"
}
Frame {
msec: 3024
- hash: "59de97652e25f49b1bf016a9b124d324"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3040
- hash: "7194bacd56906f83948844224ce6a3e7"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3056
- hash: "09fe50cbbcc7432d6fa6bbe875eae5e3"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3072
- hash: "a95c1f6ca5a638c4d9229321a84e51a4"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3088
- hash: "c439b31b64510ce025ad326364e8f690"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3104
- hash: "c28c637ff5f0ae6d4532fba13cfb8ea4"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3120
- hash: "2e095e9433e1f504163aebc8450be923"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3136
- hash: "5fb49164c1bad4bb96a13cfbb336312b"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3152
- hash: "34b7976b3dbf0c5462ddf77153d9d2c9"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3168
- hash: "d4007272d676a896c99adb66afa0c10b"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3184
- hash: "07638f1f5eb5786a12cbc74414fe29b5"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3200
- hash: "1fe90791c573865f425ef0e43faf7a1c"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3216
- hash: "b149986c7b395106a808b1fcd1d8bcb2"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3232
- hash: "ecb2b6d44eafb8a0b5493520b64e5e5b"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3248
- hash: "fc66b2e38d477c16584eee4f541df511"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3264
- hash: "023152c61ad6cd0b8726e6c8fa6043a4"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3280
- hash: "b788f8a7e1e42f768fd1fe1198ca0344"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3296
- hash: "4f7f8b7f5bb78bb9327b6fa8142ce3a2"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3312
- hash: "30f041278c08174671568a0dfb7cbdf7"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3328
- hash: "30f041278c08174671568a0dfb7cbdf7"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3344
- hash: "6ecd90fc89ab9b6c4813fa6a6e9dffdb"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3360
- hash: "6ecd90fc89ab9b6c4813fa6a6e9dffdb"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3376
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3392
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3408
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3424
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3440
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3456
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3472
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3488
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3504
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3520
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3536
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3552
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3568
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3584
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3600
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3616
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3632
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3648
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3664
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3680
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3696
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3712
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3728
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3744
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3760
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3776
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3792
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3808
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3824
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3840
- image: "qtbug10586.3.png"
- }
- Frame {
- msec: 3856
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3872
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3888
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3904
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3920
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3936
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3952
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3968
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3984
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4000
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4016
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4032
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4048
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4064
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 4080
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4096
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4112
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4128
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4144
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4160
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4176
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4192
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml b/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
index 9ccebfa07b..65caeddaa8 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
@@ -1,5 +1,6 @@
import QtQuick 1.0
+/* This test checks that animations do occur while the flickable is flicking */
Rectangle {
width: 200
height: 400
@@ -11,11 +12,6 @@ Rectangle {
border.color: "black"
border.width: 10
width: 1000; height: 1000
- rotation: 90
- gradient: Gradient {
- GradientStop { position: 0; color: "black" }
- GradientStop { position: 1; color: "white" }
- }
}
}
Rectangle {
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png
new file mode 100644
index 0000000000..e7571f24b8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png
new file mode 100644
index 0000000000..60d09e9242
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
index d1de5d089f..82303efdea 100644
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
@@ -6,530 +6,510 @@ VisualTest {
}
Frame {
msec: 16
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 32
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 48
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 64
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 80
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 96
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 112
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 128
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 144
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 160
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 176
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 192
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 208
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 224
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 240
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 256
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 272
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 288
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 304
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 320
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 336
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 352
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 368
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 384
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 400
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 416
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 432
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 448
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 54; y: 52
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 464
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 480
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "650770d62a63031754b3c68f666a5805"
}
Frame {
msec: 496
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "eb28945becabee0dffe618632d4db061"
}
Frame {
msec: 512
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "6c7b66dff531723362418dacd23ea59e"
}
Frame {
msec: 528
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "093bd3dd02a6d9f4dbd75a329bbf63f5"
}
Frame {
msec: 544
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "5328b1f3932c8bf817a5031102e21c25"
}
Frame {
msec: 560
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "ee2b8dc4ebdaaed41ae820385f56db83"
}
Frame {
msec: 576
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "adf71c703dff4514d6ae247fd6b89030"
}
Frame {
msec: 592
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c93d78e604406a3c61c2b34e5e0893a4"
}
Frame {
msec: 608
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c91dbb897289d2949d08c6381583ad5e"
}
Frame {
msec: 624
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e3a370e3d390e8d73731d659fae5908"
}
Frame {
msec: 640
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e6d3505120260677f5f1355abf0f2b1d"
}
Frame {
msec: 656
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "251d68b91b37ef95ff61055f7b2ba0b5"
}
Frame {
msec: 672
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "333a25691bafa88fbc92a153886c3b47"
}
Frame {
msec: 688
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e63367e5001732975bc4c002c079dbd8"
}
Frame {
msec: 704
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "04e25f2fd913c38ee24558b52fb3ed37"
}
Frame {
msec: 720
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "739f155ad3d703fa0255afed51baf51c"
}
Frame {
msec: 736
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "739f155ad3d703fa0255afed51baf51c"
}
Frame {
msec: 752
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "16de427e26afa1a1d91541fca1537033"
}
Frame {
msec: 768
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "11a874ab1c429e1bcf5498808f3c42f7"
}
Frame {
msec: 784
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e97f33a71bf889815782c17067bcd736"
}
Frame {
msec: 800
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9f2f0728689a5ff76f87b13c92e9fd40"
}
Frame {
msec: 816
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9186cd14c3d9f2ad560be047cc483b50"
}
Frame {
msec: 832
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "af2eb37824ad3567ce9db0329f647d50"
}
Frame {
msec: 848
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "f09d264ed5f44313c19f2f985a26b9cd"
}
Frame {
msec: 864
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "3ed8b3051d0d603bd514783fe04124a7"
}
Frame {
msec: 880
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "38c7f8d39fd9a77400138da4e3ebb963"
}
Frame {
msec: 896
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "6682f53fdda2d8662a31b725d23b08f6"
}
Frame {
msec: 912
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "0f16d2640b51c9ada08c7aa0e8853d86"
}
Frame {
msec: 928
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "22b9025d523dd1adb87f9b4c89295b29"
}
Frame {
msec: 944
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 960
- image: "scriptAction.0.png"
+ image: "scriptAction-visual.0.png"
}
Frame {
msec: 976
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 992
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1008
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1024
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1040
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1056
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1072
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1088
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 146; y: 259
- modifiers: 0
- sendToViewport: true
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1104
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1120
- hash: "9850cd8ed4643900409d1a87ef0bc4cf"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1136
- hash: "1cf03396b01e931e4e7e8e7e57e19c5f"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1152
- hash: "25fe648b85ec2d82621853dcbdbf695a"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1168
- hash: "1ca701e56fe387d5849f6933eb53aee9"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1184
- hash: "b39ecb792659a053a8985e2a849d6d51"
+ hash: "1761f6606bbdf5772594cf96412337ca"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 54; y: 52
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1200
- hash: "9a783432a054beec81cc5687f75a36dc"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1216
- hash: "edbd222d7ba6c6f819ded45fe316d461"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1232
- hash: "eaf20159c4b90f90872bbd514d3a0cec"
+ hash: "77ab7b0bad67c80c5f685b02e264d333"
}
Frame {
msec: 1248
- hash: "964807dd9b91e765577a773ef1ce2593"
+ hash: "27c3099b0e9f0607e9ebc983b2613eb9"
}
Frame {
msec: 1264
- hash: "16e12026ab14657b0f36b8315684455d"
+ hash: "81bd467b2314fb877825323a6120de4a"
}
Frame {
msec: 1280
- hash: "d001a6b2fec3c66baaa45d9ff93b3f63"
+ hash: "5cd632ac5399826249137ff2f27ef734"
}
Frame {
msec: 1296
- hash: "fef11eb5f635bc11cd9679b7213b3b92"
+ hash: "3b6732d7539d7b9b6ac13b6f8291b993"
}
Frame {
msec: 1312
- hash: "0a0cd5f5004048d88712cfe6943470c0"
+ hash: "6bde822175f1ee22a8bb0528d6170a5a"
}
Frame {
msec: 1328
- hash: "0d83178afdae5feaa9915d56c24373ad"
+ hash: "a8401f0c19db5c395cf122f3fe6f3be2"
}
Frame {
msec: 1344
- hash: "0a9e6e0b7b23ce93dc4e1f886cf9c7d1"
+ hash: "10e5126a9f97caf19df3d0ec4485222f"
}
Frame {
msec: 1360
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "f7b0bde6f4c9e9c9aecdbf11f0ec525c"
}
Frame {
msec: 1376
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "7501da757e6b0ba3923635765ef63f5b"
}
Frame {
msec: 1392
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "c66f5f30f7a545fcf0b52debd68d96c1"
}
Frame {
msec: 1408
- hash: "dc98f32a1a2d6e74998123b5232107b0"
+ hash: "ea679c31fd51733076716a325d2d4dc1"
}
Frame {
msec: 1424
- hash: "db3010ef552146df938c237f6c92bff5"
+ hash: "01ffc159e0d0796e4de7cffd46685481"
}
Frame {
msec: 1440
- hash: "101e8595d0301e88376ec52ba9361f84"
+ hash: "c53b75720a772a43a6c7d046ffb4d39b"
}
Frame {
msec: 1456
- hash: "119d548c59baa7e47266d2ceca663288"
+ hash: "1338c0458f32869e35163a2dcb950b8e"
}
Frame {
msec: 1472
- hash: "f141fafe102a0b9a2bf33e8c3fc800ff"
+ hash: "1338c0458f32869e35163a2dcb950b8e"
}
Frame {
msec: 1488
- hash: "b01f9ca8d4fbff17b3d48c70898a044d"
+ hash: "d894739536bb7033d321f8862264b5e6"
}
Frame {
msec: 1504
- hash: "cf67954a2d1b22e8d2cfdc26419bafb8"
+ hash: "52d5556f4b2404ae896ae36e0bc866ed"
}
Frame {
msec: 1520
- hash: "7680b2b5a63dea13d733947297e01355"
+ hash: "5ff9d9ab8099b2b9469df9efe672f46d"
}
Frame {
msec: 1536
- hash: "af1c017acf6b3c8cff86c9ceb60db3cb"
+ hash: "acadb950bd78c6fade9161f8e53628e7"
}
Frame {
msec: 1552
- hash: "0b23ec51f71fddae5e2238ab5754f1db"
+ hash: "7583b99a5f3aede70fc10728d77f57cc"
}
Frame {
msec: 1568
- hash: "976643961ecbdc86335180ba812b874e"
+ hash: "f72881eb92792727985482996bf689f9"
}
Frame {
msec: 1584
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "26e0d64d5afeecdc4d93492f1eaaa54f"
}
Frame {
msec: 1600
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "93206a830cf787d00a6bb2d3c91d40bc"
}
Frame {
msec: 1616
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "af0a99b072a754cd0ecb75a7198849c1"
}
Frame {
msec: 1632
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "84adc92e299feeb494b108a009d1b662"
}
Frame {
msec: 1648
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "4fac6d471517625d4f5ce6ed6aaebe0b"
}
Frame {
msec: 1664
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6952c27025740aca006a13da87379f9f"
}
Frame {
msec: 1680
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "3297ed7bffb48a4f2ca90dd81eaf7c7a"
}
Frame {
msec: 1696
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "3297ed7bffb48a4f2ca90dd81eaf7c7a"
}
Frame {
msec: 1712
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1728
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1744
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1760
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1776
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1792
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1808
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1824
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1840
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1856
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1872
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1888
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1904
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1920
- image: "scriptAction.1.png"
+ image: "scriptAction-visual.1.png"
}
Frame {
msec: 1936
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1952
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1968
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 1984
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2000
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2016
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2032
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2048
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
deleted file mode 100644
index 64d6b06895..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png
deleted file mode 100644
index 1a25c63ba1..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
index 1427c9de73..0a14542acf 100644
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
@@ -6,10 +6,10 @@ then immediately change blue, and then animate moving 50 pixels down.
*/
Rectangle {
- width: 400; height: 400
+ width: 100; height: 100
Rectangle {
id: myRect
- width: 100; height: 100
+ width: 50; height: 50
color: "red"
}
MouseArea {
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png
deleted file mode 100644
index 0f33d99ccb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png
deleted file mode 100644
index 0f33d99ccb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png
deleted file mode 100644
index 06a3dbd45f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml
deleted file mode 100644
index ee9a550b02..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml
+++ /dev/null
@@ -1,1599 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 32
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 48
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 64
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 80
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 96
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 112
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 128
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 144
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 160
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 176
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 192
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 208
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 224
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 240
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 256
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 272
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 288
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 304
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 320
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 336
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 352
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 368
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 384
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 400
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 416
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 432
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 448
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 464
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 480
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 496
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 512
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 528
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 544
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 560
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 576
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 592
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 608
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 624
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 640
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 656
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 672
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 688
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 704
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 720
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 736
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 752
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 768
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 784
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 800
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 816
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 832
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 848
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 864
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 880
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 896
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 912
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 928
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 944
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 960
- image: "test.0.png"
- }
- Frame {
- msec: 976
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 992
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1008
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1024
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1040
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1056
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1072
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1088
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1104
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1120
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1136
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1152
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1168
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1184
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1200
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1216
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1232
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1248
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1264
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1280
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1296
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1312
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1328
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1344
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1360
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1376
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1392
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1408
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1424
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1440
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1456
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1472
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1488
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1504
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1520
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1536
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1760
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1824
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1840
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1856
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1872
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1888
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1904
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1920
- image: "test.1.png"
- }
- Frame {
- msec: 1936
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1952
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1968
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1984
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2000
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2016
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2032
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2048
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2064
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2080
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2096
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2112
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2128
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2144
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2160
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2176
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2192
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2208
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2224
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2240
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2256
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2272
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2288
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2304
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2320
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2336
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2352
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2368
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2384
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2400
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2416
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2432
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2448
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2464
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2480
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2496
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2512
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2528
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2544
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2560
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2576
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2592
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2608
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2624
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2640
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2656
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2672
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2688
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2704
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2720
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2736
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2752
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2768
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2784
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2800
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2816
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2832
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2848
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2864
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2880
- image: "test.2.png"
- }
- Frame {
- msec: 2896
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2912
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2928
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2944
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2960
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2976
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3008
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3024
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3040
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3056
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3072
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3088
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3120
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3136
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3152
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3168
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3184
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3200
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3216
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3232
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3248
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3264
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3280
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3296
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3312
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3328
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3344
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3360
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3376
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3392
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3408
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3424
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3440
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3456
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3472
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3488
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3504
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3520
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3536
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3760
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3824
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3872
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3888
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3904
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3920
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3936
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3952
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3968
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3984
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4000
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4016
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4032
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4048
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4064
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4080
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4096
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4112
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4128
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4144
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4160
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4176
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4208
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4224
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4240
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4256
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4272
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4304
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4320
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4336
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4352
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4368
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4384
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4400
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4416
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4432
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4448
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4464
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4480
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4496
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4512
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4528
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4544
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4560
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4576
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4592
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4608
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4624
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4640
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4656
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4672
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4688
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4704
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4720
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4736
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4752
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4768
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4784
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4832
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4848
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4864
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4880
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4896
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4928
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4944
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4960
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4976
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4992
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5008
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5024
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5040
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5056
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5072
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5088
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5104
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5120
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5136
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5152
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5168
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5184
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5200
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5216
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5232
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5248
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5264
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5280
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5296
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5312
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5328
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5344
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5360
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5376
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5392
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5408
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5424
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5440
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5456
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5472
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5488
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5504
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5520
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5536
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5824
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5840
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5856
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5872
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5888
- hash: "715a587be7a5803af2827e882236d187"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png
deleted file mode 100644
index fa711c1b36..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png
deleted file mode 100644
index fa711c1b36..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml
deleted file mode 100644
index 5d84bfee0f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml
+++ /dev/null
@@ -1,607 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 32
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 48
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 64
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 80
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 96
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 112
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 128
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 144
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 160
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 176
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 192
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 208
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 224
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 240
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 256
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 272
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 288
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 304
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 320
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 336
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 352
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 368
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 384
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 400
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 416
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 432
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 448
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 464
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 480
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 496
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 512
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 528
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 544
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 560
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 576
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 592
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 608
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 624
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 640
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 656
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 672
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 688
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 704
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 720
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 736
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 752
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 768
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 784
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 800
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 816
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 832
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 848
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 864
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 880
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 896
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 912
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 928
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 944
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 960
- image: "test2.0.png"
- }
- Frame {
- msec: 976
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 992
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1008
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1024
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1040
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1056
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1072
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1088
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1104
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1120
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1136
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1152
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1168
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1184
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1200
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1216
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1232
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1248
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1264
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1280
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1296
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1312
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1328
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1344
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1360
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1376
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1392
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1408
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1424
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1440
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1456
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1472
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1488
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1504
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1520
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1536
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1552
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1568
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1584
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1600
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1616
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1632
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1648
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1664
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1680
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1696
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1712
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1728
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1744
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1760
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1776
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1792
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1808
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1824
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1840
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1856
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1872
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1888
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1904
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1952
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1968
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1984
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2000
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2016
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2032
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2048
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2064
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2080
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2096
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2112
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2128
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2144
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2160
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2176
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2192
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2208
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2224
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2240
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2256
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2288
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2304
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2320
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2336
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2352
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2368
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
index 9309e377bc..e469a7999f 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
index 20e6c8e062..905603f020 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
index c7559ac646..5cbd3bdf91 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
index bf2844b7cc..851c1ba582 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png
deleted file mode 100644
index beef0bf9ec..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png
deleted file mode 100644
index 1847dc703a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png
deleted file mode 100644
index c7559ac646..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png
deleted file mode 100644
index 20e6c8e062..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png
deleted file mode 100644
index 9309e377bc..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png
deleted file mode 100644
index 7ac879b003..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
index cd73a3c4a0..0c9747e5f9 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
@@ -6,255 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 32
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 48
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 64
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 80
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 96
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 112
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 128
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 144
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 160
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 176
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 192
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 208
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 224
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 240
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 256
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 272
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 288
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 304
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 320
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 336
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 352
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 368
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 384
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 400
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 416
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 432
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 448
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 464
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 480
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 496
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 512
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 528
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 544
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "be06cc567f08fbc0cd60d753a19df162"
}
Frame {
msec: 560
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "c4cf6807b423553872e848146e79efb3"
}
Frame {
msec: 576
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "b83923f1eef68a4a8dd36acad0f4b592"
}
Frame {
msec: 592
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "5599829a04f2c2a6c6181c5857762ba0"
+ }
+ Frame {
+ msec: 608
+ hash: "95da52b5add95150dd446bc5055a2b60"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 608
- hash: "ce962a38caeb7bf7eef05112fbb52f91"
- }
- Frame {
msec: 624
- hash: "779f0660ce5bc2c2fc9f05d8b86158a8"
+ hash: "9bb2757c3b1bbc051edd9ebd240611f8"
}
Frame {
msec: 640
- hash: "615e07a3c83539321befb44aa8fac811"
+ hash: "25213fbced4c67f42ce35d07db93bb32"
}
Frame {
msec: 656
- hash: "8a00b9f66ca7fdb0e4975f547025f873"
+ hash: "2a9ded25ed2dbb9563f9c14084234a22"
}
Frame {
msec: 672
- hash: "43bbe82799b1d8453f89a7ef928b1e54"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 688
- hash: "2cc468d6e14c27ff1c0bd6064ae47509"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 704
- hash: "1dc9d1b95016ccbeaca5b7a867a5cc3a"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 720
- hash: "f36734c91fe41a7947965dac97393ad4"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 736
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "8c9f7d72e077a7e75d185a2ecbdcc77c"
}
Frame {
msec: 752
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "55a417e91f182ebd28dd7264d8b76363"
}
Frame {
msec: 768
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "01a637de9f60c82bfd9140e852e17574"
}
Frame {
msec: 784
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "01194b2c3489ea7298e961979064aab3"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "f6126328d483536d3f161f71d40821df"
}
Frame {
msec: 816
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "b99dd9793a63bbdab37cfe236d56c589"
}
Frame {
msec: 832
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "825f39b42d0b2e0d894874713b731cfc"
}
Frame {
msec: 848
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "7729b9c2133c52e50f43d6100a24e9c2"
}
Frame {
msec: 864
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 880
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 896
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "8e59b002437ec17043d11c92556365fd"
}
Frame {
msec: 912
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "3809a54af9c9a4b15aa8b82caa5b703f"
}
Frame {
msec: 928
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "96cb1ab7123c54d4fa0d93b6501a439d"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "de74cd5be709954522dd02945d6da9c9"
}
Frame {
msec: 960
@@ -262,271 +294,311 @@ VisualTest {
}
Frame {
msec: 976
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "d3ff94471da3620701d62b87f37fca8b"
}
Frame {
msec: 992
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "15bccb078b9061ef50c73a974e2f43fa"
}
Frame {
msec: 1008
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1024
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1040
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1056
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "5b68568968d0de3a9bad8d053045f45c"
}
Frame {
msec: 1088
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "6b6da385fbc00e3542d7007524ff87f6"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1104
- hash: "1c29b3d1086b261c2a9e94d49567484f"
+ hash: "bba5021ad78a5a142cf54d4db8d8689e"
}
Frame {
msec: 1120
- hash: "6ab17a210b45dae1ed99fd1689bb3e46"
+ hash: "5c223d5dcf028cd3bac18b21359253f3"
}
Frame {
msec: 1136
- hash: "feb504605f7f27ca3a2bf080c1fb1e19"
+ hash: "c5b09a11d466fd90e1014f58755ec77b"
}
Frame {
msec: 1152
- hash: "bec2d2e2222587a379af12a30e078886"
+ hash: "f4ba8fcc4f955e25c2364d8ee1054d0d"
}
Frame {
msec: 1168
- hash: "39cb2bdc44273023b557a0f56df61d85"
+ hash: "2a6009e790cd98e3a67c107b0f08e00b"
}
Frame {
msec: 1184
- hash: "2cda045b452c4645be1cdb4efd238532"
+ hash: "caa1b5ee40dc20c87516b7292a86f79b"
}
Frame {
msec: 1200
- hash: "1f3efbfadd22734b5fd656596c11885b"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 1216
- hash: "7277c05a06e481a5af13e4fe39e322f8"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Key {
- type: 7
+ type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1232
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "2333dcdf0f46ade554e036caa5e3cb31"
}
Frame {
msec: 1248
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "9b09c65db96f483dec7ba3a55b5a91e6"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1264
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "49fc76245e741968095ab689195da40c"
}
Frame {
msec: 1280
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "4e991b92348d813f5a3a1080270a88a3"
}
Frame {
msec: 1296
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "1e4a07fc966dab9ee0d39b25a4c43c09"
}
Frame {
msec: 1312
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "ade33b908f2a5e6916a74bc00b08414e"
}
Frame {
msec: 1328
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "481b41b7bc8fafcb40b7d09fcfc2e86e"
}
Frame {
msec: 1344
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1360
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1376
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1392
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1408
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1424
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1440
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1456
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1472
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1488
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "2a8a2867f38ff05a9ef5fa50fe7de229"
}
Frame {
msec: 1520
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "824ec4f9e596a67fe6ca17ea03529c1f"
+ }
+ Frame {
+ msec: 1536
+ hash: "bf7d9c49d0a0ff4d03ceadf8d797a774"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1536
- hash: "c5f88e95ead1f4542b766577d80e70fd"
- }
- Frame {
msec: 1552
- hash: "d38118f26b9c2b68dc8fdb8d2a959134"
+ hash: "3e3c62601c2965e851e8b5c0adb73651"
}
Frame {
msec: 1568
- hash: "44c483c899220f040aa7808f15fac429"
+ hash: "ed7357b2596da4683bb19cbf1dcd6458"
}
Frame {
msec: 1584
- hash: "02a63967944c8c53a9741318e99a326e"
+ hash: "32ed0774f926341af504b716bd9394e1"
}
Frame {
msec: 1600
- hash: "7fc10e91212af979e09c8d3b98625c1b"
+ hash: "2d4ffbd7cf53ca4824d206d4a4608ebb"
}
Frame {
msec: 1616
- hash: "d14b69d18adc548dfb68dae1559effdb"
+ hash: "a7a0b6bd336f00a10818bdd9992a29bb"
}
Frame {
msec: 1632
- hash: "cb9bce7fa14a367197fa34ad3acc4cdd"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1648
- hash: "105a0e3d36296eba16077c4cf93547ae"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1664
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1680
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "55801794958126a1890bc0122084ee20"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1696
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "49573efd5a0bc65107a074fb35d67f63"
}
Frame {
msec: 1712
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c9bf07bc12f97c6d0eef816ce4423f5b"
}
Frame {
msec: 1728
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "ab91f24c27d52123502815381e926cdc"
}
Frame {
msec: 1744
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "32ca7e06569a63d56ab71c67c9f82d60"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "9e5f04f019ccd1f27b511faeb7470e10"
}
Frame {
msec: 1776
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "5544186a3338dd788367fa4262815204"
}
Frame {
msec: 1792
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c01aa7b7363faf99f69b90be8843f059"
}
Frame {
msec: 1808
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "6bd1ec848b817ef978b4dfae4eb23c1e"
}
Frame {
msec: 1824
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1840
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1856
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1872
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "04a3efd4b810417632726048bdffa904"
}
Frame {
msec: 1904
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c347e7d3dccba41102e2b669c9e9c0a0"
}
Frame {
msec: 1920
@@ -534,271 +606,295 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "47c9794374c383e1f595e60ea6890e11"
}
Frame {
msec: 1952
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "73cdfe34edab93baea779896169b4195"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1968
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "53add51d9e11a1fc4d0f6e3d1c6a70bc"
}
Frame {
msec: 1984
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "90143346b171faf5bdb7d4d0c0556b24"
}
Frame {
msec: 2000
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "e4e642507d3a631f5813a11cb7673c91"
}
Frame {
msec: 2016
- hash: "6e4e4321cda32abab394419a9e6494dc"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2032
- hash: "45b79c56379afa7243547fedfa3260db"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2048
- hash: "4635555c632f325a151d340a3eb742b9"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2064
- hash: "0255da44fa95548427139073c994234c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2080
- hash: "eac0c428ea7b7aa55a469562d2cb3fd6"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2096
- hash: "06ab23a83a5900cfdde98d4563414511"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2112
- hash: "808e4a745c58872d52ec6a3e669aea5c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2128
- hash: "e6231b43f93fd6ae3e0990def1168c39"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2144
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2160
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2176
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2192
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2208
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2224
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2240
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2256
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2272
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2288
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2304
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2320
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2336
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2352
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2368
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2384
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2400
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2416
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2432
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2448
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2464
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2480
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "512e992c6d621225735c37e2626714ad"
}
Frame {
msec: 2496
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "1a708d62af48302e93dda0ef0822aebb"
}
Frame {
msec: 2512
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "220660969092ba1b17addc6ba7148e06"
}
Frame {
msec: 2528
- hash: "e1c32968e36cb95be250121187ddf13e"
+ hash: "9dcdd42efc9beb957abdeaf2ee01fc43"
}
Frame {
msec: 2544
- hash: "70498453babe3ab5e0fec62bcd0ff332"
+ hash: "5995ac01ee680d6747dc78c36f70b577"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2560
- hash: "76fc1b1e6b22771bf08dfdd16b3f24e9"
+ hash: "c6eb964d8f4bf849df63eebdfbf6e286"
}
Frame {
msec: 2576
- hash: "c6be4f26750b8bc1a5b71ff381e462c6"
+ hash: "cff1925a172e278a36068886f0efbcbf"
}
Frame {
msec: 2592
- hash: "986f738d0f0f70b88f951d9f028ef61b"
+ hash: "4c725a05332806387713ab54302c559f"
}
Frame {
msec: 2608
- hash: "2201ad4f92bcf24ab62d0ddb8b2a64c1"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
+ }
+ Frame {
+ msec: 2624
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2624
- hash: "27e9a18cb70c8f2ab9e4dd7af321e8e4"
- }
- Frame {
msec: 2640
- hash: "3a352127f49f8c589b7b7da1232caf6b"
+ hash: "0cb7eeb24a6845d43ce0662c91b72bd3"
}
Frame {
msec: 2656
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "6dedbf7dc59b05dc57355141de0b660d"
}
Frame {
msec: 2672
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "5f82259afdabef688dd76729b5f847c7"
}
Frame {
msec: 2688
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "b67d418427db34726ddada60f76178a6"
}
Frame {
msec: 2704
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "780c9551f55fd46d294a1eef3b34aa34"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2720
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "521efe1778b2d2031071b55f30999de9"
}
Frame {
msec: 2736
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "49539356de68b7cd2cea52986ed2bb67"
}
Frame {
msec: 2752
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 2768
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 2784
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "b08ee15bfd1916b9619a0a3eeeec90b6"
}
Frame {
msec: 2816
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "3b4e65a0d4ee764d418d82a055ba9c87"
}
Frame {
msec: 2832
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "269d37497b0cd292a5b03124d1687ff6"
}
Frame {
msec: 2848
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "59fecd7ec62bf8c89e2222744d36e194"
}
Frame {
msec: 2864
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "71deceeac8b42a70868bb3ff788543b5"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2880
@@ -806,271 +902,319 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "ad790d242e84fec0bd75e1d7771682d7"
}
Frame {
msec: 2912
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "c09f4fca4ae14e0e41d9b58c1b83096f"
}
Frame {
msec: 2928
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 2944
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2960
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "015bf8203d45e5d477242055a3f19bfb"
}
Frame {
msec: 2976
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "ba2fb1258a2f3a81882780d3c7d5320a"
}
Frame {
msec: 2992
- hash: "20f96d3fbef9d51d8b8a28a6d58fabb2"
+ hash: "3637ffd219d403ed433fd72cd68a9b23"
}
Frame {
msec: 3008
- hash: "1e5d888fd4685960b8ae0a79e2287e89"
+ hash: "b0d858f1d51872969022f717c12480ed"
}
Frame {
msec: 3024
- hash: "2115c2e6689ce6669abf9f3741eb5df1"
+ hash: "0504b13a8f7cd68a1d64a22e46ea8654"
}
Frame {
msec: 3040
- hash: "c67949eb5f2210c6b2dad4ff352831ed"
+ hash: "d07cffa36609433e4a677e373ee7a3ff"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3056
- hash: "d982500bee0a6f6fb0861fb3c32319eb"
+ hash: "c1fd98ebc22e512f7199e0f319e88728"
}
Frame {
msec: 3072
- hash: "ffb111084712d5ecf072ade52103b985"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3088
- hash: "e5d594c8f08b9d283a3998648a383332"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3104
- hash: "20632ba6a4c14386eb01167059f7b617"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3120
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
+ }
+ Frame {
+ msec: 3136
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 3136
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
msec: 3152
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "5822b744b64944c515e8a01f52c7429f"
}
Frame {
msec: 3168
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "7d4ab5a17e7d6184f124299053cf94e3"
}
Frame {
msec: 3184
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "253cfd5001e4e4541d9cfd6370291cd2"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3200
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "1b1cab9d331c613dde896829027110f5"
}
Frame {
msec: 3216
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "8127f681a5c475133cfca95483fef2ce"
}
Frame {
msec: 3232
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "1a944877735fe3531d95b418dd75d576"
}
Frame {
msec: 3248
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "47ddcfaed130bf7dd539d965ebebedc1"
}
Frame {
msec: 3264
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "d0c37d1a7e97034d0f41ea6c2fff8f34"
}
Frame {
msec: 3280
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3296
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "11a907436350afa5ff592880303b4344"
}
Frame {
msec: 3312
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "39801aef92c2b1e0ca39bede36840911"
}
Frame {
msec: 3328
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "93463b61a00078f488f3941bc4729100"
}
Frame {
msec: 3344
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "f8d9cbe20b87017d81fbf627f3a3b2cd"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3360
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "2b8d37e7dcfb14394caf19aa8bc4b956"
}
Frame {
msec: 3376
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "bf91006930a3f22f12b62787c57bb91b"
}
Frame {
msec: 3392
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "7ce1d106e9d78a4a64f35f5982d32298"
}
Frame {
msec: 3408
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 3424
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 3440
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3456
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "71cd749e039a54aaaa05e1d3ccc738b4"
}
Frame {
msec: 3472
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3488
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "39e7afb00d53e098c005a1d96a8cc727"
}
Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3488
+ hash: "a9d2fa99fc70919e55293c07427147a2"
+ }
+ Frame {
msec: 3504
- hash: "f60a72dd52f6f319706dc97f873a484f"
+ hash: "96bb62cd9ebc2eba9797605190820349"
}
Frame {
msec: 3520
- hash: "a21fbcbb3c0ede708f2862959b84654f"
+ hash: "111b0d230c44d5d156e082a50c2a2a66"
}
Frame {
msec: 3536
- hash: "40e5f7530391e7641498c7870ce986c9"
+ hash: "1085cebcc8fdaefb2ec03392763c7657"
}
Frame {
msec: 3552
- hash: "809daf15ad3e9f981f1306da18dd6872"
+ hash: "451d670f44ae42d8cbb6a12cc6469d61"
}
Frame {
msec: 3568
- hash: "4b053d234c8c9a5afb7800abe28ea96f"
+ hash: "5c65a7b6ed7b4e85bb883c671aae5136"
}
Frame {
msec: 3584
- hash: "e011e3aaf143befc8e207945fdfc9f47"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3600
- hash: "55539d51f833b8a98fc14031a4a70c4c"
+ hash: "41424200cb76a0d5d64f8919645f6afb"
}
Frame {
msec: 3616
- hash: "07c2b526c022d0deae61acba26d7ea24"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "7a910e4b17fb7f5d10308e07ea8ce0a3"
}
Frame {
msec: 3632
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "4d9cc5670105acf3bc080cba8e100376"
}
Frame {
msec: 3648
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "a09d3b45bef532ed86d737839592ffc8"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3664
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "70179b7be24acd6d5d0d0de9d8fff74d"
}
Frame {
msec: 3680
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "95964eef01bfc86216a8e91261b867ed"
}
Frame {
msec: 3696
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "12b5e2bbfd573b2b8e33a745cd5af5a6"
}
Frame {
msec: 3712
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3728
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3744
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3760
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3776
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3792
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3808
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3824
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3840
@@ -1078,1802 +1222,106 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3872
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3888
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3904
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3920
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3936
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3952
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3968
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3984
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4000
- hash: "7d2f24d5a68397bedc2f9e3652715126"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4016
- hash: "55ff9205bb36d8f8965fb122a8686203"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4032
- hash: "8968377cbbdf7a46b6f13690826ac711"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4048
- hash: "8ce9afffac571f1a2cc6986d79dd2c8f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4064
- hash: "f75c375cdf8e1b83398e9b18e7c39852"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4080
- hash: "20c8db7fb344c056465175ed0fa9518a"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4096
- hash: "8135c2cae0dcf8ee6eccbfdd7b711bc0"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4112
- hash: "659fc24d328058eb118be5613ea25257"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4128
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4144
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4160
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4176
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4192
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4208
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4224
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4240
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4256
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4272
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4288
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4304
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4320
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4336
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4352
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4368
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4384
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4400
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4416
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4432
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4448
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4464
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4480
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4496
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4512
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4528
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4544
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4560
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4576
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4592
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4608
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4624
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4640
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4656
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4672
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4688
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4704
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4720
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4736
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4752
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4768
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4784
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4832
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4848
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4864
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4880
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4896
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4912
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4928
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4944
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4960
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4976
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4992
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5008
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5024
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5040
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5056
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5072
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5088
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5104
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "f01088d95d8409f98ae19b7970ecf3ad"
- }
- Frame {
- msec: 5136
- hash: "393987a9e22db77233465e3d08cfb244"
- }
- Frame {
- msec: 5152
- hash: "40e58eac132aa3b5f66f244ab7b189be"
- }
- Frame {
- msec: 5168
- hash: "d60c98c5fafe6bfa73a3d0c55f8f6716"
- }
- Frame {
- msec: 5184
- hash: "775733a71bb1d39f51b9fbc7e28d9ffe"
- }
- Frame {
- msec: 5200
- hash: "a343457f584c6e63aaec36b5db4fb7d0"
- }
- Frame {
- msec: 5216
- hash: "7c416bd1be54135056b037642026251f"
- }
- Frame {
- msec: 5232
- hash: "42813b6c3ef437a7b3ea8f03bb8b1894"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5264
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5280
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5296
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5312
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5328
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5344
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5360
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5376
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5392
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5408
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5424
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5440
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5456
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5472
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5488
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5504
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5520
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5536
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5552
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5568
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5584
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5600
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5616
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5632
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5648
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5664
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5680
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5696
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5712
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "b3af171ca40a5f081e2bfc984b8da551"
- }
- Frame {
- msec: 5744
- hash: "aadbc8c960fbe2e8aac184a99ba818bd"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "99fc06589f09cd10cfdf748f032eacbd"
- }
- Frame {
- msec: 5792
- hash: "f7915b1a8b9f7188263180a97c8b355f"
- }
- Frame {
- msec: 5808
- hash: "7fb30728fb764b659bad5bb6c4e71e2c"
- }
- Frame {
- msec: 5824
- hash: "4882459350feffaed89c2296c74b839d"
- }
- Frame {
- msec: 5840
- hash: "917a368858e431bebcd8f2fda67401f8"
- }
- Frame {
- msec: 5856
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5888
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5904
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5920
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5936
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5952
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5968
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5984
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6000
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6016
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6032
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6048
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6064
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6080
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6096
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6112
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6128
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6144
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6160
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6176
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6192
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6208
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6224
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6240
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6256
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6272
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "ada3c3558261701c705ecf79716df56a"
- }
- Frame {
- msec: 6304
- hash: "81c73fd3dd69eb767d8899a54c3088bb"
- }
- Frame {
- msec: 6320
- hash: "d54e7dd1e876666f64b5904240bf8764"
- }
- Frame {
- msec: 6336
- hash: "32bdeac66a43a967d549ca2ad8c59bbd"
- }
- Frame {
- msec: 6352
- hash: "04eec62cc40c8b31d989bead64909f9e"
- }
- Frame {
- msec: 6368
- hash: "cfffdd4edc35303ee260ed32956238b7"
- }
- Frame {
- msec: 6384
- hash: "fb562c38b9d2360517160f8a8ab29ced"
- }
- Frame {
- msec: 6400
- hash: "ba8ec8f0663bf1e62ff426b0c7d0d3b2"
- }
- Frame {
- msec: 6416
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6448
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6464
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6480
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6496
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6512
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6528
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6544
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6560
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6576
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6592
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6608
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6624
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6640
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6656
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6672
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6688
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6704
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6752
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6768
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6784
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6800
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6816
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6832
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6848
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "e6292a001405924f6d5f1a4051c3f6cb"
- }
- Frame {
- msec: 6880
- hash: "0d8a6b740cc7b33659aa0a1cc2bd2aa9"
- }
- Frame {
- msec: 6896
- hash: "07c4267ff499c46977420d4be7529e04"
- }
- Frame {
- msec: 6912
- hash: "f69cd14d97de3ca8d21ace1df1d5a523"
- }
- Frame {
- msec: 6928
- hash: "1572b31fd3ae917d5701d0b8f1d2a2bc"
- }
- Frame {
- msec: 6944
- hash: "e3953027fe269a5d4c6581717d516c65"
- }
- Frame {
- msec: 6960
- hash: "e35e8a5dfa7309696fa20c6f5480ac50"
- }
- Frame {
- msec: 6976
- hash: "77e75e66118f911c8fff084e1a825d77"
- }
- Frame {
- msec: 6992
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7024
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7040
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7056
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7072
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7088
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7104
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7120
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7136
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7152
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7168
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7184
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7200
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7216
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7232
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7248
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7264
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7280
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7296
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7312
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7328
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7344
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7360
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7376
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7392
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7408
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7424
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7440
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "8588c30394737cebc5580fe024589b08"
- }
- Frame {
- msec: 7472
- hash: "ca150a32b22cad95696ecfbad0ed3e67"
- }
- Frame {
- msec: 7488
- hash: "7f980e0cf67927918b1244456c38c7c0"
- }
- Frame {
- msec: 7504
- hash: "2bc38fb34a6875aabddce0f460914612"
- }
- Frame {
- msec: 7520
- hash: "328257a4691f341db39ee5ca677693eb"
- }
- Frame {
- msec: 7536
- hash: "05e0d8c986ff81e23f253d56ebdef46e"
- }
- Frame {
- msec: 7552
- hash: "be95d74a42318c52ab73ce694436a58b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "eba8512746494f3602d24dab86fb2559"
- }
- Frame {
- msec: 7584
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7600
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7616
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7632
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7648
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7664
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7712
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7728
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7744
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7760
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7776
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7792
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7808
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7824
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7840
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7856
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7872
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7888
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7904
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7920
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7936
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7952
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7968
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "7b2b3a84e9649370ce282383a820c39b"
- }
- Frame {
- msec: 8000
- hash: "08547adce7e02eec593fa636af004257"
- }
- Frame {
- msec: 8016
- hash: "29789cfbd1b648ce705cf17d03298ffe"
- }
- Frame {
- msec: 8032
- hash: "9e89ef84c86b1fc0531f0bd5ee530ba5"
- }
- Frame {
- msec: 8048
- hash: "21b437a318c5ef87c38f9199772eafa6"
- }
- Frame {
- msec: 8064
- hash: "70c8c8fbcf2d0331ca7ede8641a6068b"
- }
- Frame {
- msec: 8080
- hash: "c277e9d4f89e99d974d03dcfe41a1755"
- }
- Frame {
- msec: 8096
- hash: "54c7a72a3f814e707777c16ddd4532b8"
- }
- Frame {
- msec: 8112
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8144
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8160
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8176
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8192
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8208
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8224
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8240
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8256
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8272
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8288
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8304
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8320
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8336
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8352
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8368
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8384
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8400
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8416
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8432
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8448
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8464
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8480
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8496
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "7992512c72fe530fdd92866c96de29a0"
- }
- Frame {
- msec: 8528
- hash: "ad29d3653790efb998ac137538b4ce09"
- }
- Frame {
- msec: 8544
- hash: "f6daf0ad7f7c970ece3dc1898ab9f092"
- }
- Frame {
- msec: 8560
- hash: "417143caa8ed86082ea4e40aca7ca26e"
- }
- Frame {
- msec: 8576
- hash: "5215943d1fbffd5ef7c16d4ca6587628"
- }
- Frame {
- msec: 8592
- hash: "d143c87d3cf7560f911e98869983efef"
- }
- Frame {
- msec: 8608
- hash: "1fcb9b3d3b4c888c65334b88e240d79c"
- }
- Frame {
- msec: 8624
- hash: "61cec1c227eafafe6c03a33591b1825e"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8672
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8688
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8704
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8720
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8736
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8752
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8768
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8784
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8800
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8816
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8832
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8848
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8864
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8880
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8896
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8912
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8928
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8944
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8960
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8976
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8992
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9008
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9024
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9040
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9056
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "fcbb907bcf41602a5c30e2843a4b1fff"
- }
- Frame {
- msec: 9088
- hash: "5fee95daaa629bbf0cec3e41cd693502"
- }
- Frame {
- msec: 9104
- hash: "b9d721d2a8b0867bab29817b99b8ec2d"
- }
- Frame {
- msec: 9120
- hash: "e518e9872a502d3b2ff74d209626c9ee"
- }
- Frame {
- msec: 9136
- hash: "9c535d7da59ed2f2ce116e70c3e165cf"
- }
- Frame {
- msec: 9152
- hash: "e54fbcb23e01d5842885b92d4493535b"
- }
- Frame {
- msec: 9168
- hash: "7ac2467f24cef06c8842460ffe813ee0"
- }
- Frame {
- msec: 9184
- hash: "276293e289db5c9c7cd9612c73ef7792"
- }
- Frame {
- msec: 9200
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9232
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9248
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9264
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9280
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9296
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9312
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9328
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9344
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9360
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9376
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9392
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9408
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9424
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9440
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9456
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9472
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9488
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9504
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9520
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9536
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9552
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9568
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9584
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9632
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9648
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9664
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9680
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9696
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9712
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9728
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9744
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9760
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9776
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9792
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9808
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9824
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9840
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9856
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9872
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9888
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9904
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9920
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9936
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9952
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9968
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9984
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10000
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10016
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10032
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10048
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10064
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10080
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10096
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10112
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10128
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10144
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10160
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10176
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10192
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10208
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10224
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10240
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10256
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10272
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10288
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10304
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10320
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10336
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10352
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10368
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10400
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10416
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10432
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png
deleted file mode 100644
index f68f7dcf4a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png
deleted file mode 100644
index f68f7dcf4a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png
deleted file mode 100644
index e26c0289bb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml
deleted file mode 100644
index 8d3620056a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml
+++ /dev/null
@@ -1,1599 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 32
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 48
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 64
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 80
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 96
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 112
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 128
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 144
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 160
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 176
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 192
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 208
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 224
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 240
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 256
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 272
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 288
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 304
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 320
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 336
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 352
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 368
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 384
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 400
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 416
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 432
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 448
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 464
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 480
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 496
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 512
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 528
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 544
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 560
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 576
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 592
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 608
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 624
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 640
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 656
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 672
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 688
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 704
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 720
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 736
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 752
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 768
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 784
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 800
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 816
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 832
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 848
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 864
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 880
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 896
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 912
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 928
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 944
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 960
- image: "test.0.png"
- }
- Frame {
- msec: 976
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 992
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1008
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1024
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1040
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1056
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1072
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1088
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1104
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1120
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1136
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1152
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1168
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1184
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1200
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1216
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1232
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1248
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1264
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1280
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1296
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1312
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1328
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1344
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1360
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1376
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1392
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1408
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1424
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1440
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1456
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1472
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1488
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1504
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1520
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1536
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1760
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1824
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1840
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1856
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1872
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1888
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1904
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1920
- image: "test.1.png"
- }
- Frame {
- msec: 1936
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1952
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1968
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1984
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2000
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2016
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2032
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2048
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2064
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2080
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2096
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2112
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2128
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2144
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2160
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2176
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2192
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2208
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2224
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2240
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2256
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2272
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2288
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2304
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2320
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2336
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2352
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2368
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2384
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2400
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2416
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2432
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2448
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2464
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2480
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2496
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2512
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2528
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2544
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2560
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2576
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2592
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2608
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2624
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2640
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2656
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2672
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2688
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2704
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2720
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2736
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2752
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2768
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2784
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2800
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2816
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2832
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2848
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2864
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2880
- image: "test.2.png"
- }
- Frame {
- msec: 2896
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2912
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2928
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2944
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2960
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2976
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3008
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3024
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3040
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3056
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3072
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3088
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3120
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3136
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3152
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3168
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3184
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3200
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3216
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3232
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3248
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3264
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3280
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3296
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3312
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3328
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3344
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3360
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3376
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3392
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3408
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3424
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3440
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3456
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3472
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3488
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3504
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3520
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3536
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3760
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3824
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3872
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3888
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3904
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3920
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3936
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3952
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3968
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3984
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4000
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4016
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4032
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4048
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4064
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4080
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4096
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4112
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4128
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4144
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4160
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4176
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4208
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4224
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4240
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4256
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4272
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4304
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4320
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4336
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4352
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4368
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4384
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4400
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4416
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4432
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4448
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4464
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4480
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4496
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4512
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4528
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4544
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4560
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4576
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4592
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4608
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4624
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4640
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4656
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4672
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4688
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4704
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4720
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4736
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4752
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4768
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4784
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4832
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4848
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4864
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4880
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4896
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4928
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4944
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4960
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4976
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4992
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5008
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5024
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5040
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5056
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5072
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5088
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5104
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5120
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5136
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5152
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5168
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5184
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5200
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5216
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5232
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5248
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5264
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5280
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5296
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5312
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5328
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5344
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5360
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5376
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5392
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5408
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5424
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5440
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5456
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5472
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5488
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5504
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5520
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5536
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5824
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5840
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5856
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5872
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5888
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png
deleted file mode 100644
index 6be7aeff8a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png
deleted file mode 100644
index 6be7aeff8a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml
deleted file mode 100644
index 813665d950..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml
+++ /dev/null
@@ -1,607 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 32
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 48
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 64
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 80
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 96
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 112
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 128
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 144
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 160
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 176
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 192
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 208
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 224
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 240
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 256
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 272
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 288
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 304
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 320
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 336
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 352
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 368
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 384
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 400
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 416
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 432
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 448
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 464
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 480
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 496
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 512
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 528
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 544
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 560
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 576
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 592
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 608
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 624
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 640
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 656
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 672
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 688
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 704
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 720
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 736
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 752
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 768
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 784
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 800
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 816
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 832
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 848
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 864
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 880
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 896
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 912
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 928
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 944
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 960
- image: "test2.0.png"
- }
- Frame {
- msec: 976
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 992
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1008
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1024
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1040
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1056
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1072
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1088
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1104
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1120
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1136
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1152
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1168
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1184
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1200
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1216
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1232
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1248
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1264
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1280
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1296
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1312
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1328
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1344
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1360
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1376
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1392
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1408
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1424
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1440
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1456
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1472
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1488
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1504
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1520
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1536
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1552
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1568
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1584
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1600
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1616
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1632
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1648
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1664
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1680
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1696
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1712
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1728
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1744
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1760
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1776
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1792
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1808
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1824
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1840
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1856
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1872
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1888
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1904
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1952
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1968
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1984
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2000
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2016
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2032
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2048
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2064
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2080
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2096
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2112
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2128
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2144
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2160
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2176
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2192
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2208
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2224
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2240
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2256
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2288
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2304
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2320
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2336
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2352
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2368
- hash: "529409797f67656145ea88544bb8cc9f"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png
deleted file mode 100644
index 5f93c67072..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png
deleted file mode 100644
index 3b4e0e68c8..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png
deleted file mode 100644
index 54a393407c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png
deleted file mode 100644
index 4f08fd29a3..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png
deleted file mode 100644
index 9aee1f859d..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png
deleted file mode 100644
index 04eb05cce7..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png
deleted file mode 100644
index 54a393407c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png
deleted file mode 100644
index 3b4e0e68c8..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png
deleted file mode 100644
index 2df55dfe49..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png
deleted file mode 100644
index 91816fd58f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml
deleted file mode 100644
index 0fba4517ee..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml
+++ /dev/null
@@ -1,2879 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 32
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 48
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 64
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 80
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 96
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 112
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 128
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 144
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 160
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 176
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 192
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 208
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 224
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 240
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 256
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 272
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 288
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 304
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 320
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 336
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 352
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 368
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 384
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 400
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 416
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 432
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 448
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 464
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 480
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 496
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 512
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 528
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 544
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 560
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 576
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 592
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 608
- hash: "ed71dfbe146870d1a0869d60c35ff9d7"
- }
- Frame {
- msec: 624
- hash: "ed71dfbe146870d1a0869d60c35ff9d7"
- }
- Frame {
- msec: 640
- hash: "34796cef9feb92f7f0e2e8d837d87d34"
- }
- Frame {
- msec: 656
- hash: "64fa8f195b57077aa03ca264fec9554a"
- }
- Frame {
- msec: 672
- hash: "ae33318904415e937363787273ecb566"
- }
- Frame {
- msec: 688
- hash: "67c3e1c8c728e7677a3554aadd9795c9"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 704
- hash: "1857db7aa9eefe429d50e5b2ad87064b"
- }
- Frame {
- msec: 720
- hash: "507883a03bef0bc20755da1474731fdf"
- }
- Frame {
- msec: 736
- hash: "dafe7464394460e04d482c1f7a1e9ad0"
- }
- Frame {
- msec: 752
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 768
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 784
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 800
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 816
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 832
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 848
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 864
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 880
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 896
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 912
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 928
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 944
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 960
- image: "test3.0.png"
- }
- Frame {
- msec: 976
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 992
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1008
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1024
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1040
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1056
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1072
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1088
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1104
- hash: "7fb8cb07b6bca30912706cec43984d92"
- }
- Frame {
- msec: 1120
- hash: "7fb8cb07b6bca30912706cec43984d92"
- }
- Frame {
- msec: 1136
- hash: "c1915978cda982f6062790b2a583211b"
- }
- Frame {
- msec: 1152
- hash: "afdb50d740b3dc7be44021d826be4302"
- }
- Frame {
- msec: 1168
- hash: "4682717b9375b4b02a70378ddca30885"
- }
- Frame {
- msec: 1184
- hash: "aede0eebb3948a4a764e255b892b09be"
- }
- Frame {
- msec: 1200
- hash: "b42a147daec14a3da2548fd4de3a9a44"
- }
- Frame {
- msec: 1216
- hash: "2ff70f916f78fe3c199eb96ceb44ce4e"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1232
- hash: "707ac8e58d317b97113903b45a482f6b"
- }
- Frame {
- msec: 1248
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1264
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1280
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1296
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1312
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1328
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1344
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1360
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1376
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1392
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1408
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1424
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1440
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1456
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1472
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1488
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1504
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1520
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1536
- hash: "91525556fe23764f58b3a3f38a29cd76"
- }
- Frame {
- msec: 1552
- hash: "91525556fe23764f58b3a3f38a29cd76"
- }
- Frame {
- msec: 1568
- hash: "d1dc625bbf46fc51aaf47969ad27a8a4"
- }
- Frame {
- msec: 1584
- hash: "7d868176c7a8363a79ef8b8f4da56867"
- }
- Frame {
- msec: 1600
- hash: "d239e0b0e118d351680c6b4b2bc5d3b2"
- }
- Frame {
- msec: 1616
- hash: "8f6d1640dbc655eb3b326c66fcb97d3c"
- }
- Frame {
- msec: 1632
- hash: "d52b623b8449d71734f72c7bd661a1c4"
- }
- Frame {
- msec: 1648
- hash: "f7c0c77f3b5ed71321edd6bc7b605512"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1664
- hash: "8b26397ff1a83baa894f82594a12a190"
- }
- Frame {
- msec: 1680
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1696
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1712
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1728
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1744
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1760
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1776
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1792
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1808
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1824
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1840
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1856
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1872
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1888
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1904
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1920
- image: "test3.1.png"
- }
- Frame {
- msec: 1936
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1952
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1968
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1984
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 2000
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2016
- hash: "f63308a7cd48a8cb4d413d17120f5a26"
- }
- Frame {
- msec: 2032
- hash: "f63308a7cd48a8cb4d413d17120f5a26"
- }
- Frame {
- msec: 2048
- hash: "2e97db8ed93524dc197e76cc2d270999"
- }
- Frame {
- msec: 2064
- hash: "2b135d90684c0f94b8219c4b835b6da9"
- }
- Frame {
- msec: 2080
- hash: "c700a76932bb3bf72868b9e95d095db2"
- }
- Frame {
- msec: 2096
- hash: "08136d3c3de44ddab23d2d136ba1f310"
- }
- Frame {
- msec: 2112
- hash: "de701d641e004b61a3c0609556f52fe0"
- }
- Frame {
- msec: 2128
- hash: "4f7acd87f4de119ad88a53d2c9881037"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2144
- hash: "deaf3c8a4680ef6f52cb4674a97e0767"
- }
- Frame {
- msec: 2160
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2176
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2192
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2208
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2224
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2240
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2256
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2272
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2288
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2304
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2320
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2336
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2352
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2368
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2384
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2400
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2416
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2432
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2448
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2464
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2480
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2496
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2512
- hash: "224ade5c942415100b5418a11d043611"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2528
- hash: "fe67b3a48a8a074377be64f619d5922a"
- }
- Frame {
- msec: 2544
- hash: "fe67b3a48a8a074377be64f619d5922a"
- }
- Frame {
- msec: 2560
- hash: "088691f4f46f7a8c9a3b8ea766d9a437"
- }
- Frame {
- msec: 2576
- hash: "bd747ea04c3b36378374f8ea1031458f"
- }
- Frame {
- msec: 2592
- hash: "2ebd0e3373eb75a3ad986e203952f78a"
- }
- Frame {
- msec: 2608
- hash: "b4d89e4f3aef9f351facd13bd83f3022"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2624
- hash: "091de1bd1719e1fa6d914cf9708f4ac6"
- }
- Frame {
- msec: 2640
- hash: "0097d8ed156cb0c78c48dfacc557cba8"
- }
- Frame {
- msec: 2656
- hash: "faeb379e01283cb21ea695e96727918d"
- }
- Frame {
- msec: 2672
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2688
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2704
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2720
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2736
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2752
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2768
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2784
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2800
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2816
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2832
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2848
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2864
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2880
- image: "test3.2.png"
- }
- Frame {
- msec: 2896
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2912
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2928
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2944
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2960
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2976
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "b00a29d67edc26e75f5298b2836d4e47"
- }
- Frame {
- msec: 3008
- hash: "b00a29d67edc26e75f5298b2836d4e47"
- }
- Frame {
- msec: 3024
- hash: "6e47c87b5063877a609e8d23ddf2d314"
- }
- Frame {
- msec: 3040
- hash: "06f147a69c3e903905376ef1229290bf"
- }
- Frame {
- msec: 3056
- hash: "5f02ff1a1207f17efd224ccc800b0057"
- }
- Frame {
- msec: 3072
- hash: "6c0860fdb216bb79fd2da4647792628d"
- }
- Frame {
- msec: 3088
- hash: "eb579f67620adb762722428d44a1d841"
- }
- Frame {
- msec: 3104
- hash: "c579017a82e34a471a95f8a116a20b9e"
- }
- Frame {
- msec: 3120
- hash: "bb5c08ff104b230829579dfb8015bdcc"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3136
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3152
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3168
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3184
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3200
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3216
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3232
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3248
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3264
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3280
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3296
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3312
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3328
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3344
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3360
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3376
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3392
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3408
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3424
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3440
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3456
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3472
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3488
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3504
- hash: "5aa664f268433f2724a1ab2cea1d6d25"
- }
- Frame {
- msec: 3520
- hash: "5aa664f268433f2724a1ab2cea1d6d25"
- }
- Frame {
- msec: 3536
- hash: "9e4854fd0c533efa75aec7d9a8bc41dd"
- }
- Frame {
- msec: 3552
- hash: "c4eee4eca804007dca6e6d9379cbfb1b"
- }
- Frame {
- msec: 3568
- hash: "c59774f00d54c0353b41202a39fc0dbd"
- }
- Frame {
- msec: 3584
- hash: "910e6b5b05530c60874eee00df0d62cf"
- }
- Frame {
- msec: 3600
- hash: "5b606a7a697c6d53fbe42e33333f96cc"
- }
- Frame {
- msec: 3616
- hash: "e1fce42312e8a31d74add4a447dd3df9"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3632
- hash: "6250cb9ea51309922cf0a6647593bfee"
- }
- Frame {
- msec: 3648
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3664
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3680
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3696
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3712
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3728
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3744
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3760
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3776
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3792
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3808
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3824
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3840
- image: "test3.3.png"
- }
- Frame {
- msec: 3856
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3872
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3888
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3904
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3920
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3936
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3952
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3968
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3984
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4000
- hash: "d6eecfb695deacae4bb2fe5adb2d5c3d"
- }
- Frame {
- msec: 4016
- hash: "d6eecfb695deacae4bb2fe5adb2d5c3d"
- }
- Frame {
- msec: 4032
- hash: "b48f481a8149c03139e29b619dbb3f3c"
- }
- Frame {
- msec: 4048
- hash: "994ba7fc208bbf081d54384d82d0fc07"
- }
- Frame {
- msec: 4064
- hash: "05d30293c12eb6a3e21cebd42bb1f383"
- }
- Frame {
- msec: 4080
- hash: "f2b4140a5d26f241a27e2a3027785559"
- }
- Frame {
- msec: 4096
- hash: "1189e519fd1611c5603e598fbcadca44"
- }
- Frame {
- msec: 4112
- hash: "ee98893d95e55cb76966c0cfe29d237b"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4128
- hash: "9ff3010efeb8707c864def782405ad4c"
- }
- Frame {
- msec: 4144
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4160
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4176
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4192
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4208
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4224
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4240
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4256
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4272
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4288
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4304
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4320
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4336
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4352
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4368
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4384
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4400
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4416
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4432
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4448
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4464
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4480
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4496
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4512
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4528
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4544
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4560
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4576
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4592
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4608
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4624
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4640
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4656
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4672
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4688
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4704
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4720
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4736
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4752
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4768
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4784
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4832
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4848
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4864
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4880
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4896
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4912
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4928
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4944
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4960
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4976
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4992
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5008
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5024
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5040
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5056
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5072
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5088
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5104
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "a857238777462319fcedd4f359ce1a04"
- }
- Frame {
- msec: 5136
- hash: "a857238777462319fcedd4f359ce1a04"
- }
- Frame {
- msec: 5152
- hash: "d9248d1257bf0232dcdf29fca7536ad1"
- }
- Frame {
- msec: 5168
- hash: "0405e029cc4b2fa80761c06fb8898b0d"
- }
- Frame {
- msec: 5184
- hash: "a36fb7e32e6aafbb84b62ef56be3cf70"
- }
- Frame {
- msec: 5200
- hash: "9846c73bbe57277bd36bbca1c489e644"
- }
- Frame {
- msec: 5216
- hash: "8f4840715082c48d520ddb55501cf8eb"
- }
- Frame {
- msec: 5232
- hash: "478fde3a6fd8cecc222b8c16743d231f"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "b2bb760c93d26c6db21ce6beccd36b66"
- }
- Frame {
- msec: 5264
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5280
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5296
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5312
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5328
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5344
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5360
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5376
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5392
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5408
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5424
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5440
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5456
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5472
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5488
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5504
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5520
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5536
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5552
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5568
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5584
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5600
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5616
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5632
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5648
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5664
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5680
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5696
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5712
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "4780d8094833831f27d1aff3e0f9689f"
- }
- Frame {
- msec: 5744
- hash: "4780d8094833831f27d1aff3e0f9689f"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "93c8d7980de378a055b7ca824882ae4e"
- }
- Frame {
- msec: 5792
- hash: "e0abe402f89c5d84e5a02f0e4bcbd5e3"
- }
- Frame {
- msec: 5808
- hash: "067ca20bcfab459a28af7e8dc2830032"
- }
- Frame {
- msec: 5824
- hash: "d27dc1a08c66cf5f4a84efe3be522ec3"
- }
- Frame {
- msec: 5840
- hash: "639f7555adc7958e807c2e774694fe25"
- }
- Frame {
- msec: 5856
- hash: "b55f5fcbc2284736695049b2cdc9c8ce"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5888
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5904
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5920
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5936
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5952
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5968
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5984
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6000
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6016
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6032
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6048
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6064
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6080
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6096
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6112
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6128
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6144
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6160
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6176
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6192
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6208
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6224
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6240
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6256
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6272
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "48910947dd160b33251c54ff45f6a0db"
- }
- Frame {
- msec: 6304
- hash: "48910947dd160b33251c54ff45f6a0db"
- }
- Frame {
- msec: 6320
- hash: "20b0f988a1517d67a0d3c78ae8af4e5a"
- }
- Frame {
- msec: 6336
- hash: "355b5b161176c31bcbae198b1581f59b"
- }
- Frame {
- msec: 6352
- hash: "19cbb853a93bd062a53d7908df54bfbd"
- }
- Frame {
- msec: 6368
- hash: "13fbe723f288cffd09f0a86b71457161"
- }
- Frame {
- msec: 6384
- hash: "0014ed3b1a868cf75bfffedb52674c5c"
- }
- Frame {
- msec: 6400
- hash: "a1c444be02b90e69319096b8a508947d"
- }
- Frame {
- msec: 6416
- hash: "b88a3f2f3290e4262757b1f5741cb5ce"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6448
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6464
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6480
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6496
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6512
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6528
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6544
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6560
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6576
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6592
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6608
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6624
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6640
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6656
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6672
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6688
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6704
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6752
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6768
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6784
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6800
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6816
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6832
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6848
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "a44bb76233c69780c178dddd79cc1968"
- }
- Frame {
- msec: 6880
- hash: "a44bb76233c69780c178dddd79cc1968"
- }
- Frame {
- msec: 6896
- hash: "154b11fd0468aa18d1ef1895f2e2923c"
- }
- Frame {
- msec: 6912
- hash: "fe7ecb02e63fbb7584405e7162f0ee21"
- }
- Frame {
- msec: 6928
- hash: "90b6fea69d106c628a9c7ff23a97e6c2"
- }
- Frame {
- msec: 6944
- hash: "3e233e837e24976d441b6cabc3b74098"
- }
- Frame {
- msec: 6960
- hash: "7a490f7be5c4c0ae09421f884e9adadb"
- }
- Frame {
- msec: 6976
- hash: "462d44603dd661ccf126c81197608056"
- }
- Frame {
- msec: 6992
- hash: "0b7ca73497c37255bccad6787d690236"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7024
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7040
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7056
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7072
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7088
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7104
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7120
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7136
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7152
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7168
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7184
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7200
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7216
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7232
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7248
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7264
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7280
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7296
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7312
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7328
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7344
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7360
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7376
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7392
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7408
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7424
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7440
- hash: "224ade5c942415100b5418a11d043611"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "95ff2a535a13fcdded94229d53848f7c"
- }
- Frame {
- msec: 7472
- hash: "95ff2a535a13fcdded94229d53848f7c"
- }
- Frame {
- msec: 7488
- hash: "d2386e4137632f15aa5ba9dd1a138a67"
- }
- Frame {
- msec: 7504
- hash: "9f2c40191c1a81f37543f5bfcb852bdf"
- }
- Frame {
- msec: 7520
- hash: "5facdbcc9d7ab0adfcb2ca9d1812a3f5"
- }
- Frame {
- msec: 7536
- hash: "7bbb08470e4f3eeabe710e0ea327c467"
- }
- Frame {
- msec: 7552
- hash: "630abf60d09d3a685d79e6da627b3aa2"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "d8aed706508814cdbd1ef0984f112b94"
- }
- Frame {
- msec: 7584
- hash: "d191c2dc3e2edd05bfd649dcfa51029e"
- }
- Frame {
- msec: 7600
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7616
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7632
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7648
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7664
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7712
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7728
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7744
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7760
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7776
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7792
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7808
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7824
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7840
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7856
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7872
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7888
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7904
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7920
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7936
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7952
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7968
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "fb386abfd73a3feb05b573d16ffa93f9"
- }
- Frame {
- msec: 8000
- hash: "fb386abfd73a3feb05b573d16ffa93f9"
- }
- Frame {
- msec: 8016
- hash: "fa1374155fc5427c72bd09ec5a315172"
- }
- Frame {
- msec: 8032
- hash: "ee35a3edf91865e28b16b9fcab8b4c1c"
- }
- Frame {
- msec: 8048
- hash: "10f2677f7c8efe9f64e401940dec3ef7"
- }
- Frame {
- msec: 8064
- hash: "b2c53bb14a8a6643e69cad2bbb4aacf4"
- }
- Frame {
- msec: 8080
- hash: "7b7c7d167aca55464d1874ed726ec646"
- }
- Frame {
- msec: 8096
- hash: "19a828ca70133801f1f470f6e348857b"
- }
- Frame {
- msec: 8112
- hash: "bc829873ea3cf8ca8484d990d4b80aa2"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8144
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8160
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8176
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8192
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8208
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8224
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8240
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8256
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8272
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8288
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8304
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8320
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8336
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8352
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8368
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8384
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8400
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8416
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8432
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8448
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8464
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8480
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8496
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "d0d487fd66bcf4177188d4862bd74bc0"
- }
- Frame {
- msec: 8528
- hash: "d0d487fd66bcf4177188d4862bd74bc0"
- }
- Frame {
- msec: 8544
- hash: "4a4c2e49e4852748916a4d68710e4ae6"
- }
- Frame {
- msec: 8560
- hash: "0135092d8a296b7121495cc3994a0f9d"
- }
- Frame {
- msec: 8576
- hash: "7e004aae70236568d635ba929e085b2b"
- }
- Frame {
- msec: 8592
- hash: "3e6a4f60a57515a6bfe4d803c7c22da8"
- }
- Frame {
- msec: 8608
- hash: "142b866861f539837b0bdabaf48028e7"
- }
- Frame {
- msec: 8624
- hash: "32a4757602c923366566d9005c78f6cf"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8672
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8688
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8704
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8720
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8736
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8752
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8768
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8784
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8800
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8816
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8832
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8848
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8864
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8880
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8896
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8912
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8928
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8944
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8960
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8976
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8992
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9008
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9024
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9040
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9056
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "b1dc330f31b064f1e3ff4e913773cde8"
- }
- Frame {
- msec: 9088
- hash: "b1dc330f31b064f1e3ff4e913773cde8"
- }
- Frame {
- msec: 9104
- hash: "a0419dede71451f36c93960c8ef8c00c"
- }
- Frame {
- msec: 9120
- hash: "b8141758fc93aa1b286fd60f91e6fa7e"
- }
- Frame {
- msec: 9136
- hash: "8b0d786f239c545be3f51622c336f1e1"
- }
- Frame {
- msec: 9152
- hash: "25ec52efac83de4f8cade8f257b93b8e"
- }
- Frame {
- msec: 9168
- hash: "5a1476841b9aaa0e85c397c0447be352"
- }
- Frame {
- msec: 9184
- hash: "d648b0911e6ab78e53121fde8b66b50b"
- }
- Frame {
- msec: 9200
- hash: "f552863ff4b76286d03240409c0a928b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9232
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9248
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9264
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9280
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9296
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9312
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9328
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9344
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9360
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9376
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9392
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9408
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9424
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9440
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9456
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9472
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9488
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9504
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9520
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9536
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9552
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9568
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9584
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9632
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9648
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9664
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9680
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9696
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9712
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9728
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9744
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9760
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9776
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9792
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9808
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9824
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9840
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9856
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9872
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9888
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9904
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9920
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9936
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9952
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9968
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9984
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10000
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10016
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10032
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10048
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10064
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10080
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10096
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10112
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10128
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10144
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10160
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10176
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10192
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10208
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10224
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10240
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10256
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10272
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10288
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10304
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10320
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10336
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10352
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10368
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10400
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10416
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10432
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
index 67b99e0069..986a1646c1 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
index 67b99e0069..986a1646c1 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
index 69f036619d..fd28a93152 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
deleted file mode 100644
index afe0bd95c6..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
deleted file mode 100644
index afe0bd95c6..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
deleted file mode 100644
index afe0bd95c6..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
index 460ba1aa6e..da99cfda56 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
@@ -6,239 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 32
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 48
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 64
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 80
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 96
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 112
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 128
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 144
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 160
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 176
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 192
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 208
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 224
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 240
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 256
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 272
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 288
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 304
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 320
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 336
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 352
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 368
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 384
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 400
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 416
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 432
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 448
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 464
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 480
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 496
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 512
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 528
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 544
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 560
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 576
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 592
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 624
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 640
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 656
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 672
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 688
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 704
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 720
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 736
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 752
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 768
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 784
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 800
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 816
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 832
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 848
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 864
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 880
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 896
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 912
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 928
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 944
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 960
@@ -246,263 +294,303 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 992
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1008
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1024
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1040
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1056
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1072
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1088
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1104
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1120
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1136
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1152
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1168
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1184
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1200
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1216
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1232
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1248
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Key {
type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1264
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1280
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1296
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1312
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1328
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 1344
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1344
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
msec: 1360
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1376
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1392
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1408
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1424
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1440
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1456
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1472
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1488
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1504
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1520
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1536
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1552
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1568
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1584
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1600
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1616
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1632
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1648
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1664
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1680
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1696
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1712
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1728
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1744
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1760
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1776
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1792
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1808
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1824
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1840
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1856
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1872
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1888
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1904
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1920
@@ -510,263 +598,287 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1952
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 1968
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
- type: 7
+ type: 6
key: 16777234
- modifiers: 536870912
- text: "1c"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1968
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
msec: 1984
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2000
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2016
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2032
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2048
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2080
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2096
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2112
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2128
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2144
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2160
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2176
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2192
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2208
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2224
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2240
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2256
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2272
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2288
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2304
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2320
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2336
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2352
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 2368
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2368
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
msec: 2384
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2400
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2416
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2432
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2448
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2464
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Key {
type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 2480
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2496
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2512
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2528
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2544
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2560
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2576
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2592
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2608
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2624
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2640
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2656
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2672
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2688
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2704
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2720
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2736
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2752
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2768
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2784
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2800
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2816
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2832
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2848
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2864
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2880
@@ -774,826 +886,38 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2912
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2928
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2944
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2960
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2976
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2992
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 3008
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 3024
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3040
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3056
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3072
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3088
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3120
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3136
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3152
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3168
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3184
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3200
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3216
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3232
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3248
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3264
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3280
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3296
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3312
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3328
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3344
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3360
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3376
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3392
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3408
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3424
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3440
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3456
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3472
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3488
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3504
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3520
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3536
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3568
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3584
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3600
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3616
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3632
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3648
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3680
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3696
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3712
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3728
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3744
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3760
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3776
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3792
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3808
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3824
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3872
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3888
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3904
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3920
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3936
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3952
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3968
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3984
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4000
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4016
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4032
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4048
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4064
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4080
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4096
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4112
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4128
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4144
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4160
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4176
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4208
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4224
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4240
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4256
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4272
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4304
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4320
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4336
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4352
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4368
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4384
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4400
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4416
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4432
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4448
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4464
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4480
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4496
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4512
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4528
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4544
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4560
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4576
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4592
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4608
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4624
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4640
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4656
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4672
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4688
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4704
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4720
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4736
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4752
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4768
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4784
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4832
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4848
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4864
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4880
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4896
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4928
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4944
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4960
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4976
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4992
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5008
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5024
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5040
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5056
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5072
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5088
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5104
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5120
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5136
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5152
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5168
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5184
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5200
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5216
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5232
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5248
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5264
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5280
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5296
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5312
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5328
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5344
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5360
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5376
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5392
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5408
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5424
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5440
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5456
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5472
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5488
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5504
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5520
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5536
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5552
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5568
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5584
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5600
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5616
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5632
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5648
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5664
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5680
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5696
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5712
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5728
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5744
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5792
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5824
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5840
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5856
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5872
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5888
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
index 555a968175..22d7496fb7 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
deleted file mode 100644
index 555a968175..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
index 03ece10d13..ff977acb7b 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 32
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 48
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 64
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 80
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 96
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 112
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 128
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 144
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 160
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 176
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 192
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 208
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 224
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 240
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 256
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 272
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 288
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 304
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 320
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 336
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 352
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 368
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 384
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 400
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 416
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 432
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 448
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 464
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 480
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 496
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 512
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 528
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 544
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 560
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 576
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 592
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 608
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 624
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 640
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 656
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 672
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 688
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 704
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 720
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 736
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 752
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 768
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 784
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 800
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 816
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 832
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 848
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 864
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 880
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 896
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 912
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 928
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 944
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 960
@@ -246,362 +246,78 @@ VisualTest {
}
Frame {
msec: 976
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 992
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1008
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1024
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1040
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1056
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1072
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1088
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1104
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1120
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1136
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1152
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1168
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1184
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1200
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1216
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1232
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1248
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1264
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1280
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1296
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1312
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1328
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1344
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1360
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1376
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1392
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1408
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1424
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1440
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1456
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1472
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1488
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1504
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1520
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1536
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1552
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1568
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1584
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1600
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1616
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1632
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1648
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1664
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1680
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1696
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1712
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1728
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1744
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1760
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1776
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1792
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1808
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1824
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1840
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1856
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1872
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1888
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1904
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1952
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1968
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1984
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2000
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2016
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2032
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2048
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2064
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2080
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2096
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2112
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2128
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2144
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2160
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2176
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2192
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2208
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2224
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2240
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2256
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2288
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2304
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2320
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2336
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2352
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2368
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
index 374acf556c..baac34617d 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
index b75cb10861..25d3c66ade 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
index 9b2f919afe..fc90552b09 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
index bf630326a6..2f0519eb07 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
deleted file mode 100644
index 6981a06544..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
deleted file mode 100644
index 5856325169..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
deleted file mode 100644
index 9b2f919afe..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
deleted file mode 100644
index b75cb10861..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
deleted file mode 100644
index 374acf556c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
deleted file mode 100644
index 11a08bdea0..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
index dd48e39802..686fc8dbb3 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
@@ -6,255 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 32
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 48
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 64
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 80
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 96
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 112
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 128
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 144
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 160
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 176
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 192
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 208
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 224
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 240
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 256
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 272
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 288
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 304
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 320
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 336
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 352
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 368
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 384
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 400
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 416
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 432
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 448
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 464
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 480
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 496
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 512
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 528
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 544
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "60101929d88be9177f4988573c35dcdb"
}
Frame {
msec: 560
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "519bbcffcafe96253923994ce7cae971"
}
Frame {
msec: 576
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "e46fd44935f37eadee7520f17ad7cf01"
}
Frame {
msec: 592
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "2a0ed4cb9940ff82d4a56dc3dc94f333"
+ }
+ Frame {
+ msec: 608
+ hash: "a97ff19bb6493b7a026c9c549aafff04"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 608
- hash: "c114718c158f107e8a7d06bf49d30855"
- }
- Frame {
msec: 624
- hash: "c71bf3c6ef7addc3c1f55e3f92c001ac"
+ hash: "52fe44fff5c72e1585e000e73086c2e9"
}
Frame {
msec: 640
- hash: "b075c33ed606041dfb57a03f92cf5574"
+ hash: "76f62e0619ed15894d7fb6fe9e1a7700"
}
Frame {
msec: 656
- hash: "1933a060fc0b889082df94054a2d3c7e"
+ hash: "aceb3ae38213d097bd0f50d64779fbda"
}
Frame {
msec: 672
- hash: "cc4133e796a242493538131c789c392c"
+ hash: "c62f8846e1076adcd7c9a8bc1164c0a8"
}
Frame {
msec: 688
- hash: "cbc16ad8bcb8dcf73ae101ca4899adac"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "c62f8846e1076adcd7c9a8bc1164c0a8"
}
Frame {
msec: 704
- hash: "1a5e008ef5640ad85a19b307244a36f7"
+ hash: "c62f8846e1076adcd7c9a8bc1164c0a8"
}
Frame {
msec: 720
- hash: "6a0c9d0f3ac068d65d590c844dae4ebb"
+ hash: "c62f8846e1076adcd7c9a8bc1164c0a8"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 736
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "9f3ab4856c51ee635b8dbce4778053f0"
}
Frame {
msec: 752
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "4fe79ffc2bb078c8cb8c3cdbb57d3c5e"
}
Frame {
msec: 768
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "9caefb6edbfeadacd54a9f4e06e40ddc"
}
Frame {
msec: 784
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "a8dc7e314b3bd2fb8d16bcf68bfbc7e8"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "342e75af68d345574c551ff65ac2f2de"
}
Frame {
msec: 816
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "a26927b8cdfa8813c5e0661d154bb36b"
}
Frame {
msec: 832
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "0214f5055daa4a761d2e791d06744ac5"
}
Frame {
msec: 848
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "d2d4296a49de27da45381fa250fb1f38"
}
Frame {
msec: 864
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "a375e3df0b00754fa4208aecbf1b218d"
}
Frame {
msec: 880
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "a375e3df0b00754fa4208aecbf1b218d"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 896
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "0cd7a1cfb7fafdb406b5e3a612dd61b7"
}
Frame {
msec: 912
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "0315c0011c75f254337cb5e557dc6dad"
}
Frame {
msec: 928
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "2633ea851ec228dc1d5149ef65b1c910"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "cd8870a81860a9926f4d5580dabf3479"
}
Frame {
msec: 960
@@ -262,271 +294,311 @@ VisualTest {
}
Frame {
msec: 976
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "419ec77dceb052c41e072b9513124794"
}
Frame {
msec: 992
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "68fd88f83bf707fbc3ae29840bfb2110"
}
Frame {
msec: 1008
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "bfb514b9a9c57d6b78149b81f4adb177"
}
Frame {
msec: 1024
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "bfb514b9a9c57d6b78149b81f4adb177"
}
Frame {
msec: 1040
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "bfb514b9a9c57d6b78149b81f4adb177"
}
Frame {
msec: 1056
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "bfb514b9a9c57d6b78149b81f4adb177"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "e0707db3c9da95ab02be8dec08d1eea9"
}
Frame {
msec: 1088
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "78d405f63a5ed781ce36ed4844621a26"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1104
- hash: "ac2f6e2f5f379ad8717aa3754f2aab80"
+ hash: "d7dc78c2a3cb4a059322b20622dfa0ed"
}
Frame {
msec: 1120
- hash: "e896c5b5a4fd121e5c25aba0a17c11f3"
+ hash: "c7bfc322da4a3e112324bd024d271dda"
}
Frame {
msec: 1136
- hash: "1d1228cf0b205e46a969a0016245bb9e"
+ hash: "a94d4a6f15404f10cad31ad5337f0f10"
}
Frame {
msec: 1152
- hash: "d07b1d53655e549c503223fddfa62038"
+ hash: "49f03ed7afac886a45268aef990cb176"
}
Frame {
msec: 1168
- hash: "d774614f13d1a19eff3c451c4abce7e5"
+ hash: "9fbacc43c6a796f81af102e95d05c17e"
}
Frame {
msec: 1184
- hash: "0e8445283c961a41c22ede2f26ab0d0c"
+ hash: "ec3231a8ba136d2edd5265c51cd82d4f"
}
Frame {
msec: 1200
- hash: "f85ced79a9d521b70b093d43d1335914"
+ hash: "070bec590f2379198933cf68db678821"
}
Frame {
msec: 1216
- hash: "3f70531768847686f202336827ed5c51"
+ hash: "070bec590f2379198933cf68db678821"
}
Key {
- type: 7
+ type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1232
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "b9bb4eee4ea2fe26178ece2be67111e3"
}
Frame {
msec: 1248
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "06fe10dc99a8f28a64942bd76bdd401b"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1264
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "63f4e972f1b8f3273170436c673120ca"
}
Frame {
msec: 1280
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "25a83b96f733add828557775d4aabe21"
}
Frame {
msec: 1296
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "73de2ed5df81559c7a24d9a5b73a2ce9"
}
Frame {
msec: 1312
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "43bdf31d652394c4d2b881ca6ad326ed"
}
Frame {
msec: 1328
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "f5f564fcb39a7e007c30150c1a54283c"
}
Frame {
msec: 1344
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1360
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1376
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1392
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1408
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1424
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1440
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1456
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1472
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 1488
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "a56bcb200f3ed037bfea052df2910902"
}
Frame {
msec: 1520
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "2b3561807f9681f6b875e7f4fcd33223"
+ }
+ Frame {
+ msec: 1536
+ hash: "2cee5a4a22f72058a61cd9cb9d39e818"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1536
- hash: "c59557a62fb22756ecae00bf36589f19"
- }
- Frame {
msec: 1552
- hash: "c2938aac121e121eb138b2cdc485a23c"
+ hash: "cd1f3f9a2bcd0efd4ba252454c51e261"
}
Frame {
msec: 1568
- hash: "aa582bd07789a0ce000bb014b4924969"
+ hash: "b2d8e52a59d1141cfaf6b22ba9aa74cf"
}
Frame {
msec: 1584
- hash: "59d7a7fed20a11ecb12de08c77f0f303"
+ hash: "f218a82081c0552d2caccaa840decfbb"
}
Frame {
msec: 1600
- hash: "9a1d7649e44e2c2436855b92abbae030"
+ hash: "ae20ae49364bddbe3dcd9e09c36b7423"
}
Frame {
msec: 1616
- hash: "e46c47a221da37bbdffcdf671e84774b"
+ hash: "63d8d2d948e3cab3a50ef4db61ca4c48"
}
Frame {
msec: 1632
- hash: "85ff7ef61ef08dc97065b0536f9f8766"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
}
Frame {
msec: 1648
- hash: "1159f274e5c2947875484d04a3ac6694"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
}
Frame {
msec: 1664
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
}
Frame {
msec: 1680
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1696
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "c46539fd3ef1e01519b43855c0831213"
}
Frame {
msec: 1712
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "40a4666320efaa62904d390add745bb3"
}
Frame {
msec: 1728
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "a490a1904e909f3e2ade5ee8a7e9dbf3"
}
Frame {
msec: 1744
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "2e67ac8bbc37731e590156348563bb98"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "daab7eba2dbf88b920b1cc61aa114435"
}
Frame {
msec: 1776
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "5e6611b6024be9f48e6356bb46fe91db"
}
Frame {
msec: 1792
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "6329448571671f77102e14f3f05d3a66"
}
Frame {
msec: 1808
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "2a40d32c1c81fb85dab745a05cca500b"
}
Frame {
msec: 1824
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
}
Frame {
msec: 1840
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
}
Frame {
msec: 1856
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
}
Frame {
msec: 1872
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "899d92a8106e85ff1131c07af3971879"
}
Frame {
msec: 1904
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "8566d59024d7dcf410d4d87e234f477c"
}
Frame {
msec: 1920
@@ -534,271 +606,295 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "ba9b93e9762667c4a7c123933720fb06"
}
Frame {
msec: 1952
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "cffb82799861d551cc208b7fe2922ea2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1968
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "efe3ec54dfd82b06d6cb8d7813030894"
}
Frame {
msec: 1984
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "80934efe77a8e1d8460b55c0d5831a17"
}
Frame {
msec: 2000
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "5954c3e6ebe78c50776cfa48c152cf46"
}
Frame {
msec: 2016
- hash: "26e5e7612374c7a4f7ac26a284c735b4"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2032
- hash: "03c63a8bab380ebcd02f2bf2f588df85"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2048
- hash: "1a7c4738de4f1123c7e639c935095476"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2064
- hash: "8362cb8a253dcb2e9ef7fb070579d639"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2080
- hash: "8fae548ad1f2e16738c14636b905efef"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2096
- hash: "05fca78fea63817204b2303495baaec7"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2112
- hash: "5bf7b04177db667f23f1bc4f0066bc44"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2128
- hash: "aa10d0614604f0563d4fc458b7bb9260"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2144
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2160
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2176
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2192
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2208
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2224
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2240
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2256
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2272
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2288
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2304
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2320
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2336
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2352
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2368
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2384
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2400
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2416
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2432
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2448
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
}
Frame {
msec: 2464
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "588140c8a668842ec06e424692b57918"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2480
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "4ba7e4ed21d496abc7ab4651afb5880b"
}
Frame {
msec: 2496
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "497188bf0ef98eb246399f025b9259bc"
}
Frame {
msec: 2512
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "173049c273e4ea2f63428c0838f029ef"
}
Frame {
msec: 2528
- hash: "1823a5c00778550c6b46416e6a2b730f"
+ hash: "c8199565d52abb5bdf64b31c2f965038"
}
Frame {
msec: 2544
- hash: "7ca64f71eee9d3a926335de026be5fe2"
+ hash: "995ca28ee06c376a8527992b1396374a"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2560
- hash: "5f9e44b8374a490793b479440ce3b701"
+ hash: "62b4b4b4e35cb3594b827a3f0488e016"
}
Frame {
msec: 2576
- hash: "b0969884a9654d87da9941fb9eb4c99a"
+ hash: "5cd79f2fff8e35c2ce6167d3a3999bc2"
}
Frame {
msec: 2592
- hash: "aeadf244a67b3c9e5c119b52aa0f15a0"
+ hash: "3c64ff196b49488d48214562849deec7"
}
Frame {
msec: 2608
- hash: "2d990e5ae8d3660079bdea7f2b5245a7"
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
+ }
+ Frame {
+ msec: 2624
+ hash: "6579f0cfe1fd762818d69ded26e47c77"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2624
- hash: "5998faffa17f9ffbf1cb39cdc09cdd54"
- }
- Frame {
msec: 2640
- hash: "bf8089df5d863f627cd44294f322d796"
+ hash: "3ae9139845494acafc2212843271e80c"
}
Frame {
msec: 2656
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "9bd81bd575c63bbedbcb19452e52f9aa"
}
Frame {
msec: 2672
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "8a8fd3ec0ac02d3e8d37ade92e5b0b28"
}
Frame {
msec: 2688
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "3da79a037c7c8fca1a133c65766cd7a4"
}
Frame {
msec: 2704
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "31f24ec970184bf253ce0a80cca8c15d"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2720
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "8e41287dd7f3d17107336f79ea4a57b5"
}
Frame {
msec: 2736
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "0eced41494be06a4a2d11aee076c0eab"
}
Frame {
msec: 2752
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
}
Frame {
msec: 2768
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
}
Frame {
msec: 2784
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "f29a9aa2e469e3fb4bedfe11523212c9"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "2161ebbc0b1a8326d778657ded7993a8"
}
Frame {
msec: 2816
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "65bdbbcea1cf5629e1c04ff09bd2b867"
}
Frame {
msec: 2832
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "4cfe120b55285efb9484f696146fa297"
}
Frame {
msec: 2848
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "d50ded95cf2418ef2ab3c4d7dd32babe"
}
Frame {
msec: 2864
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "722e3342d833809e2e6c6ecb5774fb86"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2880
@@ -806,271 +902,319 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "0193889d59dc40150eab584dd1665b5e"
}
Frame {
msec: 2912
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "cd39f2cee2cf7507203a340ceaa961f5"
}
Frame {
msec: 2928
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
}
Frame {
msec: 2944
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "270321ae5fe7a0e457d2897480e5bbbc"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2960
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "d19642853fc07a54711b6afbca4453fd"
}
Frame {
msec: 2976
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "70db31594995fa6c05347ebc5aedd063"
}
Frame {
msec: 2992
- hash: "d707cb6e2587eecba275d1e7ceb9d020"
+ hash: "8d8ab3076baae893037a1b16880db6b6"
}
Frame {
msec: 3008
- hash: "fddd144d4d2e475330ff87f4e6febe35"
+ hash: "32c05a581d854a828f2049c5aa588afd"
}
Frame {
msec: 3024
- hash: "06115e65296d1a77ab956cd3984303ee"
+ hash: "7f8f111aa6e8e802beca3b7fd2a28007"
}
Frame {
msec: 3040
- hash: "6881ec448625fdc23f1241bd60362460"
+ hash: "c0ae8434516e2f77d78279c8e37a9f0a"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3056
- hash: "d94fdfd178377328e3b840c32f774958"
+ hash: "7cc66b7432d2c73258e4c7910870d166"
}
Frame {
msec: 3072
- hash: "d2cba0b3aac8002aa2de51f7b1442985"
+ hash: "070bec590f2379198933cf68db678821"
}
Frame {
msec: 3088
- hash: "c0ea81cddf6b1f5b4b4157dade6b8ca0"
+ hash: "070bec590f2379198933cf68db678821"
}
Frame {
msec: 3104
- hash: "964a80740cc7ba474d5d10b76cca1b14"
+ hash: "070bec590f2379198933cf68db678821"
}
Frame {
msec: 3120
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "070bec590f2379198933cf68db678821"
+ }
+ Frame {
+ msec: 3136
+ hash: "070bec590f2379198933cf68db678821"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 3136
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
msec: 3152
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "f45969e94df0c5ea7c153e6952479ec8"
}
Frame {
msec: 3168
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "55f4733f50b90d723c88ef74d66ee8a9"
}
Frame {
msec: 3184
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "980ea06fe8405ce29514cbc752a581c2"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3200
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "0a5a6d62d13876c9562253645381702a"
}
Frame {
msec: 3216
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "0ade580a20e10d9887d6bc544025770e"
}
Frame {
msec: 3232
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "707524f7b0fad3879d41c8ff5d339b87"
}
Frame {
msec: 3248
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "1786e49beb751b4b8cf4492f63b3db77"
}
Frame {
msec: 3264
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a44ca7861ccd844eb284ab310751351a"
}
Frame {
msec: 3280
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "bfb514b9a9c57d6b78149b81f4adb177"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3296
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "e36d2476c9954e6a4372ded19efd06a1"
}
Frame {
msec: 3312
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "c324cc45624346f32a776a87ec5fcc7e"
}
Frame {
msec: 3328
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "fcf1629f58a73492f1afa74672013602"
}
Frame {
msec: 3344
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "853e27fd37b764a852a2c4fabbaae6bc"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3360
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a75d77b15211080e12b397c3cee93568"
}
Frame {
msec: 3376
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "936fb8c2c0909a77a9bdc654d91d13ad"
}
Frame {
msec: 3392
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "f11dde44c028dbd299bc6733218969f7"
}
Frame {
msec: 3408
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a375e3df0b00754fa4208aecbf1b218d"
}
Frame {
msec: 3424
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a375e3df0b00754fa4208aecbf1b218d"
}
Frame {
msec: 3440
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a375e3df0b00754fa4208aecbf1b218d"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3456
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "3ce1288d66836b6224f471903454be37"
}
Frame {
msec: 3472
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 3488
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "9bff5f42f23b504ee013df4834ed884c"
}
Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3488
+ hash: "523df7cc8d991695722b521282824627"
+ }
+ Frame {
msec: 3504
- hash: "56634199c96e5c4588c2954f0595fcaa"
+ hash: "5c16f8efbab40bcf8016bd7334eb99fa"
}
Frame {
msec: 3520
- hash: "a51221b77045e51cba2b0913546961cb"
+ hash: "bee74f34ee101f0fef0967801498de75"
}
Frame {
msec: 3536
- hash: "9910569a15164882056802e5ecfaef42"
+ hash: "a08ee211d870bc3f97f1e698cd887908"
}
Frame {
msec: 3552
- hash: "17080817e0b23212828d2cee23eff98f"
+ hash: "89ac21176fd4ce1bbbd0b7dd6904c12c"
}
Frame {
msec: 3568
- hash: "791fee9758645fe21fe52918e5435f7d"
+ hash: "95608d850a3c5cfbded1aafb33885bad"
}
Frame {
msec: 3584
- hash: "e0fcea2889a4825075322524025a4bdf"
+ hash: "c62f8846e1076adcd7c9a8bc1164c0a8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3600
- hash: "825f58093f328182fa32b3cbc573101f"
+ hash: "54705722d344bfbe829211019f2865ba"
}
Frame {
msec: 3616
- hash: "550972282584bd52108728290bd4aa5e"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "d63b2ce9e16583671a5e6d266393b11c"
}
Frame {
msec: 3632
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "3979df5d0aa1c3610e1d3562e34385c6"
}
Frame {
msec: 3648
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "782d14c3a1baf9a3017ec5b514492860"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3664
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "0d219c97e1278474b74ed16f29fae1a1"
}
Frame {
msec: 3680
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "3df0e87dd3d5f50b9c4bb3db8d73d421"
}
Frame {
msec: 3696
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "1c5e5da874ae95548431677246c80734"
}
Frame {
msec: 3712
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3728
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3744
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3760
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3776
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3792
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3808
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3824
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3840
@@ -1078,1802 +1222,106 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3872
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3888
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3904
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3920
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3936
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3952
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3968
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 3984
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4000
- hash: "a2386a0135e8ffd9f2ac12345ede3553"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4016
- hash: "9550cdc0032bc3ea0a611f2584f43cca"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4032
- hash: "3f39909102a04f0e41a97b10dde4425a"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4048
- hash: "535d56a4d450cf0222f94573a88bbf80"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4064
- hash: "c4b782cfb9399689b0cbfc2a97305984"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4080
- hash: "23604b04198d53e0ba4a0955d8bcf124"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4096
- hash: "a440962d680f70eb47af38a91390b8c0"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4112
- hash: "da4b079f00248a073ce49f749ff0cc77"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4128
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4144
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4160
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4176
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4192
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4208
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4224
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4240
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
Frame {
msec: 4256
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4272
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4288
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4304
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4320
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4336
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4352
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4368
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4384
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4400
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4416
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4432
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4448
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4464
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4480
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4496
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4512
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4528
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4544
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4560
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4576
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4592
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4608
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4624
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4640
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4656
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4672
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4688
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4704
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4720
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4736
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4752
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4768
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4784
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4832
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4848
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4864
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4880
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4896
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4912
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4928
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4944
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4960
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4976
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4992
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5008
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5024
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5040
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5056
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5072
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5088
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5104
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "58be5253b74ac1cecf08714e670e30af"
- }
- Frame {
- msec: 5136
- hash: "a8e15f6e28a67941730f9cfe8ea7f0ff"
- }
- Frame {
- msec: 5152
- hash: "f1bfd2e2cd3a3ff08ae36e785d33e626"
- }
- Frame {
- msec: 5168
- hash: "b61fd5c58ddaf806e72d77bed92e91f3"
- }
- Frame {
- msec: 5184
- hash: "f192f6b779fa6bdfd4bc9c8671dd3147"
- }
- Frame {
- msec: 5200
- hash: "1cf034cfdfe3cafa832e28950c90d67b"
- }
- Frame {
- msec: 5216
- hash: "b0d2223f7f2c302784654f03cb3a5c1c"
- }
- Frame {
- msec: 5232
- hash: "19d089ac37fd42c1be99facd38a954e3"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5264
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5280
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5296
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5312
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5328
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5344
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5360
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5376
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5392
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5408
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5424
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5440
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5456
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5472
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5488
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5504
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5520
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5536
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5552
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5568
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5584
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5600
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5616
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5632
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5648
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5664
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5680
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5696
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5712
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "51db47388acad98d18a8a2aaca279dba"
- }
- Frame {
- msec: 5744
- hash: "c83747a4356fa12593020452dbf43fe8"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "39d476722de92703d0a2259b5c62554e"
- }
- Frame {
- msec: 5792
- hash: "3f01e465470c3d5ab58b52f3e1517374"
- }
- Frame {
- msec: 5808
- hash: "63570753ba8c5f1525bf4cee38e8cad8"
- }
- Frame {
- msec: 5824
- hash: "31beab91ef4cadcf0b379b32786530ac"
- }
- Frame {
- msec: 5840
- hash: "46cd2e22eb4ef988752e2b3441bdd450"
- }
- Frame {
- msec: 5856
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5888
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5904
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5920
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5936
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5952
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5968
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5984
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6000
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6016
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6032
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6048
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6064
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6080
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6096
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6112
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6128
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6144
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6160
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6176
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6192
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6208
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6224
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6240
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6256
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6272
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "78c4aaf2427e0aa9b6d11ddf95df55f7"
- }
- Frame {
- msec: 6304
- hash: "d4859df2de6afa90c1997b1b4d6448ab"
- }
- Frame {
- msec: 6320
- hash: "f885e6a8cc09d06985a83f60e29a0a34"
- }
- Frame {
- msec: 6336
- hash: "41f27dbf80b0bc00498962162a5fe9db"
- }
- Frame {
- msec: 6352
- hash: "41800797032deeed5ccc87375b4093cb"
- }
- Frame {
- msec: 6368
- hash: "253276d23d8a0f195155361a27403496"
- }
- Frame {
- msec: 6384
- hash: "274bf40aacababde8fde71abf065d1aa"
- }
- Frame {
- msec: 6400
- hash: "86071a6486d35d3c10f318ab6bac7577"
- }
- Frame {
- msec: 6416
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6448
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6464
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6480
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6496
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6512
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6528
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6544
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6560
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6576
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6592
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6608
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6624
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6640
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6656
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6672
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6688
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6704
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6752
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6768
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6784
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6800
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6816
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6832
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6848
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "eea514e956369c55f9fe9bfc5b8bbda4"
- }
- Frame {
- msec: 6880
- hash: "b28436abb5ce17310b63ed96a7034000"
- }
- Frame {
- msec: 6896
- hash: "40c656f467200785a951dd8f98cf28f5"
- }
- Frame {
- msec: 6912
- hash: "38c6c6b29c9a7f0eba87a538a336c338"
- }
- Frame {
- msec: 6928
- hash: "b3f939577616f8ded1e11ee6e6dce882"
- }
- Frame {
- msec: 6944
- hash: "d72b00208712f039a5d7a06fbfacd4bd"
- }
- Frame {
- msec: 6960
- hash: "c7a079a37f6bd7a8da706e6ba5d048ee"
- }
- Frame {
- msec: 6976
- hash: "561cdf098bdc35fc852fbe8fff2471e2"
- }
- Frame {
- msec: 6992
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7024
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7040
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7056
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7072
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7088
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7104
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7120
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7136
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7152
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7168
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7184
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7200
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7216
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7232
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7248
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7264
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7280
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7296
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7312
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7328
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7344
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7360
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7376
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7392
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7408
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7424
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7440
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "096530df53ed21214cf93381ac0d23ea"
- }
- Frame {
- msec: 7472
- hash: "36e7cee0725fb16c5d7e08875a3b88f7"
- }
- Frame {
- msec: 7488
- hash: "a2b68c7e9e4ef04c1429190d01a3288b"
- }
- Frame {
- msec: 7504
- hash: "6ee23f5d2c0ddc21499c8685ae46df64"
- }
- Frame {
- msec: 7520
- hash: "dc423d32154882b99b7bde596697c83a"
- }
- Frame {
- msec: 7536
- hash: "e82852d1d2a21f67029870601b00b124"
- }
- Frame {
- msec: 7552
- hash: "7cd2773c33d7f34feb3b1e4752f63753"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "2371f0ddf1b0ddcdb36f24e72b62d3a5"
- }
- Frame {
- msec: 7584
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7600
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7616
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7632
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7648
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7664
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7712
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7728
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7744
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7760
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7776
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7792
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7808
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7824
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7840
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7856
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7872
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7888
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7904
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7920
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7936
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7952
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7968
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "93fd3abe0b99ed76d880f6f059636335"
- }
- Frame {
- msec: 8000
- hash: "a273ec355c79968013c70aca1b2d5737"
- }
- Frame {
- msec: 8016
- hash: "6b2df83c0645530ca007cde136838725"
- }
- Frame {
- msec: 8032
- hash: "47d5ed89f7e9c89df33bab14ca967f77"
- }
- Frame {
- msec: 8048
- hash: "c777e0d1a1f03e7a1bc16483f98c0622"
- }
- Frame {
- msec: 8064
- hash: "ac7e693d7dbc8e8ff2318cb611b68b76"
- }
- Frame {
- msec: 8080
- hash: "593e9711ae94a5b4f49544e0cf26d188"
- }
- Frame {
- msec: 8096
- hash: "afce51158cb19dd6ae8c72ce19964251"
- }
- Frame {
- msec: 8112
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8144
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8160
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8176
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8192
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8208
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8224
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8240
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8256
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8272
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8288
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8304
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8320
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8336
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8352
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8368
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8384
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8400
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8416
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8432
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8448
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8464
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8480
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8496
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "136c689aca9aa0cf957035137a926653"
- }
- Frame {
- msec: 8528
- hash: "b7418e46bca4bc8c953c15b03c23ec89"
- }
- Frame {
- msec: 8544
- hash: "e99575fe130e741f13329704303b76ca"
- }
- Frame {
- msec: 8560
- hash: "a2b7d528f9c145c4db0845bc76b3571f"
- }
- Frame {
- msec: 8576
- hash: "77f8beccd0134b8991ddb2ac92d64ecb"
- }
- Frame {
- msec: 8592
- hash: "fc359bc56852093020084af44987746a"
- }
- Frame {
- msec: 8608
- hash: "9f3479a702bc79062fff916678e974f1"
- }
- Frame {
- msec: 8624
- hash: "55c8c91ff26671f9f3049f1e1aaf5958"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8672
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8688
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8704
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8720
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8736
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8752
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8768
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8784
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8800
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8816
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8832
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8848
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8864
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8880
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8896
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8912
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8928
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8944
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8960
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8976
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8992
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9008
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9024
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9040
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9056
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "367ee34ab6a6cb0197e064db85638be7"
- }
- Frame {
- msec: 9088
- hash: "c61db7f2c0402a63efe779bec816a7db"
- }
- Frame {
- msec: 9104
- hash: "29d4d2679a502a1cb8a21807c43153c2"
- }
- Frame {
- msec: 9120
- hash: "3f531d4111efbbac256d4281db1fdeba"
- }
- Frame {
- msec: 9136
- hash: "9f343d8b4dc12cc7ab5ae1ff08067baf"
- }
- Frame {
- msec: 9152
- hash: "eb29b7d6ef2b5507425b2c30ddb58fa8"
- }
- Frame {
- msec: 9168
- hash: "883c0d35567deb6de9125441da89a1fe"
- }
- Frame {
- msec: 9184
- hash: "7c25e95ea2b38288b5ba5737108ef5d1"
- }
- Frame {
- msec: 9200
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9232
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9248
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9264
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9280
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9296
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9312
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9328
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9344
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9360
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9376
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9392
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9408
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9424
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9440
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9456
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9472
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9488
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9504
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9520
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9536
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9552
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9568
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9584
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9632
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9648
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9664
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9680
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9696
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9712
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9728
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9744
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9760
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9776
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9792
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9808
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9824
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9840
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9856
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9872
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9888
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9904
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9920
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9936
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9952
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9968
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9984
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10000
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10016
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10032
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10048
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10064
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10080
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10096
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10112
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10128
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10144
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10160
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10176
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10192
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10208
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10224
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10240
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10256
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10272
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10288
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10304
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10320
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10336
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10352
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10368
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10400
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10416
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10432
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "4a753a2b626eaf8336cd5e5d04d05d5b"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test.qml b/tests/auto/declarative/qmlvisual/focusscope/test.qml
index 6b2ee2599c..7342e353db 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test.qml
@@ -1,9 +1,16 @@
import QtQuick 1.0
+/*
+ Blue border indicates scoped focus
+ Black border indicates NOT scoped focus
+ Red box indicates active focus
+ Use arrow keys to navigate
+ Press "9" to print currently focused item
+*/
Rectangle {
color: "white"
- width: 800
- height: 600
+ width: 480
+ height: 480
Keys.onDigit9Pressed: console.log("Error - Root")
@@ -55,8 +62,6 @@ Rectangle {
KeyNavigation.down: item3
}
- Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box indicates active focus\nUse arrow keys to navigate\nPress \"9\" to print currently focused item" }
-
Rectangle {
id: item3
x: 10; y: 300
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/test2.qml
index 4df75cfebe..072eddbf2d 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test2.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test2.qml
@@ -2,35 +2,33 @@ import QtQuick 1.0
Rectangle {
color: "white"
- width: 800
- height: 600
-
- Text { text: "All five rectangles should be red" }
+ width: 400
+ height: 50
+ //All five rectangles should be red
FocusScope {
- y: 100
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
index 184763add7..01fb58091f 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
@@ -1,9 +1,14 @@
import QtQuick 1.0
+/*
+ Currently selected element should be red
+ Pressing "9" should print the number of the currently selected item
+ Be sure to scroll all the way to the right, pause, and then all the way to the left
+*/
Rectangle {
color: "white"
- width: 800
- height: 600
+ width: 400
+ height: 100
ListModel {
id: model
@@ -45,8 +50,4 @@ Rectangle {
}
- Text {
- y: 100; x: 50
- text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left."
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
index f4ead540da..75a644ae37 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
@@ -20,14 +20,14 @@ Item {
SequentialAnimation on width {
loops: Animation.Infinite
- NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing.type: "InOutQuad"}
- NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing.type: "InOutQuad" }
+ NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 1000; easing.type: "InOutQuad"}
+ NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 1000; easing.type: "InOutQuad" }
}
SequentialAnimation on height {
loops: Animation.Infinite
- NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing.type: "InOutQuad"}
- NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing.type: "InOutQuad" }
+ NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 1000; easing.type: "InOutQuad"}
+ NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 1000; easing.type: "InOutQuad" }
}
border.top: container.margin
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
index 9a6b079fdb..b6ef0f56e1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
index 4366d531e9..11622a7dc8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png
deleted file mode 100644
index 85a2729d2b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png
deleted file mode 100644
index de6ff7c3f9..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png
deleted file mode 100644
index fe7d3dd1eb..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png
deleted file mode 100644
index e73bef53f3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png
deleted file mode 100644
index 0c75422191..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
index e974234b6f..120009939b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
@@ -22,223 +22,223 @@ VisualTest {
}
Frame {
msec: 80
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "9419c891e347fe6b25d30c05bae5d14c"
}
Frame {
msec: 96
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "62430dd693c4eaeb7afe9e85229406a4"
}
Frame {
msec: 112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "a9b6aeb509076bf17c2068ce280326fb"
}
Frame {
msec: 128
- hash: "cd2180be80101c2aa4350b51b7a6f502"
+ hash: "2570806925c3a61a7afaa09331c6eed8"
}
Frame {
msec: 144
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
+ hash: "98d48920293b11511e8bbf820dd49acc"
}
Frame {
msec: 160
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
+ hash: "e4809aefa55620a86484f66582d4d1b6"
}
Frame {
msec: 176
- hash: "59470d71fa4426d0283e86371f2bfc2a"
+ hash: "098b063b0e5eb3dd22adb3353342725e"
}
Frame {
msec: 192
- hash: "9a2f92efb51bcc6293d6a8e82d5314ea"
+ hash: "30aadc837ec2e7d8a2495453348804bc"
}
Frame {
msec: 208
- hash: "7b66e21652a7d0982226e281a48411a9"
+ hash: "05013a538f2796c728b4d0ddad059851"
}
Frame {
msec: 224
- hash: "a716c8d2c94433dee719f92f0822c8ec"
+ hash: "b221f14ea2c04078e23ac37ef817c50e"
}
Frame {
msec: 240
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
+ hash: "3ef9de605fff5d3156bccc99a93c5da6"
}
Frame {
msec: 256
- hash: "5a8932d13d624932a65694fd19ec05cd"
+ hash: "7722a4c025f1d2b560c7fec8ba8f7b6d"
}
Frame {
msec: 272
- hash: "48e62dd171f5da82b5aa26c765e4042c"
+ hash: "e24ad2d67f10d2cc58dffcc469342005"
}
Frame {
msec: 288
- hash: "63d3c47f7dec1236440a05e0a8380900"
+ hash: "5153a42348885ce8de81f8086f73c163"
}
Frame {
msec: 304
- hash: "323af110731b7af0c30f8862ff59b833"
+ hash: "7083d70df6cc476ec342abbe6f4409b4"
}
Frame {
msec: 320
- hash: "83c029e328e80af83158c37089cf0ece"
+ hash: "befd4cd74f59291a9f9a01ad2a051029"
}
Frame {
msec: 336
- hash: "3f9a09ae19be34348bb2552915360cf7"
+ hash: "705cd5a0717b6a8de8871bf0bfb38129"
}
Frame {
msec: 352
- hash: "df624d70cae1bcefda8d69c0ff055d83"
+ hash: "a65d51747c0183a3a096e51326fdae78"
}
Frame {
msec: 368
- hash: "d671a3b971468e1d8aa30ab655e020a9"
+ hash: "99ec9ca33a26afd9e34c1d3246502926"
}
Frame {
msec: 384
- hash: "74c837b29f7f05b615123f0e608b523f"
+ hash: "3355ce4b409474e6dbd99d010471a0a4"
}
Frame {
msec: 400
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
+ hash: "bcfb117c5860306c016a05e828773777"
}
Frame {
msec: 416
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
+ hash: "4650216f60377bf7798877546c723d0a"
}
Frame {
msec: 432
- hash: "456be9c208d690c479ba12bf6325dde0"
+ hash: "3821707e1201c5eebb043f86887c6bc4"
}
Frame {
msec: 448
- hash: "10307beea6d99ab0ff5863f8e35555ed"
+ hash: "19c079bd61467706ff54f039f512dee6"
}
Frame {
msec: 464
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
+ hash: "9fdd3bb7d735a96df8538f2883d784fe"
}
Frame {
msec: 480
- hash: "64ecb03aa538e74d0b99c6dec7751401"
+ hash: "d8096b88c24221d7176472031de3dc14"
}
Frame {
msec: 496
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
+ hash: "be4abb3dd1ee3fc62b83d152a1a89576"
}
Frame {
msec: 512
- hash: "0f347763f25350ebb62dda1536372b45"
+ hash: "e3d2caf6eb0afd2e6efd5c08a580e158"
}
Frame {
msec: 528
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
+ hash: "40bdf75ac82c26a741939945dbf85924"
}
Frame {
msec: 544
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
+ hash: "e2e3bee6bf84bc82c50a68e442440f05"
}
Frame {
msec: 560
- hash: "31d65134f340d82dd40f2401bda3fb7e"
+ hash: "2cb89b7538d4dd398a9ff5a94e2d0020"
}
Frame {
msec: 576
- hash: "16c16c77c65b36d1e0954d5ead2642be"
+ hash: "41dce41d337e7d24a5e70d831dbb448b"
}
Frame {
msec: 592
- hash: "61c16009b65a55bffb63e27727e1615e"
+ hash: "7812862b4c1d67a64792a94cb584a9ed"
}
Frame {
msec: 608
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
+ hash: "a82a2af4b9cee89e03db363f979d1661"
}
Frame {
msec: 624
- hash: "89c159ef00d273ecfe61332e1bf7244d"
+ hash: "7071a72a55fab2d7b367eb113d38dc6d"
}
Frame {
msec: 640
- hash: "f4d0d3bca25e67908b38910f47b4757e"
+ hash: "835de3a883cb3a7c35cb533f51f9b32c"
}
Frame {
msec: 656
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
+ hash: "498afb76e236561638532ba6cafd758a"
}
Frame {
msec: 672
- hash: "4310a4c3037d845f088f21ad608f366a"
+ hash: "38ebf5835263e6e80e75653971ad74b4"
}
Frame {
msec: 688
- hash: "3d518cd0348d6202243364af1dd6ce89"
+ hash: "b5e8c06b458b1afac627ed7f7e76c868"
}
Frame {
msec: 704
- hash: "41987e6b4248d7944c0dbc6eb3862023"
+ hash: "594e33c35006281b2df3a45c13c31c44"
}
Frame {
msec: 720
- hash: "3e81338d38723d56f2d6c428271f81c1"
+ hash: "a49989ca004a6991b49d1978cfc0fed7"
}
Frame {
msec: 736
- hash: "74af3457583fbaf73f14556aeccc8403"
+ hash: "a743fc5cdcaadd42095e9e0d8441f7cc"
}
Frame {
msec: 752
- hash: "efc119983701908a904deb24108c59cb"
+ hash: "4ca1600674bad4b753007322945e25dd"
}
Frame {
msec: 768
- hash: "3a77785cfd7755f567619d8e04583f6a"
+ hash: "d2921c6ae6a1aa9168a2fa93e8936ff2"
}
Frame {
msec: 784
- hash: "fd85d1dd931033973283a408b5e328a8"
+ hash: "55b9f82693d6ebde9ec23e3ed554bb9c"
}
Frame {
msec: 800
- hash: "5d3e85acabe5e5ff802eb7731676274f"
+ hash: "15e72f5cd1847f591b0c4f6ecb74ed4a"
}
Frame {
msec: 816
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
+ hash: "7aa94688f72d6ddade09a9d99f1c5563"
}
Frame {
msec: 832
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
+ hash: "b782f52c9cb50c72307bbd8fd15fffd2"
}
Frame {
msec: 848
- hash: "84ef6dda8318b623832f58c46d762e89"
+ hash: "8106f20a3c0c3e7ea0e502e963993330"
}
Frame {
msec: 864
- hash: "b699285764f5e8866a9996f4a0dccc69"
+ hash: "670b05d25b72ed4c6affdcf873374947"
}
Frame {
msec: 880
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
+ hash: "a34b08cb7e724c0563f86a5c8e209868"
}
Frame {
msec: 896
- hash: "177666cb3bb784c83196886b2c6cf6b6"
+ hash: "f5281eba399a13f6fa024ae0fa6b01bd"
}
Frame {
msec: 912
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
+ hash: "db4dba10574839c3b3d8684aa1a2ad08"
}
Frame {
msec: 928
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
+ hash: "b90f1f30d340d292c658145f62e2bb8a"
}
Frame {
msec: 944
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
+ hash: "452c45b5cc9be80abde7af04ba49731c"
}
Frame {
msec: 960
@@ -246,239 +246,239 @@ VisualTest {
}
Frame {
msec: 976
- hash: "64b21b89576fdd0083f60a26f57b9c11"
+ hash: "8af61e4b09309e31394ae635d58fafd2"
}
Frame {
msec: 992
- hash: "0d407ee07692d0e5a480a60952807b3c"
+ hash: "9ce60e38b7025c6fa72432de6a3c88b2"
}
Frame {
msec: 1008
- hash: "845170815a87565dc4229792032b3357"
+ hash: "9e7f9d0e83a33f005d9ee579140c5562"
}
Frame {
msec: 1024
- hash: "8b8120cfc14de03e048632fdea61be21"
+ hash: "9e7f9d0e83a33f005d9ee579140c5562"
}
Frame {
msec: 1040
- hash: "b0070117f1c24a4da87434725d4bb989"
+ hash: "9ce60e38b7025c6fa72432de6a3c88b2"
}
Frame {
msec: 1056
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
+ hash: "8af61e4b09309e31394ae635d58fafd2"
}
Frame {
msec: 1072
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
+ hash: "d9ab04d0a6a9373e5622e1124db17866"
}
Frame {
msec: 1088
- hash: "853429387cc639496c7338244de7e1b7"
+ hash: "452c45b5cc9be80abde7af04ba49731c"
}
Frame {
msec: 1104
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
+ hash: "b90f1f30d340d292c658145f62e2bb8a"
}
Frame {
msec: 1120
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
+ hash: "db4dba10574839c3b3d8684aa1a2ad08"
}
Frame {
msec: 1136
- hash: "53f05993ba3b426949badd2e4cd66d84"
+ hash: "f5281eba399a13f6fa024ae0fa6b01bd"
}
Frame {
msec: 1152
- hash: "23291a0239c69ea07db959e709b1ff5f"
+ hash: "a34b08cb7e724c0563f86a5c8e209868"
}
Frame {
msec: 1168
- hash: "85ef33fcb3f91e4fc20391bf94455984"
+ hash: "670b05d25b72ed4c6affdcf873374947"
}
Frame {
msec: 1184
- hash: "d6615fc345831a3cc5b9a7196284b632"
+ hash: "8106f20a3c0c3e7ea0e502e963993330"
}
Frame {
msec: 1200
- hash: "07acba64dc608439a8a54fcb080379e8"
+ hash: "b782f52c9cb50c72307bbd8fd15fffd2"
}
Frame {
msec: 1216
- hash: "2a1fcfb753ca237b518da26e67c928e5"
+ hash: "7aa94688f72d6ddade09a9d99f1c5563"
}
Frame {
msec: 1232
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
+ hash: "15e72f5cd1847f591b0c4f6ecb74ed4a"
}
Frame {
msec: 1248
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
+ hash: "55b9f82693d6ebde9ec23e3ed554bb9c"
}
Frame {
msec: 1264
- hash: "2084ccc60ddd493399c128717816d33b"
+ hash: "d2921c6ae6a1aa9168a2fa93e8936ff2"
}
Frame {
msec: 1280
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
+ hash: "4ca1600674bad4b753007322945e25dd"
}
Frame {
msec: 1296
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
+ hash: "a743fc5cdcaadd42095e9e0d8441f7cc"
}
Frame {
msec: 1312
- hash: "fce2648975106bc5c0ca9a4530f7f748"
+ hash: "a49989ca004a6991b49d1978cfc0fed7"
}
Frame {
msec: 1328
- hash: "39cc17ee2e889f17dd07179fda99e431"
+ hash: "594e33c35006281b2df3a45c13c31c44"
}
Frame {
msec: 1344
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
+ hash: "b5e8c06b458b1afac627ed7f7e76c868"
}
Frame {
msec: 1360
- hash: "d65d50fbb920e683b041a1c72238225b"
+ hash: "38ebf5835263e6e80e75653971ad74b4"
}
Frame {
msec: 1376
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
+ hash: "498afb76e236561638532ba6cafd758a"
}
Frame {
msec: 1392
- hash: "05cbce0eaa80b4610a9067af8c40f819"
+ hash: "835de3a883cb3a7c35cb533f51f9b32c"
}
Frame {
msec: 1408
- hash: "00ab7798bcd77a99886dff0414f35382"
+ hash: "7071a72a55fab2d7b367eb113d38dc6d"
}
Frame {
msec: 1424
- hash: "5cc90d798786c270ddd2616512f4459f"
+ hash: "a82a2af4b9cee89e03db363f979d1661"
}
Frame {
msec: 1440
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
+ hash: "7812862b4c1d67a64792a94cb584a9ed"
}
Frame {
msec: 1456
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
+ hash: "41dce41d337e7d24a5e70d831dbb448b"
}
Frame {
msec: 1472
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
+ hash: "2cb89b7538d4dd398a9ff5a94e2d0020"
}
Frame {
msec: 1488
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
+ hash: "e2e3bee6bf84bc82c50a68e442440f05"
}
Frame {
msec: 1504
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
+ hash: "40bdf75ac82c26a741939945dbf85924"
}
Frame {
msec: 1520
- hash: "deed4c06c9b713834490832b88e7acaf"
+ hash: "e3d2caf6eb0afd2e6efd5c08a580e158"
}
Frame {
msec: 1536
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
+ hash: "be4abb3dd1ee3fc62b83d152a1a89576"
}
Frame {
msec: 1552
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
+ hash: "d8096b88c24221d7176472031de3dc14"
}
Frame {
msec: 1568
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
+ hash: "9fdd3bb7d735a96df8538f2883d784fe"
}
Frame {
msec: 1584
- hash: "a087b532ecb2f28e4ee60819228c2522"
+ hash: "19c079bd61467706ff54f039f512dee6"
}
Frame {
msec: 1600
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
+ hash: "3821707e1201c5eebb043f86887c6bc4"
}
Frame {
msec: 1616
- hash: "880640372bf584955627f6835f24be13"
+ hash: "4650216f60377bf7798877546c723d0a"
}
Frame {
msec: 1632
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
+ hash: "bcfb117c5860306c016a05e828773777"
}
Frame {
msec: 1648
- hash: "705d9c8de05c859a42769f73761c6a63"
+ hash: "3355ce4b409474e6dbd99d010471a0a4"
}
Frame {
msec: 1664
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
+ hash: "99ec9ca33a26afd9e34c1d3246502926"
}
Frame {
msec: 1680
- hash: "774740a393f3e9b8f12b81cce8da8280"
+ hash: "a65d51747c0183a3a096e51326fdae78"
}
Frame {
msec: 1696
- hash: "64cd225202ed6c91b02c368a9160a656"
+ hash: "705cd5a0717b6a8de8871bf0bfb38129"
}
Frame {
msec: 1712
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
+ hash: "befd4cd74f59291a9f9a01ad2a051029"
}
Frame {
msec: 1728
- hash: "47e920e3884ccf2f0f49e78070af6929"
+ hash: "7083d70df6cc476ec342abbe6f4409b4"
}
Frame {
msec: 1744
- hash: "fe899138116774df4c4441687e3019c5"
+ hash: "5153a42348885ce8de81f8086f73c163"
}
Frame {
msec: 1760
- hash: "5d9ee853f083d514fbe51d6953d8e000"
+ hash: "e24ad2d67f10d2cc58dffcc469342005"
}
Frame {
msec: 1776
- hash: "5736362b42bc2d801e02edabb983663a"
+ hash: "7722a4c025f1d2b560c7fec8ba8f7b6d"
}
Frame {
msec: 1792
- hash: "c3ea530de646612f9203c5800cad884b"
+ hash: "3ef9de605fff5d3156bccc99a93c5da6"
}
Frame {
msec: 1808
- hash: "48952ffa5e300778eafa768b9fe7df0c"
+ hash: "b221f14ea2c04078e23ac37ef817c50e"
}
Frame {
msec: 1824
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
+ hash: "05013a538f2796c728b4d0ddad059851"
}
Frame {
msec: 1840
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
+ hash: "30aadc837ec2e7d8a2495453348804bc"
}
Frame {
msec: 1856
- hash: "89022a8e2feb3dcb845de69aafc333ad"
+ hash: "098b063b0e5eb3dd22adb3353342725e"
}
Frame {
msec: 1872
- hash: "25506557c853a0020e98cf3992956989"
+ hash: "e4809aefa55620a86484f66582d4d1b6"
}
Frame {
msec: 1888
- hash: "9a64706c52c9e962816953e32950b8ba"
+ hash: "98d48920293b11511e8bbf820dd49acc"
}
Frame {
msec: 1904
- hash: "3cbfded47413172ada64095e65c55e8a"
+ hash: "2570806925c3a61a7afaa09331c6eed8"
}
Frame {
msec: 1920
@@ -486,1338 +486,58 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "c5e399e29b988148913e62ee208b3326"
+ hash: "62430dd693c4eaeb7afe9e85229406a4"
}
Frame {
msec: 1952
- hash: "b980703c1d0018937e83a8ba8862469e"
+ hash: "9419c891e347fe6b25d30c05bae5d14c"
}
Frame {
msec: 1968
- hash: "05312f9529c94d3331ace7d73c544284"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 1984
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2000
- hash: "ee297a2d68c9e58157d9bf189d353713"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2016
- hash: "00f3c9b8b37cb104cf2a7701639bc61f"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2032
- hash: "ee297a2d68c9e58157d9bf189d353713"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2048
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2064
- hash: "05312f9529c94d3331ace7d73c544284"
+ hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
msec: 2080
- hash: "b980703c1d0018937e83a8ba8862469e"
+ hash: "9419c891e347fe6b25d30c05bae5d14c"
}
Frame {
msec: 2096
- hash: "c5e399e29b988148913e62ee208b3326"
+ hash: "62430dd693c4eaeb7afe9e85229406a4"
}
Frame {
msec: 2112
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
+ hash: "a9b6aeb509076bf17c2068ce280326fb"
}
Frame {
msec: 2128
- hash: "3cbfded47413172ada64095e65c55e8a"
+ hash: "2570806925c3a61a7afaa09331c6eed8"
}
Frame {
msec: 2144
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 2160
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 2176
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 2192
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 2208
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 2224
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 2240
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 2256
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 2272
- hash: "5d9ee853f083d514fbe51d6953d8e000"
- }
- Frame {
- msec: 2288
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 2304
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 2320
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 2336
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 2352
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 2368
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 2384
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 2400
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 2416
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 2432
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 2448
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 2464
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 2480
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 2496
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 2512
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 2528
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 2544
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 2560
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 2576
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 2592
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 2608
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 2624
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 2640
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 2656
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 2672
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 2688
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 2704
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 2720
- hash: "fce2648975106bc5c0ca9a4530f7f748"
- }
- Frame {
- msec: 2736
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 2752
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 2768
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 2784
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 2800
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 2816
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 2832
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 2848
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 2864
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 2880
- image: "animated-smooth.2.png"
- }
- Frame {
- msec: 2896
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 2912
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 2928
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 2944
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 2960
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 2976
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 2992
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 3008
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 3024
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 3040
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 3056
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 3072
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 3088
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Frame {
- msec: 3104
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 3120
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 3136
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 3152
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 3168
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 3184
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 3200
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 3216
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 3232
- hash: "5d3e85acabe5e5ff802eb7731676274f"
- }
- Frame {
- msec: 3248
- hash: "fd85d1dd931033973283a408b5e328a8"
- }
- Frame {
- msec: 3264
- hash: "3a77785cfd7755f567619d8e04583f6a"
- }
- Frame {
- msec: 3280
- hash: "efc119983701908a904deb24108c59cb"
- }
- Frame {
- msec: 3296
- hash: "74af3457583fbaf73f14556aeccc8403"
- }
- Frame {
- msec: 3312
- hash: "3e81338d38723d56f2d6c428271f81c1"
- }
- Frame {
- msec: 3328
- hash: "41987e6b4248d7944c0dbc6eb3862023"
- }
- Frame {
- msec: 3344
- hash: "3d518cd0348d6202243364af1dd6ce89"
- }
- Frame {
- msec: 3360
- hash: "4310a4c3037d845f088f21ad608f366a"
- }
- Frame {
- msec: 3376
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
- }
- Frame {
- msec: 3392
- hash: "f4d0d3bca25e67908b38910f47b4757e"
- }
- Frame {
- msec: 3408
- hash: "89c159ef00d273ecfe61332e1bf7244d"
- }
- Frame {
- msec: 3424
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
- }
- Frame {
- msec: 3440
- hash: "61c16009b65a55bffb63e27727e1615e"
- }
- Frame {
- msec: 3456
- hash: "16c16c77c65b36d1e0954d5ead2642be"
- }
- Frame {
- msec: 3472
- hash: "31d65134f340d82dd40f2401bda3fb7e"
- }
- Frame {
- msec: 3488
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
- }
- Frame {
- msec: 3504
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
- }
- Frame {
- msec: 3520
- hash: "0f347763f25350ebb62dda1536372b45"
- }
- Frame {
- msec: 3536
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
- }
- Frame {
- msec: 3552
- hash: "64ecb03aa538e74d0b99c6dec7751401"
- }
- Frame {
- msec: 3568
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
- }
- Frame {
- msec: 3584
- hash: "10307beea6d99ab0ff5863f8e35555ed"
- }
- Frame {
- msec: 3600
- hash: "456be9c208d690c479ba12bf6325dde0"
- }
- Frame {
- msec: 3616
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
- }
- Frame {
- msec: 3632
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
- }
- Frame {
- msec: 3648
- hash: "74c837b29f7f05b615123f0e608b523f"
- }
- Frame {
- msec: 3664
- hash: "d671a3b971468e1d8aa30ab655e020a9"
- }
- Frame {
- msec: 3680
- hash: "df624d70cae1bcefda8d69c0ff055d83"
- }
- Frame {
- msec: 3696
- hash: "3f9a09ae19be34348bb2552915360cf7"
- }
- Frame {
- msec: 3712
- hash: "83c029e328e80af83158c37089cf0ece"
- }
- Frame {
- msec: 3728
- hash: "323af110731b7af0c30f8862ff59b833"
- }
- Frame {
- msec: 3744
- hash: "63d3c47f7dec1236440a05e0a8380900"
- }
- Frame {
- msec: 3760
- hash: "48e62dd171f5da82b5aa26c765e4042c"
- }
- Frame {
- msec: 3776
- hash: "5a8932d13d624932a65694fd19ec05cd"
- }
- Frame {
- msec: 3792
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
- }
- Frame {
- msec: 3808
- hash: "a716c8d2c94433dee719f92f0822c8ec"
- }
- Frame {
- msec: 3824
- hash: "7b66e21652a7d0982226e281a48411a9"
- }
- Frame {
- msec: 3840
- image: "animated-smooth.3.png"
- }
- Frame {
- msec: 3856
- hash: "59470d71fa4426d0283e86371f2bfc2a"
- }
- Frame {
- msec: 3872
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
- }
- Frame {
- msec: 3888
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
- }
- Frame {
- msec: 3904
- hash: "cd2180be80101c2aa4350b51b7a6f502"
- }
- Frame {
- msec: 3920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4016
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4032
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4048
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4064
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4080
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4096
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4128
- hash: "cd2180be80101c2aa4350b51b7a6f502"
- }
- Frame {
- msec: 4144
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
- }
- Frame {
- msec: 4160
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
- }
- Frame {
- msec: 4176
- hash: "59470d71fa4426d0283e86371f2bfc2a"
- }
- Frame {
- msec: 4192
- hash: "9a2f92efb51bcc6293d6a8e82d5314ea"
- }
- Frame {
- msec: 4208
- hash: "7b66e21652a7d0982226e281a48411a9"
- }
- Frame {
- msec: 4224
- hash: "a716c8d2c94433dee719f92f0822c8ec"
- }
- Frame {
- msec: 4240
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
- }
- Frame {
- msec: 4256
- hash: "5a8932d13d624932a65694fd19ec05cd"
- }
- Frame {
- msec: 4272
- hash: "48e62dd171f5da82b5aa26c765e4042c"
- }
- Frame {
- msec: 4288
- hash: "63d3c47f7dec1236440a05e0a8380900"
- }
- Frame {
- msec: 4304
- hash: "323af110731b7af0c30f8862ff59b833"
- }
- Frame {
- msec: 4320
- hash: "83c029e328e80af83158c37089cf0ece"
- }
- Frame {
- msec: 4336
- hash: "3f9a09ae19be34348bb2552915360cf7"
- }
- Frame {
- msec: 4352
- hash: "df624d70cae1bcefda8d69c0ff055d83"
- }
- Frame {
- msec: 4368
- hash: "d671a3b971468e1d8aa30ab655e020a9"
- }
- Frame {
- msec: 4384
- hash: "74c837b29f7f05b615123f0e608b523f"
- }
- Frame {
- msec: 4400
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
- }
- Frame {
- msec: 4416
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
- }
- Frame {
- msec: 4432
- hash: "456be9c208d690c479ba12bf6325dde0"
- }
- Frame {
- msec: 4448
- hash: "10307beea6d99ab0ff5863f8e35555ed"
- }
- Frame {
- msec: 4464
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
- }
- Frame {
- msec: 4480
- hash: "64ecb03aa538e74d0b99c6dec7751401"
- }
- Frame {
- msec: 4496
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
- }
- Frame {
- msec: 4512
- hash: "0f347763f25350ebb62dda1536372b45"
- }
- Frame {
- msec: 4528
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
- }
- Frame {
- msec: 4544
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
- }
- Frame {
- msec: 4560
- hash: "31d65134f340d82dd40f2401bda3fb7e"
- }
- Frame {
- msec: 4576
- hash: "16c16c77c65b36d1e0954d5ead2642be"
- }
- Frame {
- msec: 4592
- hash: "61c16009b65a55bffb63e27727e1615e"
- }
- Frame {
- msec: 4608
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
- }
- Frame {
- msec: 4624
- hash: "89c159ef00d273ecfe61332e1bf7244d"
- }
- Frame {
- msec: 4640
- hash: "f4d0d3bca25e67908b38910f47b4757e"
- }
- Frame {
- msec: 4656
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
- }
- Frame {
- msec: 4672
- hash: "4310a4c3037d845f088f21ad608f366a"
- }
- Frame {
- msec: 4688
- hash: "3d518cd0348d6202243364af1dd6ce89"
- }
- Frame {
- msec: 4704
- hash: "41987e6b4248d7944c0dbc6eb3862023"
- }
- Frame {
- msec: 4720
- hash: "3e81338d38723d56f2d6c428271f81c1"
- }
- Frame {
- msec: 4736
- hash: "74af3457583fbaf73f14556aeccc8403"
- }
- Frame {
- msec: 4752
- hash: "efc119983701908a904deb24108c59cb"
- }
- Frame {
- msec: 4768
- hash: "3a77785cfd7755f567619d8e04583f6a"
- }
- Frame {
- msec: 4784
- hash: "fd85d1dd931033973283a408b5e328a8"
- }
- Frame {
- msec: 4800
- image: "animated-smooth.4.png"
- }
- Frame {
- msec: 4816
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 4832
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 4848
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 4864
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 4880
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 4896
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 4912
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 4928
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 4944
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Frame {
- msec: 4960
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 4976
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 4992
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 5008
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 5024
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 5040
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 5056
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 5072
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 5088
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 5104
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 5120
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 5136
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 5152
- hash: "23291a0239c69ea07db959e709b1ff5f"
- }
- Frame {
- msec: 5168
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 5184
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 5200
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 5216
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 5232
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 5248
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 5264
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 5280
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 5296
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 5312
- hash: "fce2648975106bc5c0ca9a4530f7f748"
- }
- Frame {
- msec: 5328
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 5344
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 5360
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 5376
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 5392
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 5408
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 5424
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 5440
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 5456
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 5472
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 5488
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 5504
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 5520
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 5536
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 5552
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 5568
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 5584
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 5600
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 5616
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 5632
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 5648
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 5664
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 5680
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 5696
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 5712
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 5728
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 5744
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 5760
- image: "animated-smooth.5.png"
- }
- Frame {
- msec: 5776
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 5792
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 5808
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 5824
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 5840
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 5856
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 5872
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 5888
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 5904
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 5920
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
- }
- Frame {
- msec: 5936
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 5952
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 5968
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 5984
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 6000
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 6016
- hash: "00f3c9b8b37cb104cf2a7701639bc61f"
- }
- Frame {
- msec: 6032
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 6048
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 6064
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 6080
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 6096
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 6112
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
- }
- Frame {
- msec: 6128
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 6144
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 6160
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 6176
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 6192
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 6208
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 6224
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 6240
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 6256
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 6272
- hash: "5d9ee853f083d514fbe51d6953d8e000"
- }
- Frame {
- msec: 6288
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 6304
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 6320
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 6336
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 6352
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 6368
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 6384
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 6400
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 6416
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 6432
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 6448
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 6464
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 6480
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 6496
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 6512
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 6528
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 6544
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 6560
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 6576
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 6592
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 6608
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 6624
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 6640
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 6656
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 6672
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 6688
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 6704
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 6720
- image: "animated-smooth.6.png"
- }
- Frame {
- msec: 6736
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 6752
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 6768
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 6784
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 6800
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 6816
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 6832
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 6848
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 6864
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 6880
- hash: "23291a0239c69ea07db959e709b1ff5f"
- }
- Frame {
- msec: 6896
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 6912
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 6928
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 6944
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 6960
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 6976
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 6992
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 7008
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 7024
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 7040
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 7056
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 7072
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 7088
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 7104
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 7120
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 7136
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 7152
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 7168
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 7184
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 7200
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 7216
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 7232
- hash: "5d3e85acabe5e5ff802eb7731676274f"
+ hash: "98d48920293b11511e8bbf820dd49acc"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
index 99228f9908..3efd596799 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
index a2dcd00aaa..517fc06d84 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
deleted file mode 100644
index 8a8002067c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
deleted file mode 100644
index 02b57ef241..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
deleted file mode 100644
index df0f6cc57c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
deleted file mode 100644
index 0add64df61..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
deleted file mode 100644
index 08862076e2..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
deleted file mode 100644
index bc1a7b0675..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
index 630a6d2ec7..236003a0c7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
@@ -22,223 +22,223 @@ VisualTest {
}
Frame {
msec: 80
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "aacf9ae3c23d174a1c1cda493600e355"
}
Frame {
msec: 96
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "465ec993948f7b75aeb5759976f4620d"
}
Frame {
msec: 112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "b63e4d1686057828fd8781f1c33585f5"
}
Frame {
msec: 128
- hash: "4c60d345821f515c7811f3b69eb94607"
+ hash: "4d45d70f997c2c67166905c97a900d2e"
}
Frame {
msec: 144
- hash: "aacf9ae3c23d174a1c1cda493600e355"
+ hash: "08b9be66e23c7b6f6f629c7470394601"
}
Frame {
msec: 160
- hash: "228d5312c261d1a5455faf69ec2f2520"
+ hash: "406224b535b4425d2708df0083acdc8e"
}
Frame {
msec: 176
- hash: "465ec993948f7b75aeb5759976f4620d"
+ hash: "8419f1d75b14130730bcfec4e3a9b058"
}
Frame {
msec: 192
- hash: "755cfccc38bababc468fe6e1076804bb"
+ hash: "c1936628aec13e08e9581dcd2c6d5717"
}
Frame {
msec: 208
- hash: "b63e4d1686057828fd8781f1c33585f5"
+ hash: "8c66a33d26eec2a1133f4362710a5fab"
}
Frame {
msec: 224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
+ hash: "01947e631c3db43f7c5b4427229bc0c8"
}
Frame {
msec: 240
- hash: "4d45d70f997c2c67166905c97a900d2e"
+ hash: "06d8d8a1a41893d4e27725948a75caf4"
}
Frame {
msec: 256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
+ hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
}
Frame {
msec: 272
- hash: "08b9be66e23c7b6f6f629c7470394601"
+ hash: "2a7bed775824968e318c3d40fbc5b1c2"
}
Frame {
msec: 288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
+ hash: "f1a7a4a67a21f5025294af4bea3f8998"
}
Frame {
msec: 304
- hash: "406224b535b4425d2708df0083acdc8e"
+ hash: "18c2f321a149e38b258ac264d40c2376"
}
Frame {
msec: 320
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
+ hash: "19d05a96f3ae7388e854bbf1075b51c1"
}
Frame {
msec: 336
- hash: "8419f1d75b14130730bcfec4e3a9b058"
+ hash: "554e1d360463871e7c05cfe6f8abe1dd"
}
Frame {
msec: 352
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
+ hash: "60f158382f75103c78e2b9b408e0fe65"
}
Frame {
msec: 368
- hash: "c1936628aec13e08e9581dcd2c6d5717"
+ hash: "6a521f952e05d91b86ad78fd6f5de4f9"
}
Frame {
msec: 384
- hash: "75c9bf83ca3fe24612c245698c089430"
+ hash: "a6f17da2dd581bdc249ff62f833dc025"
}
Frame {
msec: 400
- hash: "8c66a33d26eec2a1133f4362710a5fab"
+ hash: "1ea07ee309ce2c52cbc36370b75a872f"
}
Frame {
msec: 416
- hash: "2266df495ab5265e7514a506d3bf5bc6"
+ hash: "c7eb7837dce71c914186326216214eeb"
}
Frame {
msec: 432
- hash: "01947e631c3db43f7c5b4427229bc0c8"
+ hash: "93cf31eabb454ec536c638a506be0648"
}
Frame {
msec: 448
- hash: "3f62f032239d412d3637198f5e3e83d6"
+ hash: "1ac8c393f084aa1894c26610b7f40ea6"
}
Frame {
msec: 464
- hash: "06d8d8a1a41893d4e27725948a75caf4"
+ hash: "f04e84ad3579d6334077abe73101d206"
}
Frame {
msec: 480
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
+ hash: "ff0928dfd16b2da9811a172c19817a97"
}
Frame {
msec: 496
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
+ hash: "7383209c80b403b93da3264eadbc047f"
}
Frame {
msec: 512
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
+ hash: "bc747167dfb3388ac63e9e68a86b9a03"
}
Frame {
msec: 528
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
+ hash: "ae48da4a66f93c806725ce749700aac8"
}
Frame {
msec: 544
- hash: "3152e5f29015ece423fbdd11a2b382b8"
+ hash: "956429472da133324c970774f77784f5"
}
Frame {
msec: 560
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
+ hash: "ec0aea8dc8c269d1f0aee5817347ac55"
}
Frame {
msec: 576
- hash: "a40014d842471784e1222eb205395f6f"
+ hash: "81d2fc6727dc7449d1a87b4abea9b704"
}
Frame {
msec: 592
- hash: "18c2f321a149e38b258ac264d40c2376"
+ hash: "80ebac4d923f67fb8dba3d133ce657ba"
}
Frame {
msec: 608
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
+ hash: "5359f5e45e5467c62c2d9521c8199c48"
}
Frame {
msec: 624
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
+ hash: "08f55088cdce741c67539f73291e53ab"
}
Frame {
msec: 640
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
+ hash: "97f7a2175dcf9ac2581a92d614d72f88"
}
Frame {
msec: 656
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
+ hash: "985868869ef2c332da379460a2f3a71b"
}
Frame {
msec: 672
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
+ hash: "e91bb914c1eb63cd4269b30a220a128a"
}
Frame {
msec: 688
- hash: "60f158382f75103c78e2b9b408e0fe65"
+ hash: "84c94704c16e246df1048f958cc8cefb"
}
Frame {
msec: 704
- hash: "4e60300cfab8634e04dcd1b556251d31"
+ hash: "99de44f74f8e1f79652ab46afb4bb59e"
}
Frame {
msec: 720
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
+ hash: "a1bd4e995365e79389dba80f9e3b7af8"
}
Frame {
msec: 736
- hash: "b74521d6ac531414aeeca0fb28379d11"
+ hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
}
Frame {
msec: 752
- hash: "a6f17da2dd581bdc249ff62f833dc025"
+ hash: "11673a112566a64aca3c7010b9cc9c4d"
}
Frame {
msec: 768
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
+ hash: "5b027815ea3c1ea54e1a02c798c468db"
}
Frame {
msec: 784
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
+ hash: "73c5f23f51797a33f4d2898738e6356e"
}
Frame {
msec: 800
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
+ hash: "fb17df681d99d5de05f6329bba697ea5"
}
Frame {
msec: 816
- hash: "c7eb7837dce71c914186326216214eeb"
+ hash: "0b1a741975e3d9ef8f5e78f371c89441"
}
Frame {
msec: 832
- hash: "0cba07ca38c7f0483244832a42d9ac53"
+ hash: "a790f0e884ab85f7802dd094e4ef550f"
}
Frame {
msec: 848
- hash: "93cf31eabb454ec536c638a506be0648"
+ hash: "b12faa76c07adc21634cd8f8cb8436ae"
}
Frame {
msec: 864
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
+ hash: "f57727419bb51fb1e589b960ddeb20ae"
}
Frame {
msec: 880
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
+ hash: "8172e076b05d95248d89e815fde820ef"
}
Frame {
msec: 896
- hash: "8861bf848da5c96b35addff736b01520"
+ hash: "74c1e71378b502bc1b732a55806a10f1"
}
Frame {
msec: 912
- hash: "f04e84ad3579d6334077abe73101d206"
+ hash: "a67e9a0f55512fb1c55f13c6b483923b"
}
Frame {
msec: 928
- hash: "eac4600372f0fdfadee88896ac915a48"
+ hash: "13ca95adab171d9fad9ee8b75d0226bc"
}
Frame {
msec: 944
- hash: "ff0928dfd16b2da9811a172c19817a97"
+ hash: "7aa0cbf73f7999be7cde4ec739efbc33"
}
Frame {
msec: 960
@@ -246,239 +246,239 @@ VisualTest {
}
Frame {
msec: 976
- hash: "7383209c80b403b93da3264eadbc047f"
+ hash: "29245946cbd811fe6bf6b2b41cc13002"
}
Frame {
msec: 992
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
+ hash: "058c918e83bfdd665cd836566b53959b"
}
Frame {
msec: 1008
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
+ hash: "ed5d80c33dbf72624385b1cf43784626"
}
Frame {
msec: 1024
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
+ hash: "ed5d80c33dbf72624385b1cf43784626"
}
Frame {
msec: 1040
- hash: "ae48da4a66f93c806725ce749700aac8"
+ hash: "058c918e83bfdd665cd836566b53959b"
}
Frame {
msec: 1056
- hash: "c763f56728e17fc119539a4d45dfccc3"
+ hash: "29245946cbd811fe6bf6b2b41cc13002"
}
Frame {
msec: 1072
- hash: "956429472da133324c970774f77784f5"
+ hash: "d1ed4916cb1ecff60277d74369ff311b"
}
Frame {
msec: 1088
- hash: "a4ddb4956d71fd642d54757938100cf3"
+ hash: "7aa0cbf73f7999be7cde4ec739efbc33"
}
Frame {
msec: 1104
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
+ hash: "13ca95adab171d9fad9ee8b75d0226bc"
}
Frame {
msec: 1120
- hash: "68dae343cf324391ec6721cea14575f7"
+ hash: "a67e9a0f55512fb1c55f13c6b483923b"
}
Frame {
msec: 1136
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
+ hash: "74c1e71378b502bc1b732a55806a10f1"
}
Frame {
msec: 1152
- hash: "c3a1f12febc979150028737722d6d045"
+ hash: "8172e076b05d95248d89e815fde820ef"
}
Frame {
msec: 1168
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
+ hash: "f57727419bb51fb1e589b960ddeb20ae"
}
Frame {
msec: 1184
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
+ hash: "b12faa76c07adc21634cd8f8cb8436ae"
}
Frame {
msec: 1200
- hash: "5359f5e45e5467c62c2d9521c8199c48"
+ hash: "a790f0e884ab85f7802dd094e4ef550f"
}
Frame {
msec: 1216
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
+ hash: "0b1a741975e3d9ef8f5e78f371c89441"
}
Frame {
msec: 1232
- hash: "08f55088cdce741c67539f73291e53ab"
+ hash: "fb17df681d99d5de05f6329bba697ea5"
}
Frame {
msec: 1248
- hash: "93128906d054e44bfd126fc22bdc3102"
+ hash: "73c5f23f51797a33f4d2898738e6356e"
}
Frame {
msec: 1264
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
+ hash: "5b027815ea3c1ea54e1a02c798c468db"
}
Frame {
msec: 1280
- hash: "587cb6e05048579088e88e0180e3ad48"
+ hash: "11673a112566a64aca3c7010b9cc9c4d"
}
Frame {
msec: 1296
- hash: "985868869ef2c332da379460a2f3a71b"
+ hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
}
Frame {
msec: 1312
- hash: "94084ca4998fcda408f6987f52c34185"
+ hash: "a1bd4e995365e79389dba80f9e3b7af8"
}
Frame {
msec: 1328
- hash: "e91bb914c1eb63cd4269b30a220a128a"
+ hash: "99de44f74f8e1f79652ab46afb4bb59e"
}
Frame {
msec: 1344
- hash: "e880d93963c80e4fab5173554c9600fc"
+ hash: "84c94704c16e246df1048f958cc8cefb"
}
Frame {
msec: 1360
- hash: "84c94704c16e246df1048f958cc8cefb"
+ hash: "e91bb914c1eb63cd4269b30a220a128a"
}
Frame {
msec: 1376
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
+ hash: "985868869ef2c332da379460a2f3a71b"
}
Frame {
msec: 1392
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
+ hash: "97f7a2175dcf9ac2581a92d614d72f88"
}
Frame {
msec: 1408
- hash: "44072400ca3f0237d1aebae28a94becc"
+ hash: "08f55088cdce741c67539f73291e53ab"
}
Frame {
msec: 1424
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
+ hash: "5359f5e45e5467c62c2d9521c8199c48"
}
Frame {
msec: 1440
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
+ hash: "80ebac4d923f67fb8dba3d133ce657ba"
}
Frame {
msec: 1456
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
+ hash: "81d2fc6727dc7449d1a87b4abea9b704"
}
Frame {
msec: 1472
- hash: "826c7741ba0c51de407bb799e8f360b5"
+ hash: "ec0aea8dc8c269d1f0aee5817347ac55"
}
Frame {
msec: 1488
- hash: "11673a112566a64aca3c7010b9cc9c4d"
+ hash: "956429472da133324c970774f77784f5"
}
Frame {
msec: 1504
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
+ hash: "ae48da4a66f93c806725ce749700aac8"
}
Frame {
msec: 1520
- hash: "5b027815ea3c1ea54e1a02c798c468db"
+ hash: "bc747167dfb3388ac63e9e68a86b9a03"
}
Frame {
msec: 1536
- hash: "65c514c9e926affe1da0b4826d2754c7"
+ hash: "7383209c80b403b93da3264eadbc047f"
}
Frame {
msec: 1552
- hash: "73c5f23f51797a33f4d2898738e6356e"
+ hash: "ff0928dfd16b2da9811a172c19817a97"
}
Frame {
msec: 1568
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
+ hash: "f04e84ad3579d6334077abe73101d206"
}
Frame {
msec: 1584
- hash: "fb17df681d99d5de05f6329bba697ea5"
+ hash: "1ac8c393f084aa1894c26610b7f40ea6"
}
Frame {
msec: 1600
- hash: "1bf7a98884b506b38326f59f85a53f41"
+ hash: "93cf31eabb454ec536c638a506be0648"
}
Frame {
msec: 1616
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
+ hash: "c7eb7837dce71c914186326216214eeb"
}
Frame {
msec: 1632
- hash: "a6937ee49648ed0cb409063bf1da3b87"
+ hash: "1ea07ee309ce2c52cbc36370b75a872f"
}
Frame {
msec: 1648
- hash: "a790f0e884ab85f7802dd094e4ef550f"
+ hash: "a6f17da2dd581bdc249ff62f833dc025"
}
Frame {
msec: 1664
- hash: "3b644aac161f0a75bfb64f5075373190"
+ hash: "6a521f952e05d91b86ad78fd6f5de4f9"
}
Frame {
msec: 1680
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
+ hash: "60f158382f75103c78e2b9b408e0fe65"
}
Frame {
msec: 1696
- hash: "3fb20f9dbd40b4729235e13af9643afc"
+ hash: "554e1d360463871e7c05cfe6f8abe1dd"
}
Frame {
msec: 1712
- hash: "f57727419bb51fb1e589b960ddeb20ae"
+ hash: "19d05a96f3ae7388e854bbf1075b51c1"
}
Frame {
msec: 1728
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
+ hash: "18c2f321a149e38b258ac264d40c2376"
}
Frame {
msec: 1744
- hash: "8172e076b05d95248d89e815fde820ef"
+ hash: "f1a7a4a67a21f5025294af4bea3f8998"
}
Frame {
msec: 1760
- hash: "a88d6fc324ef48aa52c642a1662ec679"
+ hash: "2a7bed775824968e318c3d40fbc5b1c2"
}
Frame {
msec: 1776
- hash: "74c1e71378b502bc1b732a55806a10f1"
+ hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
}
Frame {
msec: 1792
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
+ hash: "06d8d8a1a41893d4e27725948a75caf4"
}
Frame {
msec: 1808
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
+ hash: "01947e631c3db43f7c5b4427229bc0c8"
}
Frame {
msec: 1824
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
+ hash: "8c66a33d26eec2a1133f4362710a5fab"
}
Frame {
msec: 1840
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
+ hash: "c1936628aec13e08e9581dcd2c6d5717"
}
Frame {
msec: 1856
- hash: "affab9fb48c889a2680eb81458d400f9"
+ hash: "8419f1d75b14130730bcfec4e3a9b058"
}
Frame {
msec: 1872
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
+ hash: "406224b535b4425d2708df0083acdc8e"
}
Frame {
msec: 1888
- hash: "36c054064c9a76f4072492e55c70fb6c"
+ hash: "08b9be66e23c7b6f6f629c7470394601"
}
Frame {
msec: 1904
- hash: "d1ed4916cb1ecff60277d74369ff311b"
+ hash: "4d45d70f997c2c67166905c97a900d2e"
}
Frame {
msec: 1920
@@ -486,1606 +486,70 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 1952
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 1968
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 1984
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 2000
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 2016
- hash: "911591db1519ba264847f09868e38e0e"
- }
- Frame {
- msec: 2032
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 2048
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 2064
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 2080
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 2096
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 2112
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 2128
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 2144
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 2160
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 2176
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 2192
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 2208
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 2224
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 2240
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 2256
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 2272
- hash: "a88d6fc324ef48aa52c642a1662ec679"
- }
- Frame {
- msec: 2288
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 2304
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 2320
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 2336
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 2352
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 2368
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 2384
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 2400
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 2416
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 2432
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 2448
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 2464
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 2480
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 2496
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 2512
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 2528
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 2544
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 2560
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 2576
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 2592
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 2608
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 2624
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 2640
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 2656
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 2672
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 2688
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 2704
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 2720
- hash: "94084ca4998fcda408f6987f52c34185"
- }
- Frame {
- msec: 2736
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 2752
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 2768
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 2784
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 2800
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 2816
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 2832
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 2848
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 2864
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 2880
- image: "animated.2.png"
- }
- Frame {
- msec: 2896
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 2912
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 2928
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 2944
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 2960
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 2976
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 2992
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 3008
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 3024
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 3040
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 3056
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 3072
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 3088
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 3104
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 3120
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 3136
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 3152
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 3168
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 3184
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 3200
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 3216
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 3232
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
- }
- Frame {
- msec: 3248
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 3264
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 3280
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 3296
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 3312
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 3328
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 3344
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 3360
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 3376
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 3392
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 3408
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 3424
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 3440
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 3456
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 3472
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 3488
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 3504
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 3520
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 3536
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 3552
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 3568
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 3584
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 3600
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 3616
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 3632
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 3648
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 3664
- hash: "c1936628aec13e08e9581dcd2c6d5717"
- }
- Frame {
- msec: 3680
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
- }
- Frame {
- msec: 3696
- hash: "8419f1d75b14130730bcfec4e3a9b058"
- }
- Frame {
- msec: 3712
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 3728
- hash: "406224b535b4425d2708df0083acdc8e"
- }
- Frame {
- msec: 3744
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 3760
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Frame {
- msec: 3776
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 3792
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 3808
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 3824
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 3840
- image: "animated.3.png"
- }
- Frame {
- msec: 3856
hash: "465ec993948f7b75aeb5759976f4620d"
}
Frame {
- msec: 3872
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 3888
+ msec: 1952
hash: "aacf9ae3c23d174a1c1cda493600e355"
}
Frame {
- msec: 3904
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 3920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4016
+ msec: 1968
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4032
+ msec: 1984
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4048
+ msec: 2000
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4064
+ msec: 2016
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4080
+ msec: 2032
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4096
+ msec: 2048
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4112
+ msec: 2064
hash: "aec13bcab337e55832b0a02fb5c6b526"
}
Frame {
- msec: 4128
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 4144
+ msec: 2080
hash: "aacf9ae3c23d174a1c1cda493600e355"
}
Frame {
- msec: 4160
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 4176
+ msec: 2096
hash: "465ec993948f7b75aeb5759976f4620d"
}
Frame {
- msec: 4192
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 4208
+ msec: 2112
hash: "b63e4d1686057828fd8781f1c33585f5"
}
Frame {
- msec: 4224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 4240
+ msec: 2128
hash: "4d45d70f997c2c67166905c97a900d2e"
}
Frame {
- msec: 4256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 4272
+ msec: 2144
hash: "08b9be66e23c7b6f6f629c7470394601"
}
Frame {
- msec: 4288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 4304
+ msec: 2160
hash: "406224b535b4425d2708df0083acdc8e"
}
Frame {
- msec: 4320
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 4336
+ msec: 2176
hash: "8419f1d75b14130730bcfec4e3a9b058"
}
Frame {
- msec: 4352
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
- }
- Frame {
- msec: 4368
- hash: "c1936628aec13e08e9581dcd2c6d5717"
- }
- Frame {
- msec: 4384
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 4400
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 4416
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 4432
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 4448
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 4464
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 4480
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 4496
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 4512
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 4528
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 4544
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 4560
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 4576
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 4592
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 4608
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 4624
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 4640
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 4656
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 4672
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 4688
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 4704
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 4720
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 4736
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 4752
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 4768
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 4784
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 4800
- image: "animated.4.png"
- }
- Frame {
- msec: 4816
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 4832
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 4848
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 4864
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 4880
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 4896
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 4912
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 4928
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 4944
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 4960
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 4976
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 4992
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 5008
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 5024
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 5040
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 5056
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 5072
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 5088
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 5104
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 5120
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 5136
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 5152
- hash: "c3a1f12febc979150028737722d6d045"
- }
- Frame {
- msec: 5168
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 5184
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 5200
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 5216
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 5232
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 5248
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 5264
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 5280
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 5296
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 5312
- hash: "94084ca4998fcda408f6987f52c34185"
- }
- Frame {
- msec: 5328
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 5344
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 5360
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 5376
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 5392
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 5408
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 5424
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 5440
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 5456
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 5472
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 5488
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 5504
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 5520
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 5536
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 5552
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 5568
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 5584
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 5600
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 5616
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 5632
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 5648
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 5664
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 5680
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 5696
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 5712
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 5728
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 5744
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 5760
- image: "animated.5.png"
- }
- Frame {
- msec: 5776
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 5792
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 5808
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 5824
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 5840
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 5856
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 5872
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 5888
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 5904
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 5920
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 5936
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 5952
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 5968
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 5984
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 6000
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 6016
- hash: "911591db1519ba264847f09868e38e0e"
- }
- Frame {
- msec: 6032
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 6048
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 6064
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 6080
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 6096
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 6112
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 6128
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 6144
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 6160
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 6176
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 6192
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 6208
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 6224
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 6240
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 6256
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 6272
- hash: "a88d6fc324ef48aa52c642a1662ec679"
- }
- Frame {
- msec: 6288
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 6304
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 6320
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 6336
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 6352
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 6368
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 6384
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 6400
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 6416
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 6432
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 6448
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 6464
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 6480
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 6496
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 6512
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 6528
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 6544
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 6560
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 6576
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 6592
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 6608
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 6624
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 6640
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 6656
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 6672
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 6688
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 6704
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 6720
- image: "animated.6.png"
- }
- Frame {
- msec: 6736
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 6752
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 6768
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 6784
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 6800
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 6816
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 6832
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 6848
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 6864
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 6880
- hash: "c3a1f12febc979150028737722d6d045"
- }
- Frame {
- msec: 6896
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 6912
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 6928
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 6944
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 6960
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 6976
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 6992
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 7008
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 7024
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 7040
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 7056
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 7072
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 7088
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 7104
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 7120
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 7136
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 7152
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 7168
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 7184
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 7200
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 7216
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 7232
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
- }
- Frame {
- msec: 7248
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 7264
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 7280
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 7296
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 7312
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 7328
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 7344
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 7360
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 7376
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 7392
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 7408
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 7424
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 7440
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 7456
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 7472
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 7488
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 7504
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 7520
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 7536
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 7552
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 7568
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 7584
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 7600
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 7616
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 7632
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 7648
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 7664
+ msec: 2192
hash: "c1936628aec13e08e9581dcd2c6d5717"
}
- Frame {
- msec: 7680
- image: "animated.7.png"
- }
- Frame {
- msec: 7696
- hash: "8419f1d75b14130730bcfec4e3a9b058"
- }
- Frame {
- msec: 7712
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 7728
- hash: "406224b535b4425d2708df0083acdc8e"
- }
- Frame {
- msec: 7744
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 7760
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Frame {
- msec: 7776
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 7792
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 7808
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 7824
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 7840
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 7856
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 7872
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 7888
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 7904
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 7920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8016
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8032
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8048
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8064
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8080
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8096
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8128
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 8144
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 8160
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 8176
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 8192
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 8208
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 8224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 8240
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 8256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 8272
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 8288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 8304
- hash: "406224b535b4425d2708df0083acdc8e"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
index bb9dfbb916..03d7082729 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
index 016902bdb0..f8b73392c5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
index a65493670f..2d29f359f6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
index cfd5517750..507d9ca7d9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
index 016902bdb0..16225229f8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
index 289af88601..92f108c27d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
@@ -6,309 +6,277 @@ VisualTest {
}
Frame {
msec: 16
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 32
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 48
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 64
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 80
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 96
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 112
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 128
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 144
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 160
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 176
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 192
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 208
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 224
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 240
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 256
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 272
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 288
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 304
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 320
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 336
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 352
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 368
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 384
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 400
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 416
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 432
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 448
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 464
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 480
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 496
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 512
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 528
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 544
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 560
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 576
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 592
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 608
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 624
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 640
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 656
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 672
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 688
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 704
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 720
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 447; y: 145
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 752
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 768
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 784
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 800
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 816
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 832
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 848
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 864
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 880
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 896
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 912
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 928
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 944
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 477; y: 171
+ x: 446; y: 145
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 960
- image: "flickable-horizontal.0.png"
+ msec: 784
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 473; y: 171
+ x: 440; y: 146
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 976
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ msec: 800
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 463; y: 171
+ x: 425; y: 151
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 992
- hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 157
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 1008
- hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ msec: 816
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 449; y: 171
+ x: 359; y: 169
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1024
- hash: "4f054038668f56cf3fc46dee08504b24"
+ msec: 832
+ hash: "90f94986ab44ab59618e9a5da17b8cc9"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 425; y: 172
+ x: 309; y: 181
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1040
- hash: "e6ae6e2a8e5fb7204ae1f559b5dc4a63"
+ msec: 848
+ hash: "0154a65f8693b98576101ac1c2fc8761"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 393; y: 172
+ x: 282; y: 187
modifiers: 0
sendToViewport: true
}
@@ -316,769 +284,1073 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 393; y: 172
+ x: 282; y: 187
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 864
+ hash: "792c1b5267f14c891dae2348a8188a92"
+ }
+ Frame {
+ msec: 880
+ hash: "15ce9e88d4ad2e698bf167d1432c0b8a"
+ }
+ Frame {
+ msec: 896
+ hash: "8f4109ef4c24d286d73f689565a0d056"
+ }
+ Frame {
+ msec: 912
+ hash: "f5728190bf5c94742686f063b4a4b09b"
+ }
+ Frame {
+ msec: 928
+ hash: "a38c7527a9a818b7bc25466b0e4939f9"
+ }
+ Frame {
+ msec: 944
+ hash: "ed3902455fc31a4e3232308b815a4daa"
+ }
+ Frame {
+ msec: 960
+ image: "flickable-horizontal.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "de5647af86a322921dcc68e81979a3cc"
+ }
+ Frame {
+ msec: 992
+ hash: "c32349580e3a9586cc1133c935607cf0"
+ }
+ Frame {
+ msec: 1008
+ hash: "cd2068492e346eb20d50aee69e3a3559"
+ }
+ Frame {
+ msec: 1024
+ hash: "f43a1a38894b8ffad009ba995d84b0ee"
+ }
+ Frame {
+ msec: 1040
+ hash: "2d5c4a73df2a054801571f1ce119e31f"
+ }
+ Frame {
msec: 1056
- hash: "3bfaaef12ca852421ad179d8598a306d"
+ hash: "b8825cc6bdca8102a655d797ea41b5b1"
}
Frame {
msec: 1072
- hash: "e00ff5e13a9a97bc11e041f89e4782f5"
+ hash: "3f0be15b85220743d004f2d54b6e137c"
}
Frame {
msec: 1088
- hash: "ae10ada837b21365936672e9a4b4b175"
+ hash: "4b0952d33149b44ffa0a06723a4116c7"
}
Frame {
msec: 1104
- hash: "63566d7f1707025c9ec37e398d0e69ef"
+ hash: "9056bda43259e92cfe56fdf394e2ca54"
}
Frame {
msec: 1120
- hash: "20e9d299cd867d680cf85f99e06cd200"
+ hash: "82ec9f09d2303e5b0b9c05b9a10a84db"
}
Frame {
msec: 1136
- hash: "4d3a19b3c50a20ba1d93a8bcd178a424"
+ hash: "751a9b3054c09d900364d7c9cac8bc2b"
}
Frame {
msec: 1152
- hash: "d373ab5240e438e8234ae05f935c1ef8"
+ hash: "17dfdfef20f9da7e8b6f16df974baea9"
}
Frame {
msec: 1168
- hash: "2f9c00aa1f8a8cc5d10e6c6a0baee366"
+ hash: "108e6d9a5a81df32823bfd7a90a000a7"
}
Frame {
msec: 1184
- hash: "0fd8203b0a33fd8243ecd878f04f9b42"
+ hash: "71dd0d55a3e837d3a8e4b4e318579ade"
}
Frame {
msec: 1200
- hash: "24a197df4209c7076d68031e5dd4fd9e"
+ hash: "8013cdb2615bca89134ea040409af509"
}
Frame {
msec: 1216
- hash: "9e4271eacdc875183e3c8e7a1eb098c2"
+ hash: "4b2826ad4c755690bd837994133f5fac"
}
Frame {
msec: 1232
- hash: "cdf7aac4ff7e5df806977eb38392f5bc"
+ hash: "52d0da7f138bd37ac587a448d6402aca"
}
Frame {
msec: 1248
- hash: "1ace4a1312cad6f173a04c388624a97f"
+ hash: "e634724c5bb294d338210845bf64d2cf"
}
Frame {
msec: 1264
- hash: "193d6d6838ac1d5ddb941fbb340ec506"
+ hash: "59bc5f0d057ee431f289806377f19213"
}
Frame {
msec: 1280
- hash: "ed82807a48f28610ba9bda0c7ab91ce4"
+ hash: "6ef2c5f7766c2cc77b30d636bfaa4422"
}
Frame {
msec: 1296
- hash: "e1168bb9a88a972decb0c537d86d7758"
+ hash: "578d056c3db094420dbaa51bd08ced20"
}
Frame {
msec: 1312
- hash: "828ba428b04826687c6ef19b72318924"
+ hash: "14c6f7a04a52caffefa07af556ccb262"
}
Frame {
msec: 1328
- hash: "7dae52c428253cf44045ffaabaadd2f4"
+ hash: "7cb63d56fec144d0509ce219fc6fe459"
}
Frame {
msec: 1344
- hash: "06e2a81e1a2421523642cfcf17ec22e4"
+ hash: "462dafa7f6427aecf6c28a5dcf5a10cc"
}
Frame {
msec: 1360
- hash: "283997835a54e80c0ab8a0321bd03ce7"
+ hash: "45360814f985ed780a443568a91fc170"
}
Frame {
msec: 1376
- hash: "6354f9379b7b25c8fabda4e5bc3cdf6a"
+ hash: "0d18ceb2436e4f7eb56a3443fab706e6"
}
Frame {
msec: 1392
- hash: "6bc87dfd21d59efd3397e3cfb0d00d25"
+ hash: "1d83f367ba9f7f1d4496208271e925ed"
}
Frame {
msec: 1408
- hash: "4f97fc9aa1f79a6b007a00459386b9ff"
+ hash: "fdbd00ee4c122aef779df42ea53f403a"
}
Frame {
msec: 1424
- hash: "2b5c711ede124c9e97d3ef83a3fdcc8b"
+ hash: "bedd1cb304efd4851813b39a746198a4"
}
Frame {
msec: 1440
- hash: "5a8cbd4ac3fcd920f2aea6e2cfa96467"
+ hash: "9aa7bed86efa9634466736f20ee0ab5b"
}
Frame {
msec: 1456
- hash: "5b32961cb36e519f5b1d50386e796d3e"
+ hash: "00fc8186a7ae44e10195a7b13defa0d2"
}
Frame {
msec: 1472
- hash: "c91f95cccd38cbd1a16ee65abffd40ab"
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
}
Frame {
msec: 1488
- hash: "25108050298d3ffc850113971bcf54da"
+ hash: "df074f8c210249e5ef652349479b6325"
}
Frame {
msec: 1504
- hash: "6a236881f2a1cb487ee1945c279e020b"
+ hash: "4f94020437e35cf44dd3576997990ab7"
}
Frame {
msec: 1520
- hash: "2df1824df1cf20022595f64d26adb4ad"
+ hash: "8ca6c3b4fa3be73ac35073356b680a35"
}
Frame {
msec: 1536
- hash: "4ca4a0a4b4fd9f9c4846adebcdc8fd67"
+ hash: "c25eee1c5791383ebc59974e7754eacb"
}
Frame {
msec: 1552
- hash: "1696ef0862ff4772f960d203c43fbddf"
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
}
Frame {
msec: 1568
- hash: "c5846835b8eb5d98c481ee5811344ea1"
+ hash: "23e1e607101fc7260a4ac841344f5fe0"
}
Frame {
msec: 1584
- hash: "fbcb044ee53302de573321b43f068e65"
+ hash: "2dcc7d187d8e0493e5766efbf09ef37c"
}
Frame {
msec: 1600
- hash: "d369e0a6c4a3e63102be29a7362ef9eb"
+ hash: "c1e5602753e80cf44d7b330140c6912e"
}
Frame {
msec: 1616
- hash: "e93131b881805d4aa44949c69f486821"
+ hash: "febaf72d01a3763461b4b7d2ddd7a23e"
}
Frame {
msec: 1632
- hash: "b7aeee9e5065f1d4656e451b542ecf6a"
+ hash: "071262b911b61576f451be25691a57cf"
}
Frame {
msec: 1648
- hash: "05521ca19960c070d5f3dd72c5ade0e4"
+ hash: "44705db9289fd8753b9d63e8bc963b38"
}
Frame {
msec: 1664
- hash: "2c68cb3291cf1f892c8b8eb28b409e4d"
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
}
Frame {
msec: 1680
- hash: "5a0908aea91df2b9e65d222829c2b0ba"
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
}
Frame {
msec: 1696
- hash: "0d4ff147517eee8b3dbcd51a708b2aa7"
+ hash: "071262b911b61576f451be25691a57cf"
}
Frame {
msec: 1712
- hash: "521e1075de1de89c6e25f469d2728ab7"
+ hash: "a00aa90e894b48203b0446ca287ee712"
}
Frame {
msec: 1728
- hash: "c543447f98ae608058c6c02c8c8665e6"
+ hash: "26c9ca53ee4b084c6595ad65bf4880df"
}
Frame {
msec: 1744
- hash: "ac259db754b7dfb8cce8548527c72e4b"
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
}
Frame {
msec: 1760
- hash: "bc5b68d5ecfb583ae41001e326b7aa9b"
+ hash: "ffedee7bf2d8099e361b8b1706b03f88"
}
Frame {
msec: 1776
- hash: "e08051cb1ab2d8f979a52dc86411f78f"
+ hash: "1778ef1629ce977015b641448b46634f"
}
Frame {
msec: 1792
- hash: "b1746ad9563359f0d70a1aaee62e9bd8"
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
}
Frame {
msec: 1808
- hash: "5d6bc33ff2857fb8db582362bf7c19c7"
+ hash: "99e843ec69b79b79b0792e0a2f28cd1b"
}
Frame {
msec: 1824
- hash: "83f2c3a7124f9be4dbe883a27ca7df8e"
+ hash: "8b3ebca70b50a6a93823e015ea80f0f9"
}
Frame {
msec: 1840
- hash: "189f7cfb5ede1f8380b1a05b7e3d942e"
+ hash: "8eaa7f076064ce55051237b04861e408"
}
Frame {
msec: 1856
- hash: "07b1a4e5ca156e6aa1f3e76b825807ce"
+ hash: "6acc0ca5e5808d911287edfa78c8ac02"
}
Frame {
msec: 1872
- hash: "48b25f0acfe6eb3bc2cb9eb16e6595d0"
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 91; y: 208
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 209
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1888
- hash: "15ae05f5ed098021073c4593587949ea"
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 99; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1904
- hash: "b300f2c75f4aebcf84ed37ad424ca9fa"
+ hash: "d2dece405f5f6ed1de2acb6615a931de"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1920
image: "flickable-horizontal.1.png"
}
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 198; y: 216
+ modifiers: 0
+ sendToViewport: true
+ }
Frame {
msec: 1936
- hash: "7d8ea492fb1c664502e95e085896c569"
+ hash: "45ea16bca2c9ae07cb7dead1e24f6ed0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 229; y: 218
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 220
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1952
- hash: "7513b077e073d78b387309b56e1fd44c"
+ hash: "c10c8b0c94f899414d8b3ef0b7c97646"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1968
- hash: "ed1ac5cf6d4b081983a8e16258f431bf"
+ hash: "807aff4e6c96a9d0de7fa55e233446b1"
}
Frame {
msec: 1984
- hash: "fbb31f23ba6e5d02011363abfb4b3f18"
+ hash: "dbd02848cefacbb26f4bcb7d8f073d6c"
}
Frame {
msec: 2000
- hash: "6f01df424b38036b9921b4ee1491a1c1"
+ hash: "9a60608d8ea1b39fa2d3851873f2f08e"
}
Frame {
msec: 2016
- hash: "11f706dfacbec5c0be0c2f3c5442f717"
+ hash: "e7b3e3a40281f63889808211d6746374"
}
Frame {
msec: 2032
- hash: "0a70348986f4987f43db3e55af63fca5"
+ hash: "188c225c46ec00105df230bfeea09974"
}
Frame {
msec: 2048
- hash: "6f8b7aaad846f83c6349836d7af34662"
+ hash: "e2e977b42e91d8c5dee57fd8245692eb"
}
Frame {
msec: 2064
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "ca2f12fb173c405f95e608858ab982ad"
}
Frame {
msec: 2080
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "fa86ee5f25fa425cf2569c8ef570b9d8"
}
Frame {
msec: 2096
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "9b74656866fb8c7394bbbecec6414aca"
}
Frame {
msec: 2112
- hash: "1c12d2c68223324f040b7a693cef2074"
+ hash: "87147326d1baab174c0f9a5ccdc2cb84"
}
Frame {
msec: 2128
- hash: "0a70348986f4987f43db3e55af63fca5"
+ hash: "c0d00f98c71bf3f8e5954b45fbab95a8"
}
Frame {
msec: 2144
- hash: "bf4de7baf2730cdaf83887d50d577986"
+ hash: "c087d1d62e56e573b55c1d8599bba8a6"
}
Frame {
msec: 2160
- hash: "23ddb2c0793d7161a0d8c5b2a777dceb"
+ hash: "dd5a94c6febdee58e8f115cb75131aaa"
}
Frame {
msec: 2176
- hash: "7513b077e073d78b387309b56e1fd44c"
+ hash: "a7465d6137f865f512ce65ceb29533b4"
}
Frame {
msec: 2192
- hash: "83fa82362057466dff6a243a95d423db"
+ hash: "409086f6bb661aab8b548fea56d7e6b1"
}
Frame {
msec: 2208
- hash: "0e60b632ce511109cb01d2e5ff6945f8"
+ hash: "6a22911e0fb58df31271baa463ff599d"
}
Frame {
msec: 2224
- hash: "78c25194827c4243a16807491f798cdf"
+ hash: "c4f6dd30d5fdfcf91a8b29cf5c622423"
}
Frame {
msec: 2240
- hash: "4c9dc46794d4a32e654395bb9d78409e"
+ hash: "5a95b83f237c7243a198a43e9a587179"
}
Frame {
msec: 2256
- hash: "e996d4f3a0b3a4a4ed29ec23a1ad5615"
+ hash: "d79ed290efc6dbd976d574bf0b14a6a3"
}
Frame {
msec: 2272
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "a7bcb436e96d7c981852239462573495"
}
Frame {
msec: 2288
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "f63cc82e351daab503e316f8b516990f"
}
Frame {
msec: 2304
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "4ea63cd25a1424042ffc60549a78563c"
}
Frame {
msec: 2320
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ef0fb776012575b3b0dbf6e5f4dee571"
}
Frame {
msec: 2336
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "e2508faec7737be2666d87ad715b5f74"
}
Frame {
msec: 2352
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
}
Frame {
msec: 2368
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "c122ce2e73cbfedcc99d649c21d91f9d"
}
Frame {
msec: 2384
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
}
Frame {
msec: 2400
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "d0808284e431da60f61d571c257a3011"
}
Frame {
msec: 2416
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "df90f19450bf4d9496aab987a89e3a02"
}
Frame {
msec: 2432
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "5640c1e64556b90e7fbd4448fa9db462"
}
Frame {
msec: 2448
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "6d9b5c2f7d0dedbbc444e69bb39fed08"
}
Frame {
msec: 2464
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "485c4a8049068cf73bf22db5fd3618be"
}
Frame {
msec: 2480
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "9e25da59c9e7e4cf7796902e8e2ff92a"
}
Frame {
msec: 2496
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "bd45e8f2442d7c1a1b16a762bc29e7cf"
}
Frame {
msec: 2512
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ec1013d23e581dbb39b1549d2e1b3b32"
}
Frame {
msec: 2528
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "1ea3c2fde8ee3a14406e027f2124d793"
}
Frame {
msec: 2544
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "3c3f31a05fb2f32538872c9fa158aaab"
}
Frame {
msec: 2560
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "05a84d9c55e634ec01edd2a63e13613b"
}
Frame {
msec: 2576
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "0f7ccd2da58e2e73b0ab18bb681dafd5"
}
Frame {
msec: 2592
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "e481ff78029f8bc4bf7c697db6824f6a"
}
Frame {
msec: 2608
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "efb92b8b7a90acabeb4a8d5cae52fe3c"
}
Frame {
msec: 2624
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "4728dd0fac4edf40cfd5ef5a422b4ed9"
}
Frame {
msec: 2640
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "27641dcd772c979ae22d12bfbadbb67f"
}
Frame {
msec: 2656
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "26268714105bc4832d336a38a859fc50"
}
Frame {
msec: 2672
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "caf0d351d3b6914ca52853a30643ea48"
}
Frame {
msec: 2688
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "319824b1143925162f04aaddcfaa65d9"
}
Frame {
msec: 2704
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "73aa36815f34bf5e005000e7da38555e"
}
Frame {
msec: 2720
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "73aa36815f34bf5e005000e7da38555e"
}
Frame {
msec: 2736
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "319824b1143925162f04aaddcfaa65d9"
}
Frame {
msec: 2752
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "caf0d351d3b6914ca52853a30643ea48"
}
Frame {
msec: 2768
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 152; y: 189
- modifiers: 0
- sendToViewport: true
+ hash: "c87ba4dda0a5c931d0c7ae74a0fb2896"
}
Frame {
msec: 2784
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ab551561ad8a3937558afc080b3e6130"
}
Frame {
msec: 2800
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "474d8b566b9e4ef7dc125a8df30ccbb1"
}
Frame {
msec: 2816
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 190
- modifiers: 0
- sendToViewport: true
+ hash: "cc7dfbcfafa12d40210a4d5fa7f60862"
}
Frame {
msec: 2832
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 169; y: 191
- modifiers: 0
- sendToViewport: true
+ hash: "3c3f31a05fb2f32538872c9fa158aaab"
}
Frame {
msec: 2848
- hash: "edd015434d7ead96c03a51a2b1c9e527"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 192
- modifiers: 0
- sendToViewport: true
+ hash: "9705c0dd30c3f381084ec29242bebb2f"
}
Frame {
msec: 2864
- hash: "ea0eda505daea4171e27aac358aa6a4a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 192
- modifiers: 0
- sendToViewport: true
+ hash: "917579854722d6e6711811e10cbe229f"
}
Frame {
msec: 2880
image: "flickable-horizontal.2.png"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 331; y: 192
- modifiers: 0
- sendToViewport: true
- }
Frame {
msec: 2896
- hash: "34f70dfe1c226e63300112aa9a4a6968"
+ hash: "e2166fe87d04be70a9b1d4c8d1002b49"
}
Frame {
msec: 2912
- hash: "34f70dfe1c226e63300112aa9a4a6968"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 395; y: 194
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 395; y: 194
- modifiers: 0
- sendToViewport: true
+ hash: "5640c1e64556b90e7fbd4448fa9db462"
}
Frame {
msec: 2928
- hash: "dd61e0ae58d7a344908a10bb97cfcb39"
+ hash: "88cef15940302e2b8b43e73234fd7b9c"
}
Frame {
msec: 2944
- hash: "14a384c4bdd3e89808761d1e86976170"
+ hash: "041aecec2b0b0d59a56e1dd26b45cab1"
}
Frame {
msec: 2960
- hash: "0e82a4920a53239f117448cd0e0b27f2"
+ hash: "0d519463c713f3da46ecacd155e1a0f3"
}
Frame {
msec: 2976
- hash: "711e29bf6fbbeb7882064adb0619f4ac"
+ hash: "5dd0c855b97d298244fb599c9f781651"
}
Frame {
msec: 2992
- hash: "43307cbfe1688daf300fafc8df0082b8"
+ hash: "bfc51621e9bc95d2d46cec632a3fae12"
}
Frame {
msec: 3008
- hash: "46d788d926c03d85a68b66252e73ae90"
+ hash: "b05fb6e798ab3fed940b5ac4d88ca378"
}
Frame {
msec: 3024
- hash: "a0042935ad2d5557c906050d4a3581c9"
+ hash: "6bc9cc0d3b11ea91856296b0ec934a8b"
}
Frame {
msec: 3040
- hash: "b618a40490ca0aea310f08b452fa8c68"
+ hash: "f4e63f3af69dacbf2d1d719d4d03a266"
}
Frame {
msec: 3056
- hash: "e2aaad7f160a6d77dd788c76bb8cb8a7"
+ hash: "31ab08997eb86fab062a3128aecbccb5"
}
Frame {
msec: 3072
- hash: "ab5c27fa790c67a6678db0bbae1ae477"
+ hash: "90736b240ba1e634bd0ea86423908e16"
}
Frame {
msec: 3088
- hash: "b43ed7af838cd6edd32393fc56cf8fb1"
+ hash: "90736b240ba1e634bd0ea86423908e16"
}
Frame {
msec: 3104
- hash: "88ac50602c9f27fb5b882ad32d14ff46"
+ hash: "e74982557dc06aac572078840c7e889a"
}
Frame {
msec: 3120
- hash: "259af2e080ed93e16cb633fa940c7c08"
+ hash: "e74982557dc06aac572078840c7e889a"
}
Frame {
msec: 3136
- hash: "d05bec2351068d552b7bbbf47cf82fad"
+ hash: "ca30c14c7344d1711a35c707f8804f6e"
}
Frame {
msec: 3152
- hash: "5354b8e07f1ed22950687187ee7a0290"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3168
- hash: "3bfaaef12ca852421ad179d8598a306d"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3184
- hash: "40d3a77fce7a9a9ca7ae6023fc4cfc10"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3200
- hash: "5837c0122aa6b28518f1b7043ead99a9"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 412; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3216
- hash: "9514d8530275e4642810ac441e8de353"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 3232
- hash: "3b720882f52340549d8e1b9659443461"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 3248
- hash: "4de5b95c8f4949a4f1ee9a119940e80a"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 408; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3264
- hash: "a35097c00483e0b481222e4ad220c7a4"
+ hash: "10a89da9887cb4bbd812c090a8a56797"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 403; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3280
- hash: "82ac348a63a4e358a877a2e45d48e2b1"
+ hash: "1991cbb0fb053937f922731d5716032c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 398; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3296
- hash: "1322108409d1fa87d128f0c44c81ab4b"
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 391; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3312
- hash: "f6b030effcca891ab20073f106b22d73"
+ hash: "0fbfe1e0d7fb54450188398aa40690cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 383; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3328
- hash: "a7ccd998ac2ff2777d9423d704ddef48"
+ hash: "cb62e60296046c73d301d7186e14faed"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 369; y: 213
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3344
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "909cbd1292476584554e22232cb43639"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 352; y: 211
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3360
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "e63b7e502dfb2834c06a969b683b9bd3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3376
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "4ea63cd25a1424042ffc60549a78563c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 314; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3392
- hash: "82ef6700a513e39508fb6de5ef07f1e7"
+ hash: "77e39d2d4bfcacecdae4f014e4506d71"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 300; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3408
- hash: "9e4c4d479bc0b1a61566eae12416bea6"
+ hash: "db576eca8bad67cb8b994f12fc448969"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 288; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3424
- hash: "f6b030effcca891ab20073f106b22d73"
+ hash: "efeb3f616da9d78505c3c82fc34ee31c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 278; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3440
- hash: "8968acd022a9ba6fcc3ea52bdd7268c4"
+ hash: "e4f8bb02f8ac6bc40e1801cc8f360078"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3456
- hash: "de8f1a1fd680af475173d5f81e85b26c"
+ hash: "82118ef71809e3867717232c4d9c5518"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 252; y: 208
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3472
- hash: "82e8c0c7cb7c2b1e8d7a5fc019533e6b"
+ hash: "5363451c696f6c6eb792b23d086243d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 238; y: 208
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3488
- hash: "f820d250252cd910af97e5c9be181457"
+ hash: "fe6afe8ae8a7c216a1cffc5515f273d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 227; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3504
- hash: "a40558c1fbf328d3c891b473b2454020"
+ hash: "9b165741d86c70380c15e15cff3fabb6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3520
- hash: "0ef9e64bad67670102e1e4d9ef0e96f3"
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 222; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3536
- hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3552
- hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3568
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3584
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3600
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3616
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3632
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 232; y: 204
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3648
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "acf538fce5f1b90b83474d9898b7cdd7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 246; y: 203
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3664
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "5a0ee016b8732fbc36064e8a35d91215"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 265; y: 203
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3680
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8fd06a14c1de175813845ce8f07db6ec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 292; y: 201
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3696
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "26b0ff6ffda0725e0800f7ea3af510ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 310; y: 201
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3712
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "80443f134511be0356a687c9b542b3e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 321; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3728
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "3eeb98a829d29b3dc52f3d145ac49d58"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 323; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3744
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f4d43069b16f41a30e5549aae911d4cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3760
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3776
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
}
Frame {
msec: 3792
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1520f54b6c8606b9e8372c5c06180453"
}
Frame {
msec: 3808
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "0fcf5e2ce47348cbb5bb485f101fe5ac"
}
Frame {
msec: 3824
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "2eb070e69de07c89830543e0475fc110"
}
Frame {
msec: 3840
@@ -1086,114 +1358,218 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "90f94986ab44ab59618e9a5da17b8cc9"
}
Frame {
msec: 3872
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "cc969b2c64839ca6d3b5069c0ed938d0"
}
Frame {
msec: 3888
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1f819e18d1297a1c7eeebb7b040bdef8"
}
Frame {
msec: 3904
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "3643b99afbd8af0953cb39b2c8c04b9f"
}
Frame {
msec: 3920
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "713fd2e2fa38ab27604cb9cae59f1777"
}
Frame {
msec: 3936
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "e2508faec7737be2666d87ad715b5f74"
}
Frame {
msec: 3952
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "fc33b1c7479caeff676ffd885a18d618"
}
Frame {
msec: 3968
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "aca01143db4f870a56bb7546e84cbc5e"
}
Frame {
msec: 3984
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "442b58c39fd3745c61a1eb5043fcbb53"
}
Frame {
msec: 4000
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "7983d7183cc11d6819fa0a006c2d67b4"
}
Frame {
msec: 4016
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
}
Frame {
msec: 4032
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "43f528c81ccfa5b9921dfa3564a24c68"
}
Frame {
msec: 4048
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "dfe04ff0b3ccf205bb38beeab58a4411"
}
Frame {
msec: 4064
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "32ff30b50b500e9feb51e8eef205783c"
}
Frame {
msec: 4080
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "7d83ab4c336b05bcf2cde4e7d8031f6c"
}
Frame {
msec: 4096
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
}
Frame {
msec: 4112
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "02eec604d0c00965aae4ac61b91bdc22"
}
Frame {
msec: 4128
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
}
Frame {
msec: 4144
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "bac10d8f94a39573313b3b8b2f871c49"
}
Frame {
msec: 4160
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
+ hash: "e5944c5dc6dec8f0c28b7ec3cd58723d"
}
Frame {
msec: 4176
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1991cbb0fb053937f922731d5716032c"
}
Frame {
msec: 4192
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "50d6538bcaffc343f6626635a3e5899c"
}
Frame {
msec: 4208
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f3613f57cdb9ed38d8e3fa636962aa99"
}
Frame {
msec: 4224
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "10a89da9887cb4bbd812c090a8a56797"
}
Frame {
msec: 4240
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "89ba74d46970ad2edff701475c059ec8"
}
Frame {
msec: 4256
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4272
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4288
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
+ }
+ Frame {
+ msec: 4304
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4320
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4336
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4352
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4368
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4384
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4400
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4416
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4432
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4448
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4464
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4480
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4496
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4512
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4528
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4544
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4560
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4576
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4592
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4608
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4624
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4640
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4656
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4672
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4688
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4704
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
index 18fef53434..67f2de8bce 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
index 18fef53434..6ab0a15433 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
index b352c68c1b..d5258582cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
index ce7ee68dac..d5258582cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
index d8cdacfa4c..d5258582cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
index 0c2fa7b064..167703b9cc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png
deleted file mode 100644
index e9b30282df..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png
deleted file mode 100644
index 2186a8b147..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png
deleted file mode 100644
index b4590af80b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png
deleted file mode 100644
index fe29f19702..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png
deleted file mode 100644
index fe29f19702..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png
deleted file mode 100644
index 4f8587fa9b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
index 0a7cc039fa..9dd9ae84cc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png
deleted file mode 100644
index 4f8587fa9b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png
deleted file mode 100644
index c0b0bdfae5..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png
deleted file mode 100644
index 4168c3b54f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png
deleted file mode 100644
index 18fef53434..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png
+++ /dev/null
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
index fc6669d666..d5258582cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
index c0b0bdfae5..d5258582cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
index 2ffa96e05b..c066392fca 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
index f550b89209..e7accc7edd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
index f550b89209..f282709ab3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
index f550b89209..f282709ab3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
index f550b89209..593cf12c62 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
index a5ca4511ed..86fd3ca432 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
@@ -6,239 +6,343 @@ VisualTest {
}
Frame {
msec: 16
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 32
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 48
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 64
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 80
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 96
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 112
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 128
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 144
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 160
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 176
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 192
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 208
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 224
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 240
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 256
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 272
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 288
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 304
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 320
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 336
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 352
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 368
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 384
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 400
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 416
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 432
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 448
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 464
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 480
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 496
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 512
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 528
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 544
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 560
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 576
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 592
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 608
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 624
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 640
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 656
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 143; y: 471
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 672
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Frame {
msec: 688
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 470
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 704
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 469
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 467
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 720
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 463
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 146; y: 453
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 148; y: 433
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 148; y: 410
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "26a71f2ecae39fb2f61ab13ad4fe2796"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 148; y: 365
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 768
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5aedca385a68ed5f6281c48a57bb94e5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 148; y: 340
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 146; y: 319
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 784
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4ee9f528fecf850db3be24a26241c2c5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 300
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 144; y: 300
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bc83cb2708fba7bae035bc5da984fc71"
}
Frame {
msec: 816
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1d0ca08757375ac51024b83c0d224474"
}
Frame {
msec: 832
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "ee09f63ce3b3ead641ba4a4853772d41"
}
Frame {
msec: 848
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5e944bc5723d75fa859f7cb8d2b106e1"
}
Frame {
msec: 864
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "55ab5752ac0f4c93f5db6c92c519e5fb"
}
Frame {
msec: 880
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "026bd0f5e380d54b8688172e44ff9f08"
}
Frame {
msec: 896
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5812a751d877896801a4bc6d2dd3ecc8"
}
Frame {
msec: 912
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2e6fd08a00480c4a018311d7ef3d0f50"
}
Frame {
msec: 928
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "981ea7420d7ab189bb17fbfdde889471"
}
Frame {
msec: 944
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b3b737cb536205f6d0faef4f8b1f2e77"
}
Frame {
msec: 960
@@ -246,239 +350,311 @@ VisualTest {
}
Frame {
msec: 976
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4dafcfd5f5c5de1e83b9b7514ba5bde0"
}
Frame {
msec: 992
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "97104a677cb208783522af82f4690003"
}
Frame {
msec: 1008
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4b1f38c9fdd8f79f2c43273913438ddc"
}
Frame {
msec: 1024
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7f76a7579174d7f8ea0e0819f70aebf6"
}
Frame {
msec: 1040
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "97dd3be905cb37a7f178f27018ffe0f8"
}
Frame {
msec: 1056
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "19fa6136cba216000b3ce56f0b7c02e6"
}
Frame {
msec: 1072
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "e311e2cb0c6c6a844f092dcbf2b89a70"
}
Frame {
msec: 1088
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "a954794d643718ca538ce1347ee93899"
}
Frame {
msec: 1104
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1b97f96d6615d2455ab49262347d3ae7"
}
Frame {
msec: 1120
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4ce55b03ac0ab7d6301b8185e139667d"
}
Frame {
msec: 1136
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c0c37b06ccca61524ee3530a3e9707c6"
}
Frame {
msec: 1152
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9cddaaaa52819cbb2dd740c31ebed5e2"
}
Frame {
msec: 1168
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5c82f9c2c59d3b844c7eb1bef77c2722"
}
Frame {
msec: 1184
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "27b8e460849e8a06ad35e147f725d6df"
}
Frame {
msec: 1200
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "381c0e45f68daf697f80fb0cb87f028e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 121; y: 138
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1216
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f4b378fcf727ba85bcbf90c938dc9806"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 121; y: 141
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1232
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f4b378fcf727ba85bcbf90c938dc9806"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 121; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 121; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1248
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "852a7007d816d4cbec894f42549311f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 119; y: 185
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1264
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1ecc94e9c4aec0fa099816a7276f484a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 206
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 228
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1280
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "8d74af236c5b0023b0577235f74aad7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 128; y: 270
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 128; y: 270
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1296
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5485c7dd5e79c3823c0c9258470f8ca7"
}
Frame {
msec: 1312
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "a5fe758873729aeaf0a0c45fbdcc9b8f"
}
Frame {
msec: 1328
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7b134402e3268b66e3fc7e16624463ee"
}
Frame {
msec: 1344
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "146f339b009287872f22d27892c0e2e5"
}
Frame {
msec: 1360
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1436a3a4cd29690da39ead7d08f0c927"
}
Frame {
msec: 1376
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1cdabb8da157c35c1bcc5d5965d60e59"
}
Frame {
msec: 1392
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b05878876db2fbfde1cf4069f2dae3db"
}
Frame {
msec: 1408
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "6f8089424b163d79c7bcfe1715eca6ee"
}
Frame {
msec: 1424
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "91ffc70bd8a4e0f917d534131de849cf"
}
Frame {
msec: 1440
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5c03d99e1bf12f55de8fc36742d7a962"
}
Frame {
msec: 1456
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bc22d18311f322713a046763262b65f8"
}
Frame {
msec: 1472
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "59557c6874603decba5d383d3429005a"
}
Frame {
msec: 1488
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "e2df3b279fffcd89c90afbfdbf14b5b3"
}
Frame {
msec: 1504
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "a0aab7c147a30bb1765dec0f461b0ac1"
}
Frame {
msec: 1520
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f58d85bd7b3b772032bdb4e2ee8867d8"
}
Frame {
msec: 1536
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "05e6f6753a40075653b8b757ea626b2f"
}
Frame {
msec: 1552
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "6bfe88cb1d1a2264cc3fbf5143640507"
}
Frame {
msec: 1568
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "d54065930af312621115cc08d73fa541"
}
Frame {
msec: 1584
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c3666377c19e3b4034a90a36651020de"
}
Frame {
msec: 1600
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "92610ffcd541d943841bfea8bfcc2815"
}
Frame {
msec: 1616
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "87d1472f48148a1cc8ae16700227ed1e"
}
Frame {
msec: 1632
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4bb790042573e5de09938f1beb3d8e73"
}
Frame {
msec: 1648
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f0a748b20f8b0d7a9a5ef0c26e5d29d1"
}
Frame {
msec: 1664
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "66b7697170705d246dbb9c33e2edd85a"
}
Frame {
msec: 1680
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "22bc677976f53937c80f908d17a6b994"
}
Frame {
msec: 1696
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "8d35befcc7c03d9c7ff04d3aca966057"
}
Frame {
msec: 1712
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c27b4404612c57b2f360bc958acf8487"
}
Frame {
msec: 1728
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "79aaa8cd6081e771ceab5f6d638df7ad"
}
Frame {
msec: 1744
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "8959c740dfc85a79c056dd5057474161"
}
Frame {
msec: 1760
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4ba9cdf84e1d16d80bb57c670bdb85a9"
}
Frame {
msec: 1776
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f4f2b1847a8e3233e0e283853c942b60"
}
Frame {
msec: 1792
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "da3f760fdd2f45d66f3ef410101afbab"
}
Frame {
msec: 1808
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "17e5c56c3909da0da882bc0c8cf5c6d4"
}
Frame {
msec: 1824
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4e931b797bdbe7d397125a4f80f3d865"
}
Frame {
msec: 1840
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0fc21dde21d8c11e39f1f740dddf9439"
}
Frame {
msec: 1856
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3be4aa6c6f014b79a25bd04b1e44e6fd"
}
Frame {
msec: 1872
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9049c7636d06a2885a910440a5cb829d"
}
Frame {
msec: 1888
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9049c7636d06a2885a910440a5cb829d"
}
Frame {
msec: 1904
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9049c7636d06a2885a910440a5cb829d"
}
Frame {
msec: 1920
@@ -486,559 +662,839 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "222242141fadd2c27435ce93aa1c460d"
}
Frame {
msec: 1952
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "17e5c56c3909da0da882bc0c8cf5c6d4"
}
Frame {
msec: 1968
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2e7cc1dd1c62de751ff6734853fbadd7"
}
Frame {
msec: 1984
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5d234f4d69167a436ed6c95e909ae6e8"
}
Frame {
msec: 2000
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "dee8be671b7d430a3bf044ea67841f15"
}
Frame {
msec: 2016
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f75438b7deb18e36c2ce397291401f4d"
}
Frame {
msec: 2032
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "84d6efd807d94fb345ea640782dbfdcf"
}
Frame {
msec: 2048
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9dea3319774b70cb45eab5a71207c6bc"
}
Frame {
msec: 2064
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "706c98bffe5118d5f49a3eb371b121f6"
}
Frame {
msec: 2080
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4ca3b88d0af1ea0fae4a08ee2a8b7413"
}
Frame {
msec: 2096
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2959676d888680c3288f9226d8ad1059"
}
Frame {
msec: 2112
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "92a7dddbdf86f7fcd4f1d7631b7a3210"
}
Frame {
msec: 2128
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2de45cf2660f9ea4b54b3dfe3a2d6b8f"
}
Frame {
msec: 2144
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "aa17f9e53e23f3de7addd126bbe2b866"
}
Frame {
msec: 2160
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "36eb0221391fb7257c6eff73a1f491f3"
}
Frame {
msec: 2176
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "a4b644bf91108dbc9b21a1646dab0b37"
}
Frame {
msec: 2192
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f16544e0ad09c14dc8980203aec29591"
}
Frame {
msec: 2208
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1a93e2ed871ae094aff5eeaa07385a94"
}
Frame {
msec: 2224
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "977a2efa43d3be0340975ccbe6b0e8a9"
}
Frame {
msec: 2240
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0a8c81335816c747d320b3a147ee0350"
}
Frame {
msec: 2256
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0a8c81335816c747d320b3a147ee0350"
}
Frame {
msec: 2272
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0ab48b86c21be99f7caa3dda6d3a3e4d"
}
Frame {
msec: 2288
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
}
Frame {
msec: 2304
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
}
Frame {
msec: 2320
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
}
Frame {
msec: 2336
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
}
Frame {
msec: 2352
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Frame {
msec: 2368
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 143; y: 387
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Frame {
msec: 2384
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 386
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Frame {
msec: 2400
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 386
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 147; y: 380
+ x: 32; y: 574
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2416
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 372
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Frame {
msec: 2432
- hash: "90d9c65705a006741671657d00ab9dba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 346
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Frame {
msec: 2448
- hash: "8c6301fb7409a22fda85072d48e838c8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 328
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 304
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2464
- hash: "f5121fd6b0f20844d13cd8625a1a5047"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 276
- modifiers: 0
- sendToViewport: true
+ hash: "573a18633748447b94bb67fd8e1726a4"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 159; y: 276
+ x: 32; y: 574
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 2464
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Frame {
msec: 2480
- hash: "0d64b804b3b7e3ee052395f612d62bcf"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2496
- hash: "17b68429dfaf80bb3313e78bb01d6c4e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2512
- hash: "e86ea3b103a7d9f95f7484f3579a95b5"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2528
- hash: "884d3842f4aa2a38ff73511b143789a0"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2544
- hash: "646d1dd3003ccac06b7251e8ce1beb2f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2560
- hash: "ff66db77c56bf6830bc39211b3441e69"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2576
- hash: "8ff9c081cf823adaf6b17014fc582f12"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2592
- hash: "7b1563aed6f030003e04f19bb6e91a51"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2608
- hash: "3661b26f082e44cbc38e6033c28e99cb"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2624
- hash: "8e0f117dc1f2527d6b2b3f0c849fbda1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2640
- hash: "5a13b0045bc132ec6c917a6d7ddf9c7a"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2656
- hash: "06f332d287ed14b29dd0a252d59565a2"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2672
- hash: "7b1512aabac1fb17ecc8e0c771e2477f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2688
- hash: "22b62a7b42df6bbafad76d99001616c7"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2704
- hash: "0f6588fc79fa06097b2ba9bf6b1d6d14"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2720
- hash: "c7849941c7572b3581a7eb9423838d90"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2736
- hash: "8ddd8e9dc33698ecca6e19f2318e1c2e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2752
- hash: "1606eb49c73e60445d9eca11e23a33f9"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2768
- hash: "6a7e58d27492742bf3d853ee37144dae"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 123; y: 264
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2784
- hash: "a55ba5b7ccdabd39385c6cb32e8e1b26"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
}
Frame {
msec: 2800
- hash: "afe5705e8ebc240babee4a88a4321189"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 123; y: 265
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2816
- hash: "807d92ab4b8d2295f3abfd3508258dd5"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 123; y: 266
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 269
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2832
- hash: "ae95ed79eee246c74535d9ca97878ce6"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 275
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 125; y: 284
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2848
- hash: "c8cf5d07a06646552d5595603532b786"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 125; y: 293
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 127; y: 304
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2864
- hash: "45971fd130662a263fcd86513aee222d"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 129; y: 320
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 131; y: 337
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2880
image: "flickable-vertical.2.png"
}
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 136; y: 354
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 375
+ modifiers: 0
+ sendToViewport: true
+ }
Frame {
msec: 2896
- hash: "8e78a9098ebd02cc828b76609c58d6b9"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 392
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 149; y: 411
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2912
- hash: "7f4d7a1c8e0a5494bf7f37a0a165d02b"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 156; y: 451
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2928
- hash: "881ed825133259e731b71cf6251ed862"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 466
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 479
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2944
- hash: "8fb86c54b4e0280de18eb2d4f1c55e68"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 488
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 493
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2960
- hash: "58ad7494c0bddc0de86bfd041f45a5d3"
+ hash: "96fb3652bfcf0aac1e35a2e50532816f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 494
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 161; y: 494
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2976
- hash: "87489ba1390ee152a7de023e8ba25c72"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 2992
- hash: "b1f06b26110799e88837781cdf4688a7"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3008
- hash: "d23e94ef53ce3b8143a716028ab729f9"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3024
- hash: "1c5fdf8d85537836b698a50fcab58a4e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3040
- hash: "bd9c6ea06278efa4d491519734d0032f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3056
- hash: "b533e6543ca4efb34e187d540e4ed7e0"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3072
- hash: "65f4ff7328ce366671436512da44a094"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3088
- hash: "e7afcc4c29cd1868bcf1ebea1d19fca1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3104
- hash: "ddaf80f4b1d98b07fe4bf8282e13b2a8"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3120
- hash: "d4888df20b11e30a7d613a32e603cea5"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3136
- hash: "ac74be483173b08cb41b8d63e3e4d073"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3152
- hash: "35c65757fe27f68e35c438269c00ba53"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3168
- hash: "b8a28356b50362f2dabd0ab4a0d1d621"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3184
- hash: "71205ebfcce9e3a018fe2c30f7f3ee92"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 162; y: 474
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3200
- hash: "0ef526ebcc23342ba4b8dfa8ed41e7de"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 472
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 164; y: 468
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3216
- hash: "9caaec9ca80b5da75e5e1231635c2f37"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 464
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 460
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3232
- hash: "bb6b951e8c2252d873828e9ef1c9b625"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 450
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 438
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3248
- hash: "15faa58fbb91f80a8c1256e5627e7777"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 172; y: 426
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 409
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3264
- hash: "bf2d0f512ade00ee44adb6624573daf9"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 397
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 176; y: 383
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3280
- hash: "5af713203ef673d40c69b014dcaf242f"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 176; y: 367
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 176; y: 350
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3296
- hash: "970972470176fbd64208a3b25d4f5f65"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 335
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 172; y: 316
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3312
- hash: "135a4356d91e594ee2b71132ecf9a606"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 296
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 168; y: 279
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3328
- hash: "8a6364c0e033d517180ec287e61b3c9d"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 262
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 244
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3344
- hash: "71c7d7eddd49b77e8f96f3b7a6e8470f"
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 164; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 164; y: 222
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 164; y: 222
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3360
- hash: "59667814b3e1a2d832b895235a9cdaf6"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3376
- hash: "a324de5e8d115862b9908aba881df913"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3392
- hash: "300902de67507207465a74bf6404c1c4"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3408
- hash: "63f40e307d9f0c14bab111e833047ee1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3424
- hash: "53f54f5a4745043ef616ac21583416ef"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3440
- hash: "851e6eebe48034d3185674f6908932af"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3456
- hash: "06ef04a044394ab55fe2806a50db2abf"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3472
- hash: "88c82d8bb518b18a174f55c647395de1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3488
- hash: "e62b84c87e1d73028305b9038915c53d"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3504
- hash: "fdb38aa631cd6967585dd23e20f866a9"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3520
- hash: "edabcd9bee25b1abcabced3b0b3dff1e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3536
- hash: "6f0a2dc3151c018846b13fd2e11d0fab"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3552
- hash: "5101944e7867260ffdd3134436c6373a"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3568
- hash: "a04f231f840571734f8dab609b2f82fd"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3584
- hash: "87c22f82c659b405fd4e81640ce0b166"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3600
- hash: "2273564228baea48cac343a4f30d6a59"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3616
- hash: "8a4d1fc12743e6153c0f47e1fce9d55f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3632
- hash: "944cd812097868935a686211551ccd35"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3648
- hash: "a2f1a14510a1cfe3c2c45fa10b0442b4"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3664
- hash: "d754cc64c12ef8cc2db0ddf99381e88c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3680
- hash: "168487c8ca6f3463b3aa4433cfc99792"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3696
- hash: "67a82c1516b0d8d953c7055f07a9fdc7"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3712
- hash: "0df1592631b8cc1986f905a049b40bf0"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3728
- hash: "8677472d35e17d7bd5fe40f7841bb01d"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3744
- hash: "4472a8412e41377e0795d51706fb9180"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3760
- hash: "84533717ec1419617895f2ec646fb1c0"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3776
- hash: "ad50bd7708be94c6b8e63077e589ae48"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3792
- hash: "a37fb5d7cec3fbff8e12157c88e08833"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3808
- hash: "df1ca02b5bb76338ff24a561876f89f2"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3824
- hash: "df1ca02b5bb76338ff24a561876f89f2"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3840
@@ -1046,239 +1502,263 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "a37fb5d7cec3fbff8e12157c88e08833"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3872
- hash: "3c8a94d2e139a9e84eaa6bf522250756"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3888
- hash: "23647f577ee83bc500ca1078eea2be90"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3904
- hash: "c1a52221113c162e963a2a165b8d08a5"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3920
- hash: "993c57d4ed9026f8615c68ef5d8c5c16"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3936
- hash: "3d843eac108e047b6fe9ac21d8866fdd"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3952
- hash: "5be1fa7cb99fda017cd5cdcf91a18525"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3968
- hash: "c68ef5177f4568eb77c0f4135ba65e44"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 3984
- hash: "f047939a56a0ecee5deefcd3d2bf1710"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4000
- hash: "4af748f59c6a62156a228ae635ec2d9c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4016
- hash: "b69b045557a8eada80a24eb4caa7ea4e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4032
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4048
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4064
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4080
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4096
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4112
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4128
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4144
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4160
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4176
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4192
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4208
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4224
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4240
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4256
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4272
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 38; y: 583
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4288
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4304
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4320
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4336
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 38; y: 583
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4352
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4368
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4384
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4400
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4416
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4432
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4448
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4464
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4480
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4496
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4512
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4528
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4544
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4560
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4576
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4592
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4608
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4624
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4640
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4656
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4672
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4688
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4704
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4720
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4736
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4752
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4768
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4784
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 110; y: 578
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4800
@@ -1286,153 +1766,129 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4832
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 110; y: 578
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4848
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4864
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4880
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4896
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4912
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4928
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4944
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4960
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4976
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 4992
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5008
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5024
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5040
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5056
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5072
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5088
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5104
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5120
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5136
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 5152
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5168
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5184
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5200
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5216
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5232
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5248
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5264
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5280
- hash: "a76f069dfcb1af0794999c34507e190e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 173; y: 85
+ x: 123; y: 218
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5296
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
+ msec: 5168
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 173; y: 86
+ x: 123; y: 219
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5312
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
+ msec: 5184
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 173; y: 89
+ x: 124; y: 223
modifiers: 0
sendToViewport: true
}
@@ -1440,19 +1896,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 173; y: 101
+ x: 124; y: 230
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5328
- hash: "0031f6edee383e97a3a31fe4268ff778"
+ msec: 5200
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 175; y: 117
+ x: 126; y: 241
modifiers: 0
sendToViewport: true
}
@@ -1460,51 +1916,51 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 179; y: 137
+ x: 126; y: 257
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5344
- hash: "e594c62fe10165ae08e3dd8b33b9f584"
+ msec: 5216
+ hash: "43865bf07d3b0818bd0fd3388451f055"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 183; y: 159
+ x: 130; y: 300
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 5232
+ hash: "d7e49dfc8f9faef7d405451ae52691e0"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 183
+ x: 132; y: 325
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 5360
- hash: "dd61c97aafee69eb7c54a47dceea5810"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 207
+ x: 134; y: 349
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5376
- hash: "29d06473d4aac07c89041b4413ce421f"
+ msec: 5248
+ hash: "427d51731dac5e356c5ab82d272c0d5a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 227
+ x: 136; y: 372
modifiers: 0
sendToViewport: true
}
@@ -1512,19 +1968,31 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 185; y: 243
+ x: 138; y: 395
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5392
- hash: "7843b1bdb9efdbee0e6dd39ef8f1078a"
+ msec: 5264
+ hash: "9370cc84e32afc59c81c4d2dbf5fa690"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 253
+ x: 142; y: 433
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5280
+ hash: "984bd78f9f503e8a3ffac5bbe69fe3a9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 470
modifiers: 0
sendToViewport: true
}
@@ -1532,337 +2000,445 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 185; y: 253
+ x: 144; y: 470
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 5296
+ hash: "022106d1ecd8195923b6d79fb95d1135"
+ }
+ Frame {
+ msec: 5312
+ hash: "5b6bd34ae7e59923bb4b4c2e4e7a0bf3"
+ }
+ Frame {
+ msec: 5328
+ hash: "2f8a121667195d85cd05417a350dd35b"
+ }
+ Frame {
+ msec: 5344
+ hash: "d0f7fcb01dc6abc0ae29ca1ee45edf24"
+ }
+ Frame {
+ msec: 5360
+ hash: "9f3e5d23ea33bff4f05900d6faf7dbae"
+ }
+ Frame {
+ msec: 5376
+ hash: "535f40614a02fa3f627748a5c24b3a39"
+ }
+ Frame {
+ msec: 5392
+ hash: "138bc0c4dd08ffec0c79c4c7474ed318"
+ }
+ Frame {
msec: 5408
- hash: "f609350d3c3041998340c9a6ded9baec"
+ hash: "838f07195d00b19104bbbd93c7670dab"
}
Frame {
msec: 5424
- hash: "53b559ea9764ad466a0ffc1c55a596c2"
+ hash: "b7fb0944bf53ccc62effe159333449ff"
}
Frame {
msec: 5440
- hash: "8ac64c07cb29adff5d8510f956f3c35d"
+ hash: "56a21c9210074ef8a044019fa9375b14"
}
Frame {
msec: 5456
- hash: "cb7ab2e7af067f1493197731515462fa"
+ hash: "4ef80a5d73981ce1f1081fc578ea088a"
}
Frame {
msec: 5472
- hash: "a0509acbb96bb3ced08a7c968836bd69"
+ hash: "f3f9cf99ab436c1a2805c0859df9589e"
}
Frame {
msec: 5488
- hash: "e4c5e681a275b4eff49eed39a6b544d6"
+ hash: "0d88023fe7af39e409f7a12348d4e3d6"
}
Frame {
msec: 5504
- hash: "4403e91762ff703eb12dee1b47f4072c"
+ hash: "b4abf98d58fe490ceb7a62621292f8d9"
}
Frame {
msec: 5520
- hash: "9f548a31dea71208c9f465e37bafc589"
+ hash: "5c3247324b214b961ed40da985fb50a4"
}
Frame {
msec: 5536
- hash: "c86dd18e63508adfdbd5b3b891fd0d99"
+ hash: "41195a5c39ac1ecbd175e5663d23cdaa"
}
Frame {
msec: 5552
- hash: "b182070ff0c1b579a9fd16d39f950079"
+ hash: "028460cd5eecd50a12261e541f1776bf"
}
Frame {
msec: 5568
- hash: "4308c4d6346e20ed89026c0ec216ae89"
+ hash: "56763e343221db0a111bb91e72640911"
}
Frame {
msec: 5584
- hash: "2da84d83767e5ac1f7ce361bdcebe9c8"
+ hash: "a4b644bf91108dbc9b21a1646dab0b37"
}
Frame {
msec: 5600
- hash: "a3ce932ebf10147f79a183e44a6f6eb7"
+ hash: "c2d2d51f0147e78550f762ec84f7f338"
}
Frame {
msec: 5616
- hash: "f5907789e23150c8dd0858d7c5098907"
+ hash: "1a93e2ed871ae094aff5eeaa07385a94"
}
Frame {
msec: 5632
- hash: "98b76cfad574957f5b7633390c6788c8"
+ hash: "977a2efa43d3be0340975ccbe6b0e8a9"
}
Frame {
msec: 5648
- hash: "8c58d6511a7077cc386216a6227e8b52"
+ hash: "977a2efa43d3be0340975ccbe6b0e8a9"
}
Frame {
msec: 5664
- hash: "2ca5e16bfd83f933f32367aa49db0e1d"
+ hash: "0a8c81335816c747d320b3a147ee0350"
}
Frame {
msec: 5680
- hash: "ba387d0ab480eb9eaf6993c2ad168350"
+ hash: "0a8c81335816c747d320b3a147ee0350"
}
Frame {
msec: 5696
- hash: "ae9f3b3245ccf921967a178712566b55"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
}
Frame {
msec: 5712
- hash: "32cf742724558260447f61da03d5f321"
+ hash: "46e69596c809d4c7563d5d44ca62eb02"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 176; y: 412
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5728
- hash: "ad21273f37c1abac0719f532dd5530ac"
+ hash: "aebff194f1c84190623ebfc358503b5f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 177; y: 406
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 177; y: 395
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5744
- hash: "50e43629e0b8d0d651b9670241354cb1"
+ hash: "39f1cee1ad7ab2ab6601e2b67f5d83c7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 181; y: 367
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5760
image: "flickable-vertical.5.png"
}
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 183; y: 326
+ modifiers: 0
+ sendToViewport: true
+ }
Frame {
msec: 5776
- hash: "e4f0192406831c8e0abe1b561120b9c0"
+ hash: "02d9d0829c64b92e98b8093b38e6f848"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 183; y: 299
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 180; y: 276
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5792
- hash: "4c98e619b487d67d114ed0d7800f157e"
+ hash: "46f76f341787a80b9f9c16a5bc9f83c5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 175; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5808
- hash: "11ed6dc9464396eb790db236f3713164"
+ hash: "67c3225460673038d190169115622f02"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 147
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 167; y: 147
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5824
- hash: "908febb1e344d6972d6df611e82792bd"
+ hash: "2cb9abc32225ea9d39deb09da6119a94"
}
Frame {
msec: 5840
- hash: "03536bb4d6ff84bf75d9ec3574bb7361"
+ hash: "bf69fa4cd3f73e15f07394d290b801e6"
}
Frame {
msec: 5856
- hash: "f9946a44c2d4e91a947e6bda7415cf9b"
+ hash: "cf5f2524171ca121f4478c3c6d7dfd35"
}
Frame {
msec: 5872
- hash: "0e63e4b9dd6bc7d7b684cb461c6257bf"
+ hash: "d498a494fa489150bd324e18a1c14fe5"
}
Frame {
msec: 5888
- hash: "1ffe88b771bed2aa27aafe6853b67c7a"
+ hash: "459c2e8110f1c21b3f8d590e7c0355de"
}
Frame {
msec: 5904
- hash: "ff1b78113a710481273ecf01cc978a46"
+ hash: "1bde4841026fd6117b49d94d697b03fa"
}
Frame {
msec: 5920
- hash: "e381553fa74436ca4b0d166bdca78cf7"
+ hash: "84b025039284f616d69465ec8cc245b8"
}
Frame {
msec: 5936
- hash: "d9a6f9bfc011edb7da23091fe24e2717"
+ hash: "3652c4664895a0b6fbe06521a79c8bb9"
}
Frame {
msec: 5952
- hash: "bd137e8b15f5c485d10b83461dedc67f"
+ hash: "f817f6059b8cb3fc4a85c9c91df6c7a3"
}
Frame {
msec: 5968
- hash: "8f5b5e19845aa537790b683ef37c8626"
+ hash: "cb671ab3c3a9de0c17df2896e45beca9"
}
Frame {
msec: 5984
- hash: "5abbf0dccef8a3bb7b090a24d715a25f"
+ hash: "d9102b25f63ca9274057dad0ab2b6102"
}
Frame {
msec: 6000
- hash: "bf924dd11e226022c9c812b5c7e8229e"
+ hash: "b9df17ad73b7a5b018ab30c5c57afd02"
}
Frame {
msec: 6016
- hash: "c47b59ff7f3c4acfb296959f6eb14801"
+ hash: "664494b87407881a11b4732f0713f587"
}
Frame {
msec: 6032
- hash: "b5c0ac4514d44a651a4ab817646f1d88"
+ hash: "cac62fc442c064286b7e4a71a13b929c"
}
Frame {
msec: 6048
- hash: "86a9fba0e2ca761a4fb71e5edbf34cab"
+ hash: "989b4649dca89e227f552979af1c68f0"
}
Frame {
msec: 6064
- hash: "5bf43304399bdc979afd2580b922fd30"
+ hash: "80b4b11b3cbc684d920fa89c3345d8bc"
}
Frame {
msec: 6080
- hash: "3696756d6250f23b1122d314df08b936"
+ hash: "dcbd4e93e7ac0ef0e78c6a19cf3295f1"
}
Frame {
msec: 6096
- hash: "49c7b24b1655a1b5a9b4cc2187f7cc58"
+ hash: "33f3ddd9d7fa5a472465029d7a7263ae"
}
Frame {
msec: 6112
- hash: "a387dce727804fb4ca1c3378ba130d08"
+ hash: "fb5675d4870528b9c0591c5a80530b17"
}
Frame {
msec: 6128
- hash: "505150386afee9c5d89566c90778cf58"
+ hash: "e57dbe962c1ef45893e41559cee19d16"
}
Frame {
msec: 6144
- hash: "a00ecae0150a069d306127ed54c4921f"
+ hash: "a9081993871e0171e25159a078a5cdbc"
}
Frame {
msec: 6160
- hash: "e556bfca052e4d8922a4b85d6e94a22a"
+ hash: "cadc7f53518ba3f4cbe8e686b90fa5ab"
}
Frame {
msec: 6176
- hash: "ac710b4796de4d0b7d275c5fffcefe1f"
+ hash: "e9208a44f95ccc181bfc64e8785bd633"
}
Frame {
msec: 6192
- hash: "2f0475e842083c93b0fa0b8a8a33117a"
+ hash: "a69f2969122a547b1af195f581c272b8"
}
Frame {
msec: 6208
- hash: "6de0e820748df06e702a82f127d9f635"
+ hash: "eee0b7c2f01bcc57f141d9aa27f73da6"
}
Frame {
msec: 6224
- hash: "b3748d7a26ea8289e2faa9dd624b23a3"
+ hash: "f58ac16d11909563cf214b6c2baef0dc"
}
Frame {
msec: 6240
- hash: "52be51e9a5bf6e6d0c2e64e584a4bf11"
+ hash: "e373def5a0bcd30ea7f4acb539785e3c"
}
Frame {
msec: 6256
- hash: "9c4a08a51556d56f2809d27a1de0aae3"
+ hash: "0dce9f4bab793ea1d6e368cd6fb37047"
}
Frame {
msec: 6272
- hash: "4a151e94a39b68a47374cc45cb8969df"
+ hash: "4a4725f2546b08faffa3a543de578e59"
}
Frame {
msec: 6288
- hash: "a2c2926224103d6e0a679b891451f791"
+ hash: "ea36b5869634115182c365990518b993"
}
Frame {
msec: 6304
- hash: "c192adca5c3cf3741f6e7b33d53a722a"
+ hash: "45b102bd0c5ab42783b9e428cea202a4"
}
Frame {
msec: 6320
- hash: "8fa9d85c213243e0709e3e32f03cebd9"
+ hash: "0154e6010f3a8621a8f992bb7dcfd5b8"
}
Frame {
msec: 6336
- hash: "20f516aa2c4ebc239a283176d83ade6f"
+ hash: "035a8c7e9eece0f9ea4f5ad62658d7f9"
}
Frame {
msec: 6352
- hash: "ac8ace61348c5500dd6e2d1f3b4b174b"
+ hash: "fc1050cf971296a9200c548feee08d0a"
}
Frame {
msec: 6368
- hash: "39cc6b136e17283ddc65425150cec7be"
+ hash: "ef9c7f1228ac6825cce8ce0e9e7aaac5"
}
Frame {
msec: 6384
- hash: "b250cb3fd5a7ab5c76ae15d5a500a894"
+ hash: "70ef278074b1527aba16eca8c3811af5"
}
Frame {
msec: 6400
- hash: "f07e4f8b61c0ce514364e062867687a2"
+ hash: "08012939aca6381dedd838a7fd0be1a3"
}
Frame {
msec: 6416
- hash: "caed510a4edc2830f885f9a8ff98c072"
+ hash: "2c702b17a0ec2aac2928ad8bcc2e080b"
}
Frame {
msec: 6432
- hash: "2cfba2b8cd1cbc260edf390e17532afa"
+ hash: "e70e243e8ecc8e8f50ea4f0f4559c8c6"
}
Frame {
msec: 6448
- hash: "f1d705e01521261f22b89aeefb146c7a"
+ hash: "73013ff1a7f0c3040f3520f0581e4ce0"
}
Frame {
msec: 6464
- hash: "9508799a0e28e60a65925b7c10fa2874"
+ hash: "14cdd689ae9e5b15e212d9dab63ec946"
}
Frame {
msec: 6480
- hash: "accdad5176a0cdce92ed07a7ae818a13"
+ hash: "354d822bf252559211513e49e417a413"
}
Frame {
msec: 6496
- hash: "2748258d00cf2f0e5f94c94f97ed95ae"
+ hash: "77eb798efd1447eca75de12dc2c7a215"
}
Frame {
msec: 6512
- hash: "994897c0842947675e2e2df4021c1b5e"
+ hash: "08dc9068d21db7ff87d4d88eb1443aed"
}
Frame {
msec: 6528
- hash: "22936773b2fc5c555f14a8375da2a7a4"
+ hash: "baab3b98e70ca51d1cbd27d4a998380f"
}
Frame {
msec: 6544
- hash: "22936773b2fc5c555f14a8375da2a7a4"
+ hash: "baab3b98e70ca51d1cbd27d4a998380f"
}
Frame {
msec: 6560
- hash: "b58badc862e394bf5374554e019f90c0"
+ hash: "baab3b98e70ca51d1cbd27d4a998380f"
}
Frame {
msec: 6576
- hash: "b58badc862e394bf5374554e019f90c0"
+ hash: "84519c415186e5abd122a1f39e26265b"
}
Frame {
msec: 6592
- hash: "b58badc862e394bf5374554e019f90c0"
+ hash: "df63754934af656e08e93ce4fa69c19e"
}
Frame {
msec: 6608
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "34439eb26069feabee5ba97bfd1c2cb3"
}
Frame {
msec: 6624
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "46534a7da31ac76c52036e51c63db72e"
}
Frame {
msec: 6640
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "cf8e86112be37fc94687aa8bd437e1a2"
}
Frame {
msec: 6656
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "f93ba6420ab0ef719aa10c6aae71c878"
}
Frame {
msec: 6672
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "22f991814552e7e3e2db8fea0abe9d6c"
}
Frame {
msec: 6688
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "7d2773bec8310d92166ab7184741ace4"
}
Frame {
msec: 6704
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "f18aace5e0d4ca8a385a57682d82e43f"
}
Frame {
msec: 6720
@@ -1870,343 +2446,255 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "7f445e22f19808ca71416cadd497f305"
}
Frame {
msec: 6752
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "d6ef83bec490d2fb0f4d640f8c43f694"
}
Frame {
msec: 6768
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 31; y: 575
- modifiers: 0
- sendToViewport: true
+ hash: "fbd19c34e68a21c8924f83c4d0cbcb79"
}
Frame {
msec: 6784
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "179abedb6eef26a2e78c3a7884cb2178"
}
Frame {
msec: 6800
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "292af687e9001eb7cf8434094202b4a0"
}
Frame {
msec: 6816
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1de0a8aa08194151e2b72d8b16cdba5f"
}
Frame {
msec: 6832
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "ee607cf6f558e3ed7b08dad80a17dd05"
}
Frame {
msec: 6848
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "2024a393baa1fa1c2d38ccc6756c4a44"
}
Frame {
msec: 6864
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 31; y: 575
- modifiers: 0
- sendToViewport: true
+ hash: "898ac470a5b1619564496132c0150df2"
}
Frame {
msec: 6880
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "b447e3917b7353e97409755159a614bc"
}
Frame {
msec: 6896
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "d03610c18a2c21785e59b4de7b92f20e"
}
Frame {
msec: 6912
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "014dfa76c222aea838483840befff092"
}
Frame {
msec: 6928
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "014dfa76c222aea838483840befff092"
}
Frame {
msec: 6944
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "7830f79e5a37242fd97dd6ff9f89e9d0"
}
Frame {
msec: 6960
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "331a6b6ebaa7e9f7b970bacafe070b2f"
}
Frame {
msec: 6976
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "331a6b6ebaa7e9f7b970bacafe070b2f"
}
Frame {
msec: 6992
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "331a6b6ebaa7e9f7b970bacafe070b2f"
}
Frame {
msec: 7008
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "331a6b6ebaa7e9f7b970bacafe070b2f"
}
Frame {
msec: 7024
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7040
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7056
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7072
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7088
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7104
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7120
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "eb0b45fac8756d32586cac82f25c5a51"
}
Frame {
msec: 7136
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7152
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7168
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7184
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7200
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7216
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7232
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7248
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7264
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7280
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 156; y: 403
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7296
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 402
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 396
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7312
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 386
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7328
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 376
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 360
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7344
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 344
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 322
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7360
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 298
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 278
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 168; y: 278
- modifiers: 0
- sendToViewport: true
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7376
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7392
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7408
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7424
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7440
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7456
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7472
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7488
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7504
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7520
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7536
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 94; y: 581
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 7552
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7568
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7584
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7600
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 94; y: 581
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 7616
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7632
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7648
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7664
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7680
@@ -2214,69 +2702,205 @@ VisualTest {
}
Frame {
msec: 7696
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7712
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7728
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7744
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7760
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7776
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7792
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 7808
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7824
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7840
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7856
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7872
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7888
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7904
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7920
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7936
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 154; y: 161
+ x: 146; y: 574
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7824
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 7952
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
- msec: 7840
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 7968
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 7984
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8000
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8016
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 146; y: 574
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8032
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8048
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8064
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8080
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8096
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8112
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8128
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8144
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8160
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8176
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8192
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8208
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8224
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8240
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8256
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8272
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8288
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8304
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Frame {
+ msec: 8320
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 161; y: 422
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 162
+ x: 162; y: 420
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7856
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8336
+ hash: "bd1667fe88a71bc2f52ba5a6c9dc098c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 164
+ x: 162; y: 415
modifiers: 0
sendToViewport: true
}
@@ -2284,31 +2908,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 154; y: 167
+ x: 163; y: 411
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7872
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8352
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 406
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 177
+ x: 165; y: 397
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7888
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8368
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 150; y: 189
+ x: 166; y: 386
modifiers: 0
sendToViewport: true
}
@@ -2316,19 +2948,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 146; y: 207
+ x: 166; y: 375
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7904
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8384
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 144; y: 229
+ x: 166; y: 364
modifiers: 0
sendToViewport: true
}
@@ -2336,19 +2968,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 140; y: 255
+ x: 166; y: 352
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7920
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8400
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 134; y: 281
+ x: 166; y: 342
modifiers: 0
sendToViewport: true
}
@@ -2356,217 +2988,169 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 132; y: 313
+ x: 165; y: 331
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7936
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 8416
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 128; y: 343
+ x: 163; y: 319
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7952
- hash: "16eef219cc7d4e7589ea59ebc349973c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 126; y: 373
+ x: 163; y: 308
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 8432
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 126; y: 397
+ x: 163; y: 297
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 126; y: 397
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 284
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7968
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7984
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8000
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8016
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8032
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8048
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8064
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8080
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8096
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8112
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8128
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8144
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8160
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8176
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8192
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8208
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8224
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8240
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8256
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8272
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8288
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8304
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 8448
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
- Frame {
- msec: 8320
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 272
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 8336
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 261
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 8352
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 8464
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
- Frame {
- msec: 8368
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 250
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 8384
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 235
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 8400
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 8480
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
- Frame {
- msec: 8416
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 224
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 8432
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 155; y: 211
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 8448
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 8496
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
- Frame {
- msec: 8464
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 198
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 8480
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 187
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 8496
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 153; y: 187
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 8512
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8528
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8544
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8560
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8576
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8592
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8608
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8624
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8640
@@ -2574,321 +3158,629 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8672
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8688
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8704
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8720
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8736
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8752
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8768
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8784
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8800
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8816
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8832
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8848
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8864
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8880
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8896
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8912
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8928
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
}
Frame {
msec: 8944
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "1889f1f0e319b90b6a68d76df6eebe96"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 127; y: 125
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 8960
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "c1d084f6e9361c6c0c70f064ae863051"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 127; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 127; y: 131
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 8976
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "c1d084f6e9361c6c0c70f064ae863051"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 128; y: 135
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 128; y: 139
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 8992
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "a84a07f9d3006718d55de7d6ed60795e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 130; y: 152
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9008
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "deaa0f57eff99ca88f7204e8d8b159b5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 134; y: 176
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9024
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "4366ee113f7c987a2d8e5978b667e3d0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 138; y: 207
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9040
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "9dbad53daf3a7988498c561dda4c00a6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 145; y: 238
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9056
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "e70aeae6d78628c16a7c8c354cf91c98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 266
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9072
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "38aa5fd0540648edce34103704d8b861"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 156; y: 288
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9088
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "ff08c650e24f63fe7eae1984bb190e02"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 308
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9104
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "0d0f2377991d15416bf76619d2f71218"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 44; y: 574
+ x: 160; y: 327
modifiers: 0
sendToViewport: true
}
Frame {
msec: 9120
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "b7681257ec2ad1d532aa522147dd7549"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 343
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9136
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "baaf75edb3c17bbc754e26fe15f1d295"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 353
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9152
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "b68aab52cbcaf524ebb80f2a3af014b4"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 44; y: 574
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 363
modifiers: 0
sendToViewport: true
}
Frame {
msec: 9168
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "c69d2b45d92950f7246976bcc247c687"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 373
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9184
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "68cd8f467ac225f6e2c5a2914f92edc1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 383
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9200
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "90cfbee19fd7c03bcfc9a57d94c7fd8d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 155; y: 387
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 155; y: 387
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9216
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "8216a9f0024507e4cb8406575760947f"
}
Frame {
msec: 9232
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "47f76e736f13c6f2318e8c8a8ab69d0e"
}
Frame {
msec: 9248
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "75fc24bcf9d4b8d00f8a493b0095f445"
}
Frame {
msec: 9264
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "d8e9b69514f411a6672b7057c33bcc41"
}
Frame {
msec: 9280
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "9743d8ab32903d7fac7a4101ad24bcfd"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 150; y: 438
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9296
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "6bfcd36f945af8cc7b2aa2cca1cde750"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 150; y: 442
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 150; y: 446
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9312
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "8e821eb27a5fd0933805d3e88d1f5f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 451
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 457
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9328
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "84191607b7ba11b1204bba0ab5b4f98c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 467
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9344
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "e154e8cdbc4f9a1d4cbe926306bf76c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 474
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9360
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "2510607dadaf22d60838934cd460bde4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 492
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9376
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "38087462c92bae32df01a27520183c5f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 499
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9392
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "0e5231ff13dd8b3205acb2c451fcf208"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 515
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9408
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "12dfb280b1cb828b75d04f62b5261f78"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 545
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9424
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "fc89205b7a0bae9c2726b775aabf7a6a"
}
Frame {
msec: 9440
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "40807414ec0f879ae666f27360d2b91d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 567
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 581
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9456
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "01c759fad050fa6cecefdf7e2d528bd3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 594
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 608
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9472
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "81887d4c0718d74f51d03c9efcd7d265"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 620
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 639
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 9488
- hash: "679369b924d719ae309a45034bdba40d"
+ hash: "d0e6f2146daffb910be0be23a2b77a5c"
}
- Frame {
- msec: 9504
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 682
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 9520
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 9504
+ hash: "ffcf5113009c86c8b2df2e9276f2e8c0"
}
- Frame {
- msec: 9536
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 704
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 9552
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 155; y: 729
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 9568
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 9520
+ hash: "45d262f0b3bec61a2a235ab613db664c"
}
- Frame {
- msec: 9584
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 150; y: 775
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 9600
- image: "flickable-vertical.9.png"
+ msec: 9536
+ hash: "1bb9a85fc290e30b841648bd9573ac84"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 152; y: 444
+ x: 146; y: 823
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9616
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 9552
+ hash: "46ff9bb9662543c711fcd84f44fc6af6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 442
+ x: 141; y: 869
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9632
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 9568
+ hash: "84fe171380d203a80fedaf4b10412e1a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 440
+ x: 139; y: 907
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 9584
+ hash: "496f7ba4a3d45861d93e2cb95e3d5dea"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 438
+ x: 135; y: 947
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9648
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 9600
+ image: "flickable-vertical.9.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 429
+ x: 133; y: 962
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 133; y: 977
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9664
- hash: "3b0e0ed925b1c197cd94afd3d1a6d572"
+ msec: 9616
+ hash: "e3c4f8d056d2c3b5aef3184fda19a92d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 156; y: 421
+ x: 131; y: 993
modifiers: 0
sendToViewport: true
}
@@ -2896,31 +3788,31 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 158; y: 413
+ x: 129; y: 1006
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9680
- hash: "d7b3838ee1219816b76224c29c7ba2e1"
+ msec: 9632
+ hash: "90be1cd9716907fc46309f9f043a6f84"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 160; y: 403
+ x: 122; y: 1029
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9696
- hash: "9835b420f0c40a03f8f9fafe39e209f1"
+ msec: 9648
+ hash: "b6e868b2d23004f75d0bdb1519e8487d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 162; y: 393
+ x: 118; y: 1043
modifiers: 0
sendToViewport: true
}
@@ -2928,555 +3820,215 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 162; y: 393
+ x: 118; y: 1043
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 9664
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Frame {
+ msec: 9680
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Frame {
+ msec: 9696
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
+ Frame {
msec: 9712
- hash: "46fb2005a813fc2c278f1bfe83801c0e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9728
- hash: "81dd9308e475548db21474c37cb9a5b0"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9744
- hash: "10043d74eef240abd2360d45845dd51e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9760
- hash: "0f83b8f23ba42b22c10a2b68227db64e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9776
- hash: "7a296e3702c9fef25cb53ac04053853b"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9792
- hash: "ae439daa32f76a368ab314c86c55a378"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9808
- hash: "42ac3503dfa462bf0b5d8c15f6f3b143"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9824
- hash: "b8bb92eb2de7ca0f5924b09f380f47db"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9840
- hash: "994e314d2d38005b6006e81468f10efa"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9856
- hash: "be6a32f3c82aeccebc7778ff5646637f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9872
- hash: "2fb196f53d5e785e04a14d98d9dab8a1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9888
- hash: "0926f8209f4f35f6e6fa92935d7408e4"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9904
- hash: "780450301d37ea2b94eb9386e7e5294c"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9920
- hash: "cd4e9629c767813c9a2a2fa30dc5114b"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9936
- hash: "409630d7b9c3c4231bccf74f7453f0af"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9952
- hash: "4c98e619b487d67d114ed0d7800f157e"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9968
- hash: "0a8157dc45764ab8e0e0b89e5c73a76b"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 9984
- hash: "ecfc611b58e000df9f608c8889a2a84f"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10000
- hash: "5c6bc246446c75d57bcd40e86041892b"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10016
- hash: "fe1a3e688da126861b29a94b676b68f7"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10032
- hash: "f5feef892bf013916bacb63ff6460cb7"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10048
- hash: "665018efd991cab3acb4b80005fc2bd3"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10064
- hash: "bc7614e4a0e0724a9cb0981f09f8a7f6"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10080
- hash: "463a6da452a5a6267240992ad5284e89"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10096
- hash: "eca3f146e0143856f58b4f7aee42e6f8"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10112
- hash: "dec9b9845509c4d28d7faae043b292d1"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10128
- hash: "49452842cb2429cd465e40478638e0e3"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10144
- hash: "a7029d0090d3620ee21b9e3d55eefe78"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10160
- hash: "1041b18d422acba0b9a45ca89856e493"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10176
- hash: "d53038b688b920715b196dd4cc2b2587"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10192
- hash: "da59ffebb491ab5fa98429117c3bb8ac"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10208
- hash: "602269f78eaf0df36c66de72e005989a"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10224
- hash: "a311b6b35feb4096b0d01753a6695210"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10240
- hash: "cd303e8850c6aac58fcf2a98db418f1b"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10256
- hash: "6e9132dd840a136cc688676bce7640de"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10272
- hash: "a3818492bb4ebd91ce86675d34731c58"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10288
- hash: "b85a127895713234028641787312b717"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10304
- hash: "a030dc1543e84d8a0ec9f77fd6325060"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10320
- hash: "669cd28abe17d419e9cabe4d796a38c3"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
msec: 10336
- hash: "bfdd15cf058050203561b5f935106263"
- }
- Frame {
- msec: 10352
- hash: "a39abc94fee93175a6a37b402750e4f7"
- }
- Frame {
- msec: 10368
- hash: "0c65e19e12d95ec8ee253219b0c3e472"
- }
- Frame {
- msec: 10384
- hash: "15debc234e70765a4510bfbda886a2c9"
- }
- Frame {
- msec: 10400
- hash: "9566a87437cb6e9025f9a3881a620823"
- }
- Frame {
- msec: 10416
- hash: "b66d89244cba537a21901dcb11387bf7"
- }
- Frame {
- msec: 10432
- hash: "03347ce314393bd84873026cd01c562f"
- }
- Frame {
- msec: 10448
- hash: "458fab2449dba089ae6f1e78a230564b"
- }
- Frame {
- msec: 10464
- hash: "7115f27574bfc68ff58a2e4fb65107dd"
- }
- Frame {
- msec: 10480
- hash: "66260c030dddda4b086bc98982a11934"
- }
- Frame {
- msec: 10496
- hash: "d5790ee5eb8ecf249cb1dcf58aefa4ee"
- }
- Frame {
- msec: 10512
- hash: "6bec07ba1e2ac637aab7a9038cbacc93"
- }
- Frame {
- msec: 10528
- hash: "a72f36cc18c8620a2bd85bac49f6771a"
- }
- Frame {
- msec: 10544
- hash: "65b178ae559ab0ba9c568718f287ff68"
- }
- Frame {
- msec: 10560
- image: "flickable-vertical.10.png"
- }
- Frame {
- msec: 10576
- hash: "b35a8e33f876921d477809b5adb7a201"
- }
- Frame {
- msec: 10592
- hash: "057b69ef8137f38c596432da547f1ead"
- }
- Frame {
- msec: 10608
- hash: "62f76f46857106010c2e862ed19baeea"
- }
- Frame {
- msec: 10624
- hash: "fbfc73e1b20b79d71953c298ca095047"
- }
- Frame {
- msec: 10640
- hash: "aea78988f875083660dd46d6afc71683"
- }
- Frame {
- msec: 10656
- hash: "60d8decd7ded420433256a94f1bf954f"
- }
- Frame {
- msec: 10672
- hash: "221f72cdf18e0b33e7f6a65356fcc61b"
- }
- Frame {
- msec: 10688
- hash: "221f72cdf18e0b33e7f6a65356fcc61b"
- }
- Frame {
- msec: 10704
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10720
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10736
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10752
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10768
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10784
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10800
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10816
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10832
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10848
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10864
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10880
- hash: "28a06534a2e35250c67112dfb6c05095"
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 98; y: 573
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 10896
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10912
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10928
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10944
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10960
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 98; y: 573
+ x: 158; y: 415
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 10976
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10992
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11008
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11024
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11040
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11056
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11072
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11088
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11104
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11120
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11136
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11152
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11168
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11184
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11200
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11216
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11232
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11248
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11264
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11280
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11296
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11312
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11328
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11344
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11360
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11376
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11392
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11408
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11424
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11440
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11456
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11472
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11488
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11504
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11520
- image: "flickable-vertical.11.png"
- }
- Frame {
- msec: 11536
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11552
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11568
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11584
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11600
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11616
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11632
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11648
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11664
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11680
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11696
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11712
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 10352
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Frame {
- msec: 11728
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 10368
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 170; y: 335
+ x: 159; y: 416
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11744
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11760
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 10384
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 336
+ x: 160; y: 417
modifiers: 0
sendToViewport: true
}
@@ -3484,43 +4036,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 170; y: 338
+ x: 161; y: 422
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11776
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 10400
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 346
+ x: 162; y: 429
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11792
- hash: "12040d4dd56848fc93d6390005045188"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 359
+ x: 166; y: 444
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11808
- hash: "caa70db5f31eb607c2de39734a42796c"
+ msec: 10416
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 168; y: 367
+ x: 168; y: 459
modifiers: 0
sendToViewport: true
}
@@ -3528,19 +4076,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 166; y: 379
+ x: 173; y: 473
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11824
- hash: "ca45ab832b5a8b041ba8bea1185a2b38"
+ msec: 10432
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 166; y: 393
+ x: 175; y: 486
modifiers: 0
sendToViewport: true
}
@@ -3548,235 +4096,99 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 164; y: 407
+ x: 178; y: 499
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11840
- hash: "188042b1a045dc96a65a7fc0e90568c3"
+ msec: 10448
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 419
+ x: 180; y: 512
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11856
- hash: "714a3cf591beeeddbdc2df94f5cedef1"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 443
+ x: 183; y: 524
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11872
- hash: "e9978c24eef649d01cb2245f783cb562"
+ msec: 10464
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 461
+ x: 185; y: 535
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11888
- hash: "bc8f32062afdfe33da7c99ee867bc2a3"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 166; y: 467
+ x: 187; y: 548
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11904
- hash: "d788c09f4acba8197b2d8fef2e8ece51"
+ msec: 10480
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 168; y: 470
+ x: 189; y: 562
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11920
- hash: "b0a383eb416727c22451a30a997f48f1"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 169; y: 472
+ x: 189; y: 577
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11936
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11952
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11968
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11984
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12000
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12016
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12032
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12048
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12064
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 10496
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 169; y: 472
+ type: 5
+ button: 0
+ buttons: 1
+ x: 191; y: 593
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12080
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12096
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12112
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12128
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12144
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12160
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12176
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12192
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12208
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12224
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12240
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12256
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12272
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12288
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12304
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12320
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12336
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12352
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12368
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12384
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12400
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12416
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12432
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 171; y: 452
+ x: 193; y: 609
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12448
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 10512
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 172; y: 450
+ x: 195; y: 626
modifiers: 0
sendToViewport: true
}
@@ -3784,63 +4196,59 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 173; y: 448
+ x: 197; y: 641
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12464
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 10528
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 175; y: 434
+ x: 197; y: 655
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12480
- image: "flickable-vertical.12.png"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 175; y: 431
+ x: 199; y: 670
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 10544
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 177; y: 423
+ x: 201; y: 681
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12496
- hash: "7e760a017ab10fe920074405248d1473"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 177; y: 415
+ x: 201; y: 690
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12512
- hash: "eab43f1c2b6fb79aad578a164b8b7b28"
+ msec: 10560
+ image: "flickable-vertical.10.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 181; y: 395
+ x: 201; y: 698
modifiers: 0
sendToViewport: true
}
@@ -3848,87 +4256,79 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 183; y: 383
+ x: 203; y: 706
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12528
- hash: "a5446ca4c6650ffc9812845bdb8db088"
+ msec: 10576
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 371
+ x: 203; y: 712
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12544
- hash: "71cb7dc7f9dbb9e17d7f44885ec71bdb"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 357
+ x: 203; y: 718
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12560
- hash: "ccf0908d968f658311a9787182de498a"
+ msec: 10592
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 329
+ x: 205; y: 722
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12576
- hash: "26b9c6379590bbda24d129bd4f19f7d3"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 303
+ x: 205; y: 725
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 10608
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 293
+ x: 205; y: 727
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12592
- hash: "6c88a02ffdffee6d615ddc6a11c1b698"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 283
+ x: 205; y: 731
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12608
- hash: "38175cb09b6e63353b478635b22dbb5b"
+ msec: 10624
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 280
+ x: 205; y: 735
modifiers: 0
sendToViewport: true
}
@@ -3936,19 +4336,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 187; y: 277
+ x: 205; y: 737
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12624
- hash: "5084910bf204e8b688de31d4f9018a57"
+ msec: 10640
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 275
+ x: 205; y: 739
modifiers: 0
sendToViewport: true
}
@@ -3956,1235 +4356,531 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 187; y: 273
+ x: 205; y: 740
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12640
- hash: "e984565312571ec144a1cd4cc11253e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 272
- modifiers: 0
- sendToViewport: true
+ msec: 10656
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 271
+ x: 205; y: 741
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12656
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12672
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12688
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12704
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12720
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12736
- hash: "d96fb1b387b34f41f80e98c1feb05303"
+ msec: 10672
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 12752
- hash: "d96fb1b387b34f41f80e98c1feb05303"
+ msec: 10688
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 12768
- hash: "d96fb1b387b34f41f80e98c1feb05303"
+ msec: 10704
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 187; y: 271
+ x: 205; y: 741
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12784
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12800
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12816
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12832
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12848
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12864
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12880
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12896
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12912
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12928
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12944
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12960
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12976
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12992
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 13008
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13024
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13040
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13056
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13072
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13088
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13104
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13120
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13136
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13152
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10720
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13168
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10736
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13184
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10752
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13200
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10768
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13216
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10784
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13232
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10800
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13248
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10816
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13264
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10832
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13280
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10848
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13296
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10864
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13312
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10880
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13328
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10896
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13344
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 181; y: 242
- modifiers: 0
- sendToViewport: true
+ msec: 10912
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13360
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10928
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13376
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10944
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13392
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10960
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13408
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 10976
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13424
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 181; y: 242
- modifiers: 0
- sendToViewport: true
+ msec: 10992
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13440
- image: "flickable-vertical.13.png"
+ msec: 11008
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13456
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11024
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13472
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11040
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13488
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11056
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13504
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11072
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13520
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11088
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13536
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11104
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13552
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11120
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13568
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11136
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13584
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11152
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13600
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11168
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13616
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11184
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13632
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11200
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13648
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11216
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13664
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11232
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13680
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11248
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13696
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11264
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13712
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11280
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13728
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11296
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13744
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11312
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13760
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11328
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13776
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11344
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13792
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11360
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13808
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11376
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13824
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11392
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13840
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11408
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13856
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11424
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13872
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11440
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13888
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11456
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13904
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11472
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13920
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11488
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 13936
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 11504
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 181; y: 242
+ x: 115; y: 578
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 13952
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13968
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13984
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14000
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14016
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14032
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14048
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14064
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14080
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14096
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14112
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14128
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14144
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14160
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14176
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14192
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14208
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14224
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14240
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14256
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14272
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14288
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14304
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14320
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14336
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14352
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14368
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14384
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14400
- image: "flickable-vertical.14.png"
- }
- Frame {
- msec: 14416
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14432
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14448
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14464
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14480
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14496
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14512
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14528
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14544
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14560
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14576
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14592
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14608
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14624
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14640
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14656
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14672
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14688
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14704
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14720
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14736
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14752
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14768
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14784
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14800
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14816
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14832
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14848
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14864
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14880
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14896
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14912
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14928
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14944
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14960
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14976
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11520
+ image: "flickable-vertical.11.png"
}
Frame {
- msec: 14992
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11536
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15008
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11552
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15024
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11568
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15040
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11584
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 181; y: 242
+ x: 115; y: 578
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 15056
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15072
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15088
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15104
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15120
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15136
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15152
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15168
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15184
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15200
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15216
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15232
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15248
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15264
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15280
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15296
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15312
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15328
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15344
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15360
- image: "flickable-vertical.15.png"
- }
- Frame {
- msec: 15376
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15392
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15408
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15424
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15440
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11600
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15456
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11616
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15472
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11632
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15488
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11648
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15504
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11664
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15520
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11680
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15536
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11696
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15552
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11712
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15568
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11728
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15584
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11744
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15600
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11760
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15616
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11776
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15632
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11792
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15648
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11808
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15664
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11824
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15680
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11840
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15696
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11856
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 15712
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 11872
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 192; y: 218
+ x: 130; y: 410
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 15728
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15744
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15760
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15776
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15792
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15808
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15824
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15840
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15856
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15872
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15888
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15904
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15920
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15936
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15952
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15968
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15984
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16000
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16016
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16032
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16048
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16064
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16080
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16096
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16112
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16128
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16144
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16160
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16176
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16192
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16208
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16224
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16240
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16256
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16272
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16288
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16304
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16320
- image: "flickable-vertical.16.png"
- }
- Frame {
- msec: 16336
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16352
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16368
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16384
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16400
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16416
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16432
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16448
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16464
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16480
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16496
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11888
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16512
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11904
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16528
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11920
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16544
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11936
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16560
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11952
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16576
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11968
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
- Frame {
- msec: 16592
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 130; y: 410
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 16608
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 11984
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16624
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 12000
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16640
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 12016
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 16656
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 222
- modifiers: 0
- sendToViewport: true
+ msec: 12032
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
- type: 5
- button: 0
+ type: 4
+ button: 1
buttons: 1
- x: 198; y: 224
+ x: 130; y: 410
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16672
- hash: "c30bea2a73a8b5af4565ef3996f29416"
+ msec: 12048
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 228
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 12064
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 230
+ x: 131; y: 410
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16688
- hash: "9612c176ec3ecf76a367728f451522a4"
+ msec: 12080
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 233
+ x: 133; y: 408
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16704
- hash: "24f6feeeb1ff82c8d4262f74e4656602"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 238
+ x: 134; y: 405
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16720
- hash: "5823b56f1e362fdfc216a82e2dcdec61"
+ msec: 12096
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 241
+ x: 136; y: 403
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16736
- hash: "4ee243b91e847dabaceb21b5540c2a6d"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 245
+ x: 140; y: 396
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16752
- hash: "87f1dc2238577fc5be6b1bd941226f3e"
+ msec: 12112
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 251
+ x: 150; y: 380
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16768
- hash: "480c6fcf1b3862a41a7225c35d8080c3"
+ msec: 12128
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 256
+ x: 154; y: 370
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16784
- hash: "0ac819bd8e6ce19553bd954e466e7ac0"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 199; y: 258
+ x: 158; y: 361
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16800
- hash: "0636dd7c4eb0b56697fb59fb46f47f9c"
+ msec: 12144
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 201; y: 267
+ x: 161; y: 353
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16816
- hash: "62f76f46857106010c2e862ed19baeea"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 276
+ x: 163; y: 343
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16832
- hash: "26b9c6379590bbda24d129bd4f19f7d3"
+ msec: 12160
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 279
+ x: 166; y: 332
modifiers: 0
sendToViewport: true
}
@@ -5192,19 +4888,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 203; y: 280
+ x: 166; y: 324
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16848
- hash: "21baf0596553627c8e683a31c2e6d04f"
+ msec: 12176
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 281
+ x: 168; y: 315
modifiers: 0
sendToViewport: true
}
@@ -5212,991 +4908,247 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 203; y: 282
+ x: 168; y: 309
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16864
- hash: "036679da5def5e696361f2373172a3f4"
+ msec: 12192
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 283
+ x: 168; y: 303
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16880
- hash: "e3fc6101bc6cccf309b3df6b194820ea"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 285
+ x: 168; y: 297
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16896
- hash: "d9ee6d0a7455cfd724c1856549100756"
+ msec: 12208
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 286
+ x: 168; y: 293
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16912
- hash: "caa70db5f31eb607c2de39734a42796c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 287
+ x: 168; y: 291
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16928
- hash: "e2dc88b454e69cf92d6887a2f0629a94"
- }
- Frame {
- msec: 16944
- hash: "e2dc88b454e69cf92d6887a2f0629a94"
+ msec: 12224
+ hash: "c246bde0eb2b3e1797dfb770a9db78bb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 288
+ x: 168; y: 290
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16960
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 16976
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 16992
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17008
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17024
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17040
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17056
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17072
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17088
- hash: "fac8455a2707b04aabff25723375a78b"
- }
Mouse {
type: 3
button: 1
buttons: 0
- x: 203; y: 288
+ x: 168; y: 290
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 17104
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17120
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17136
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17152
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17168
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17184
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17200
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17216
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17232
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17248
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17264
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17280
- image: "flickable-vertical.17.png"
- }
- Frame {
- msec: 17296
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17312
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17328
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17344
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17360
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17376
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17392
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17408
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17424
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17440
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17456
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17472
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17488
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17504
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17520
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17536
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17552
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17568
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17584
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17600
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17616
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17632
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17648
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17664
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17680
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17696
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17712
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17728
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17744
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17760
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17776
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17792
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17808
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17824
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17840
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17856
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17872
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17888
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17904
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17920
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17936
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17952
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17968
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17984
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18000
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18016
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18032
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18048
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18064
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18080
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18096
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18112
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18128
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18144
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18160
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18176
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18192
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18208
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18224
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18240
- image: "flickable-vertical.18.png"
- }
- Frame {
- msec: 18256
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18272
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18288
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18304
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12240
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18320
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12256
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18336
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12272
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18352
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12288
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18368
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12304
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18384
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12320
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18400
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12336
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18416
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12352
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18432
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12368
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 18448
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12384
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 102; y: 575
+ x: 167; y: 295
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 18464
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18480
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18496
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 12400
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 102; y: 575
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 300
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 18512
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18528
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18544
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18560
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18576
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18592
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18608
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18624
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18640
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18656
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18672
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18688
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18704
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18720
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18736
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18752
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18768
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18784
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18800
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18816
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18832
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18848
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18864
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18880
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18896
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18912
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18928
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18944
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18960
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18976
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18992
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19008
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19024
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19040
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19056
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19072
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19088
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19104
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19120
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19136
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19152
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19168
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19184
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19200
- image: "flickable-vertical.19.png"
- }
- Frame {
- msec: 19216
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19232
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19248
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19264
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 164; y: 571
+ x: 165; y: 308
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 19280
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19296
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19312
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19328
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 12416
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 164; y: 571
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 316
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 19344
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19360
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19376
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19392
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19408
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19424
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19440
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19456
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19472
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19488
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19504
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19520
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19536
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19552
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19568
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19584
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19600
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19616
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19632
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19648
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19664
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19680
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19696
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19712
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19728
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19744
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19760
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19776
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19792
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19808
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19824
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19840
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19856
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19872
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19888
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19904
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19920
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19936
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19952
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19968
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19984
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20000
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20016
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20032
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20048
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20064
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20080
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20096
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20112
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20128
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20144
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 326
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20160
- image: "flickable-vertical.20.png"
+ msec: 12432
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
- Frame {
- msec: 20176
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 336
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 20192
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 346
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20208
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 12448
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
- Frame {
- msec: 20224
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 356
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 170; y: 450
+ x: 165; y: 369
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20240
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ msec: 12464
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
- Frame {
- msec: 20256
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 382
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 448
+ x: 167; y: 393
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20272
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ msec: 12480
+ image: "flickable-vertical.12.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 172; y: 438
+ x: 167; y: 405
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 20288
- hash: "40cf6e4567c796d6ad83778fb1959d8a"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 410
+ x: 167; y: 415
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20304
- hash: "9914584daf02407c1edc3b6a38b8302d"
+ msec: 12496
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 388
+ x: 167; y: 420
modifiers: 0
sendToViewport: true
}
@@ -6204,351 +5156,79 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 176; y: 366
+ x: 167; y: 429
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20320
- hash: "5aff2316a5e34f5e15b7cb36257a3d72"
+ msec: 12512
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 342
+ x: 167; y: 433
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 12528
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
+ }
Mouse {
type: 3
button: 1
buttons: 0
- x: 176; y: 342
+ x: 167; y: 433
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20336
- hash: "de1f9ff1abfa8cdc760bc84129fab40d"
- }
- Frame {
- msec: 20352
- hash: "032c4fd62a0a611207262d317d4ea103"
- }
- Frame {
- msec: 20368
- hash: "1db8a7b3899f5efea25ccf93285ee6bd"
- }
- Frame {
- msec: 20384
- hash: "3c106f68b755862346cddd21d75c0caf"
- }
- Frame {
- msec: 20400
- hash: "41d025dfe037b9cebe84e4c7200e9d15"
- }
- Frame {
- msec: 20416
- hash: "f347687313c88150a6f977ae8b1620fc"
- }
- Frame {
- msec: 20432
- hash: "4bb30faaec54e2a47dfd2b2988a6c231"
- }
- Frame {
- msec: 20448
- hash: "fede02600e790d4b6eb1f85563b37cbc"
- }
- Frame {
- msec: 20464
- hash: "0a949f7150b3709b9eda62c98f98fc62"
- }
- Frame {
- msec: 20480
- hash: "214e571c2346b0d6b5d1220e856a8e67"
- }
- Frame {
- msec: 20496
- hash: "f84207d20cfff984d1c79654a1074d02"
- }
- Frame {
- msec: 20512
- hash: "7dc3592294dcd88fbfff2f984fd2d4c3"
- }
- Frame {
- msec: 20528
- hash: "42829e78f62e692a093df267d2b673e2"
- }
- Frame {
- msec: 20544
- hash: "d264570c78e7d1ea283c72191953a2ce"
- }
- Frame {
- msec: 20560
- hash: "b69b045557a8eada80a24eb4caa7ea4e"
- }
- Frame {
- msec: 20576
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20592
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20608
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20624
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20640
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20656
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20672
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20688
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20704
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20720
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20736
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20752
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20768
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20784
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20800
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20816
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20832
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20848
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20864
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20880
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20896
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20912
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20928
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20944
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20960
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20976
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20992
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21008
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21024
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21040
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21056
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21072
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21088
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21104
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21120
- image: "flickable-vertical.21.png"
- }
- Frame {
- msec: 21136
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21152
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21168
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21184
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21200
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21216
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21232
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21248
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21264
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21280
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21296
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21312
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21328
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21344
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21360
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21376
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21392
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21408
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21424
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21440
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21456
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12544
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21472
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12560
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21488
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12576
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21504
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12592
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21520
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12608
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21536
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12624
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Frame {
- msec: 21552
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12640
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
- Frame {
- msec: 21568
- hash: "a76f069dfcb1af0794999c34507e190e"
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 145; y: 357
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 21584
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 12656
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 197; y: 124
+ x: 145; y: 350
modifiers: 0
sendToViewport: true
}
@@ -6556,19 +5236,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 197; y: 132
+ x: 145; y: 342
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21600
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
+ msec: 12672
+ hash: "b0e76c5cfeb797888e8c032b3f2781bd"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 197; y: 146
+ x: 145; y: 333
modifiers: 0
sendToViewport: true
}
@@ -6576,51 +5256,63 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 197; y: 164
+ x: 145; y: 323
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21616
- hash: "463fce69afc3dec181425c9adaa3e77c"
+ msec: 12688
+ hash: "7eda3c99a4c066ed00c717e33a66682c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 197; y: 190
+ x: 147; y: 305
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 12704
+ hash: "85402c05dd1bd85316422aec2b774e4f"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 195; y: 218
+ x: 147; y: 285
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21632
- hash: "9af34ff618e277eafad32e0377ecc94b"
+ msec: 12720
+ hash: "f8ebaae72eb98b880aaf5bb8cf517840"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 250
+ x: 147; y: 275
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 147; y: 264
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21648
- hash: "db4b2333630ccc4a7982361609a12837"
+ msec: 12736
+ hash: "83ebbcd20af8178175ea72698b9bfd08"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 183; y: 284
+ x: 145; y: 253
modifiers: 0
sendToViewport: true
}
@@ -6628,410 +5320,268 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 183; y: 284
+ x: 145; y: 253
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21664
- hash: "50335b19a1e210f87924d01bb343a0e0"
- }
- Frame {
- msec: 21680
- hash: "59b4f80a7cd6b732eb26f3b4147efe7e"
- }
- Frame {
- msec: 21696
- hash: "b99cc1f07bcb0480801d4d5403372525"
- }
- Frame {
- msec: 21712
- hash: "871040b0f921646609b79828bab38949"
- }
- Frame {
- msec: 21728
- hash: "2acb3d19eed000313872d5cd66765b53"
- }
- Frame {
- msec: 21744
- hash: "b5431a2d2e856a726ceac2066b128f8f"
- }
- Frame {
- msec: 21760
- hash: "04047c917a95a2a3df30c14bb20601dd"
- }
- Frame {
- msec: 21776
- hash: "fea7ac3d26975f438129e394c667e628"
- }
- Frame {
- msec: 21792
- hash: "4db41ff05865cabc4ef288478254e633"
- }
- Frame {
- msec: 21808
- hash: "e0d3737effd817a8f603eb393677b8b6"
- }
- Frame {
- msec: 21824
- hash: "d4f06941d213544ddcae714ddc0b47e9"
- }
- Frame {
- msec: 21840
- hash: "dbb21caf4a4c9b88563f1d0aad35f3d3"
- }
- Frame {
- msec: 21856
- hash: "eb9a052219c3f955f2c036834990089b"
- }
- Frame {
- msec: 21872
- hash: "40090a35caf674ed9c4bf1d10f9209ea"
- }
- Frame {
- msec: 21888
- hash: "064de0abec66d1ddcf0f6073ce7d91ef"
- }
- Frame {
- msec: 21904
- hash: "f407334d0b63a34657dc1306fd67aeb7"
- }
- Frame {
- msec: 21920
- hash: "1c0744be97c65c68ca92bd86d42c7b0e"
- }
- Frame {
- msec: 21936
- hash: "7469d4a06c5df073e22db3c905baefc1"
- }
- Frame {
- msec: 21952
- hash: "35912a7e2ecc0c387fc9fb9da7201bfd"
- }
- Frame {
- msec: 21968
- hash: "9f835091374f0d0d9a6996e6dad10e19"
- }
- Frame {
- msec: 21984
- hash: "afade1ecbaf5f920880eaff3b3de606e"
- }
- Frame {
- msec: 22000
- hash: "9c70e8a020c8c1101b9884529cb4527f"
- }
- Frame {
- msec: 22016
- hash: "3e7d4dc75f85dfeb065da18ef1c102c1"
- }
- Frame {
- msec: 22032
- hash: "16852d62a77eefccea9497ae1b09842d"
- }
- Frame {
- msec: 22048
- hash: "ea8afda6d837a98f408a7aa133494575"
- }
- Frame {
- msec: 22064
- hash: "666435dccf30c53eb09ea7ad8b5264a1"
- }
- Frame {
- msec: 22080
- image: "flickable-vertical.22.png"
- }
- Frame {
- msec: 22096
- hash: "2e959bf0470bac84e2220d9e8a8bbb97"
- }
- Frame {
- msec: 22112
- hash: "595b6cfd559f8362b010616de4947ec6"
- }
- Frame {
- msec: 22128
- hash: "976dd345cc7cb4e3c09a288530d3c8af"
- }
- Frame {
- msec: 22144
- hash: "9493e425d5cd3f9eef904a1be63f45f1"
- }
- Frame {
- msec: 22160
- hash: "0a2013afebb5e09d82633c8d8a393f01"
- }
- Frame {
- msec: 22176
- hash: "d8377c464bc59d95e0670d697888d804"
- }
- Frame {
- msec: 22192
- hash: "52f9416973da953bd6fe55b2fe22786a"
- }
- Frame {
- msec: 22208
- hash: "23b9af0f371b7817e9ceaa1a83995d35"
- }
- Frame {
- msec: 22224
- hash: "34b0e0333c91bc4533e0c01eaeb3d3f9"
+ msec: 12752
+ hash: "a154f7125f88c25484aea9f268a10e22"
}
Frame {
- msec: 22240
- hash: "1597b86afe2841c3bb77bb5dd6aa6803"
+ msec: 12768
+ hash: "4a1fdbc170f98e3c438cf47526fd16a1"
}
Frame {
- msec: 22256
- hash: "d74111814ff259fea47e1eb3b36e174b"
+ msec: 12784
+ hash: "99228a13ebf2516199d339cc73e1358f"
}
Frame {
- msec: 22272
- hash: "c64c46fe9cd75afbf2385241ea8e55d4"
+ msec: 12800
+ hash: "724687b54e474e4dc53b105ed9ca2def"
}
Frame {
- msec: 22288
- hash: "1e8740a104643fe30b0e874bbbed44ab"
+ msec: 12816
+ hash: "4db074b34af9472a5d853928953901dc"
}
Frame {
- msec: 22304
- hash: "ef669a8d142947463084383a6c7c7f85"
+ msec: 12832
+ hash: "ab1acd2ba148a7830f75cbf2e09e426c"
}
Frame {
- msec: 22320
- hash: "2314c42b5994bdbfd73eb2c3ea54626b"
+ msec: 12848
+ hash: "04a22e2278823d9e49e524ef2d8d45c5"
}
Frame {
- msec: 22336
- hash: "53a0694d8eee91b968bd43efe43f2c9e"
+ msec: 12864
+ hash: "f5a658c7c2b185e250dc1b245457094b"
}
Frame {
- msec: 22352
- hash: "be4772528f30c18193e49ae04a290af8"
+ msec: 12880
+ hash: "bb611d6a086b0eedb37111d7575847df"
}
Frame {
- msec: 22368
- hash: "a0b0877ab92a0323e35fdb7beb602dee"
+ msec: 12896
+ hash: "04e9e40c43a51b704378871710ad9f8b"
}
Frame {
- msec: 22384
- hash: "a0e299fb4ba811a0b22fb62c222cb86c"
+ msec: 12912
+ hash: "7ff5ba1e30f93de2dd3cad953d3d60fb"
}
Frame {
- msec: 22400
- hash: "2562bc9c9aa60a48b6ca00333f60d163"
+ msec: 12928
+ hash: "f85e46ed733dbbec83509d6a3b4c72a0"
}
Frame {
- msec: 22416
- hash: "486b45c385d88d6f054fa6308b55f2ac"
+ msec: 12944
+ hash: "2f08cc1d92102138d6a4945116727be5"
}
Frame {
- msec: 22432
- hash: "86502af668ed6336dce8fe329e3408a6"
+ msec: 12960
+ hash: "864a68a8519e58081205d74b4184498b"
}
Frame {
- msec: 22448
- hash: "2a79a6530a07f00810310117d00d28ed"
+ msec: 12976
+ hash: "1fb6a1ecbde71566486a1310a5ab9c17"
}
Frame {
- msec: 22464
- hash: "94a5fce3e0c3b219e0d807bfcade11e8"
+ msec: 12992
+ hash: "5ab977d88d850d94340bfc0c15137486"
}
Frame {
- msec: 22480
- hash: "94a5fce3e0c3b219e0d807bfcade11e8"
+ msec: 13008
+ hash: "79bafb9b957d88f938c977b37e1d8b9c"
}
Frame {
- msec: 22496
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13024
+ hash: "fa5b1cf343b45407f6cee7ce38ca9eb0"
}
Frame {
- msec: 22512
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13040
+ hash: "1147ff69795a65878ffea7bed4b9a93f"
}
Frame {
- msec: 22528
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13056
+ hash: "08ad4cd6fbdba8c98dfbc096ab91ebd2"
}
Frame {
- msec: 22544
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13072
+ hash: "3ee0c33a1a80b8cad7ec525b8b16cb70"
}
Frame {
- msec: 22560
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13088
+ hash: "cabd708943ce14892bb69aa22dc4a2b5"
}
Frame {
- msec: 22576
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13104
+ hash: "86a7afcbbd67b50b7bf3ef85f1843e3d"
}
Frame {
- msec: 22592
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13120
+ hash: "111f0161479cf82c08dd918b6ece8e45"
}
Frame {
- msec: 22608
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13136
+ hash: "33da9e73f1521297c3d250f00cda20cd"
}
Frame {
- msec: 22624
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13152
+ hash: "72f166ddddac3962b39cf4283b4554f3"
}
Frame {
- msec: 22640
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13168
+ hash: "1ee57340798998f95114d929d2702ce6"
}
Frame {
- msec: 22656
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13184
+ hash: "eb036d3246a2361aa1b11c8408f9eb1a"
}
Frame {
- msec: 22672
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13200
+ hash: "af73e799d7cb536d0ba6db985396c597"
}
Frame {
- msec: 22688
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13216
+ hash: "5d84accad1fa5d421bc3effb148d81a6"
}
Frame {
- msec: 22704
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13232
+ hash: "d752289e96eb2398096297234b6b88f6"
}
Frame {
- msec: 22720
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13248
+ hash: "53970a50451c182f672d0ddcd572279d"
}
Frame {
- msec: 22736
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13264
+ hash: "6323f61cc6966e75be10a49aeaab9a3e"
}
Frame {
- msec: 22752
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13280
+ hash: "fb679e5ad89681f482d94b4dab80e3bb"
}
Frame {
- msec: 22768
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13296
+ hash: "1788a7f680bbcbcedb2583cead6ced57"
}
Frame {
- msec: 22784
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13312
+ hash: "b325580b9f88dd5490d914f580b9d341"
}
Frame {
- msec: 22800
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13328
+ hash: "8fa25fff546b060a92b60e6fbb3b2fa8"
}
Frame {
- msec: 22816
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13344
+ hash: "2fb5ee5e86745910b46d98943af4c9d5"
}
Frame {
- msec: 22832
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13360
+ hash: "7fcdce21e2e1b14501e79d9c716b0011"
}
Frame {
- msec: 22848
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13376
+ hash: "bf79452e478bfe3374d4c275fc3b42fb"
}
Frame {
- msec: 22864
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13392
+ hash: "1069c4aff64ab8193798965af7a6988e"
}
Frame {
- msec: 22880
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13408
+ hash: "3031ea711d0880a2fafd557f23c38cc0"
}
Frame {
- msec: 22896
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13424
+ hash: "5955c49ae05578f6a9b023a1f6c8301b"
}
Frame {
- msec: 22912
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13440
+ image: "flickable-vertical.13.png"
}
Frame {
- msec: 22928
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13456
+ hash: "af2fc9780356c01d44e7e918643e334b"
}
Frame {
- msec: 22944
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13472
+ hash: "b28600a5433e08299bf5ab3c789a4d5a"
}
Frame {
- msec: 22960
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13488
+ hash: "159dab2806a6fbac4f090c4ca029433e"
}
Frame {
- msec: 22976
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13504
+ hash: "b1937894776d083eb38f105901344d55"
}
Frame {
- msec: 22992
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13520
+ hash: "2420c1280e6520e35f30879fe139ed77"
}
Frame {
- msec: 23008
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13536
+ hash: "ba0018197140b398caa05eada958e2ce"
}
Frame {
- msec: 23024
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13552
+ hash: "b04094c2734f71e17a2d0091b3c85565"
}
Frame {
- msec: 23040
- image: "flickable-vertical.23.png"
+ msec: 13568
+ hash: "2ff995d15a49fcbd0adfcb970135ebae"
}
Frame {
- msec: 23056
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13584
+ hash: "9b10dc438e944a8711aef1f45c912538"
}
Frame {
- msec: 23072
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13600
+ hash: "c397307c99d125789e03b0239c6d7130"
}
Frame {
- msec: 23088
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13616
+ hash: "aa6fe1c4d968bbf381f38c09e9c26eea"
}
Frame {
- msec: 23104
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13632
+ hash: "8d586f001d41ccde450a4ce88a8ef89a"
}
Frame {
- msec: 23120
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13648
+ hash: "80f98a4935097ec76bd863ffe4e3a441"
}
Frame {
- msec: 23136
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13664
+ hash: "620b4eddf956d85701387a114ec228fc"
}
Frame {
- msec: 23152
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13680
+ hash: "dc56a6cafe22e56d6d5efee62c324784"
}
Frame {
- msec: 23168
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13696
+ hash: "8fcf5f5b350ffc80cde03b044dc81e57"
}
Frame {
- msec: 23184
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13712
+ hash: "5bc02d5bfcc6f4a9349623139663e664"
}
Frame {
- msec: 23200
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13728
+ hash: "6a71734b1a38cdbacf8447a41481d67c"
}
Frame {
- msec: 23216
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13744
+ hash: "34b069ef8080e15db86f66983f18c58d"
}
Frame {
- msec: 23232
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13760
+ hash: "0131b30e21796e0ea9ad1484ac7ac6e4"
}
Frame {
- msec: 23248
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 13776
+ hash: "0131b30e21796e0ea9ad1484ac7ac6e4"
}
- Frame {
- msec: 23264
- hash: "8443c45791c906a9fe23831844f48a1c
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
index 5f43f95145..5c8ff52405 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
@@ -85,6 +85,6 @@ Rectangle {
height: 50
x: 200
y: parent.height - 50
- color: blue
+ color: "blue"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
index 6c827779f1..c675be7235 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
index 07b1f7c913..9f605c3598 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
index f2f08c083a..35572c539f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
index 08649f959c..20146c932f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
index f9c2f17a6f..85fac8913a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
index 52ec0bd132..e522baee9a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
index 3fe25befa1..ec0ba86cae 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
index 4cc12a60d1..20cacc8193 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
index 2267f2326b..b2b187db01 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
index 6c827779f1..c675be7235 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
index 67aa10a0db..a3e5ea0f02 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
@@ -122,27 +122,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "96ad89eafa7f99269518a192573af91b"
+ hash: "c33447c78ea64452ec3cd1696fb502eb"
}
Frame {
msec: 464
- hash: "735b00b968d0e2ea1f34cc0bdc028a8e"
+ hash: "159004854f8c07144034e1265cf6f44a"
}
Frame {
msec: 480
- hash: "ce37c8e15fbb1aea72aff9629683fa96"
+ hash: "a3f2471ef4ceac77a1c20ac327550d8d"
}
Frame {
msec: 496
- hash: "a3f2471ef4ceac77a1c20ac327550d8d"
+ hash: "1121efa0df5057387be08fced62fe9eb"
}
Frame {
msec: 512
- hash: "28f120bd3bda9552dbc8cc908409c67d"
+ hash: "67ad85cda0b8fb382cb536ef880f715b"
}
Frame {
msec: 528
- hash: "f21cf0ed746fa48e67dc90c70c5bbae8"
+ hash: "4de18d32c93ca5cd77cb45c8c4f3b4fc"
}
Key {
type: 7
@@ -154,19 +154,19 @@ VisualTest {
}
Frame {
msec: 544
- hash: "485d55730366b68e01582879f6970fa1"
+ hash: "de26f0243101d57f4acf42b256ad75f9"
}
Frame {
msec: 560
- hash: "700e53c78b28993dce5dafb4035f4760"
+ hash: "119ea359724d5f4ba1e1aa120cddf3ea"
}
Frame {
msec: 576
- hash: "1e538e175a5e402e2334cf354392e8a7"
+ hash: "65fbee28f9ea68a6f2736d75a65b3ee2"
}
Frame {
msec: 592
- hash: "0fbfba93eebaf05ae60067b365b6b4bc"
+ hash: "7b1893397b76b0c95094eeca1dd21446"
}
Frame {
msec: 608
@@ -206,31 +206,31 @@ VisualTest {
}
Frame {
msec: 720
- hash: "25e48099a8194ed2674651818d854c61"
+ hash: "7b1893397b76b0c95094eeca1dd21446"
}
Frame {
msec: 736
- hash: "b75d02dfc238ba2292306ca1421279c3"
+ hash: "6123118055b4d0678eb2b7cdf8b12592"
}
Frame {
msec: 752
- hash: "7e48b7d9c1291b4e438c81f44228d8ad"
+ hash: "fe4b009abe081a6eaeab6ef9e996f3fd"
}
Frame {
msec: 768
- hash: "fe4b009abe081a6eaeab6ef9e996f3fd"
+ hash: "2f23f647daa1c11637d6a21c2668be49"
}
Frame {
msec: 784
- hash: "edea8c305fe88708dbafc03e427caa09"
+ hash: "62d995a1feb7f600669c1c7ef5f6a5da"
}
Frame {
msec: 800
- hash: "7b58803f12d0ab893acf539799d79e31"
+ hash: "66e881ee93f4722605a63dccd083635d"
}
Frame {
msec: 816
- hash: "9b56c3d1d140114dcc57d0a8568e9b95"
+ hash: "27ac08cc4f62552a9d1c1cbf781a00f9"
}
Key {
type: 7
@@ -242,15 +242,15 @@ VisualTest {
}
Frame {
msec: 832
- hash: "35e38e273dbc8e565917b21d00fc1530"
+ hash: "792be2ec5a08ad74cda4c19b6bc209d0"
}
Frame {
msec: 848
- hash: "116e294391333e8780daeca54c3d51ea"
+ hash: "0d28add40afd81f768603ea3e396f0b3"
}
Frame {
msec: 864
- hash: "6219676215f82540d7a53b2a8aa60279"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 880
@@ -334,15 +334,15 @@ VisualTest {
}
Frame {
msec: 1168
- hash: "2667c2596de97dc15353158eba03495f"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 1184
- hash: "6a7b64e1427dcb7e438aa09a739cbc7b"
+ hash: "eac6b1299cb386f2be244b43a0be26ae"
}
Frame {
msec: 1200
- hash: "5bad6dc745958f5827403ea593c78752"
+ hash: "14350c877f5259a3cb3836fa5f8ff563"
}
Key {
type: 7
@@ -354,31 +354,31 @@ VisualTest {
}
Frame {
msec: 1216
- hash: "b393401219ada7d094a451dba8af3f1a"
+ hash: "582bfeca87cba0dee21b9551e583ec93"
}
Frame {
msec: 1232
- hash: "ba656452f8adf3d1ca7db9286274c37f"
+ hash: "cefe1139141fa381e55f1254713a1380"
}
Frame {
msec: 1248
- hash: "1e9725c8c364a491f34035fad1f77c63"
+ hash: "72e966a995c818b16b48bb193eda241a"
}
Frame {
msec: 1264
- hash: "a0aef0b65446dec0673b5cec3a260390"
+ hash: "8dfeefd93687861158ca4496e56cdbb9"
}
Frame {
msec: 1280
- hash: "d60c11a5d376af0831d6f05f2a839a92"
+ hash: "daf8474f1f583039f6a14b822e5dff5e"
}
Frame {
msec: 1296
- hash: "1dd2c456c6ee9cc8f9be0e9f3617d44b"
+ hash: "eb2b4ba7ffab22660d0b9de4226ea88f"
}
Frame {
msec: 1312
- hash: "56208e6551e2f4202bab2d62a1cf46a2"
+ hash: "f0f00d22d15ed9828db7b5f3a3669fe9"
}
Frame {
msec: 1328
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "f0f00d22d15ed9828db7b5f3a3669fe9"
+ hash: "caa3c1a106d549e6bb94a1746bd7a53c"
}
Frame {
msec: 1680
- hash: "153e7984089530bbd052c9e4f62eb14c"
+ hash: "66e158aa7dd78362dffddf2a9e7375ef"
}
Frame {
msec: 1696
- hash: "0525d40cc58d054a3abd7ee2486576f8"
+ hash: "8c23d5245774ab5252c98c19c33f8171"
}
Frame {
msec: 1712
- hash: "8c23d5245774ab5252c98c19c33f8171"
+ hash: "bf37dc941e49af9bd1e0e182a4ef6f0a"
}
Frame {
msec: 1728
- hash: "5ca243794d1350f04cf973d4bfc8ab89"
+ hash: "3fc025193fa6d6db0428ae1fa179bf55"
}
Frame {
msec: 1744
- hash: "d19b7f4c0897aba498e122d83b4cbbf1"
+ hash: "9efef22e6e29e18b2896982440c7bbae"
}
Frame {
msec: 1760
- hash: "99e41460dd8efc6e5c3faf54b14c3d43"
+ hash: "380e92b30430d3f589a88e67b7b959bd"
}
Key {
type: 7
@@ -510,15 +510,15 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "703469f8b133156ed3aabe02762d66c3"
+ hash: "80329cd1548c4ff9ee589d56e9d8cd90"
}
Frame {
msec: 1792
- hash: "1cc2c383e988048db76a80d8d7f5a0e2"
+ hash: "6030c139032fc80abb5aabb85d8dfa4d"
}
Frame {
msec: 1808
- hash: "8e87117c19eb9d6e600c44e0f3869ae1"
+ hash: "8304d2432168a2ea8a887d9a135b40b4"
}
Frame {
msec: 1824
@@ -574,27 +574,27 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "4924037ce643d0748b8b2c666e61fd62"
+ hash: "8304d2432168a2ea8a887d9a135b40b4"
}
Frame {
msec: 2016
- hash: "ef9750584e669a8b2d415d13854e12a6"
+ hash: "719eabf9ad7e15d5429630c7f7136980"
}
Frame {
msec: 2032
- hash: "69937eacef6e6b11ad1d5741c69a1faa"
+ hash: "a1bd870fffd95a0604dd8e170e571632"
}
Frame {
msec: 2048
- hash: "a1bd870fffd95a0604dd8e170e571632"
+ hash: "b406160dda839ee34002190e05ceffac"
}
Frame {
msec: 2064
- hash: "a3a72386594aacc88977cdaa6441df48"
+ hash: "a139784af7675281f0f3760a932aef0c"
}
Frame {
msec: 2080
- hash: "6d8e89de38d52f0f0f871dfa18361cb5"
+ hash: "2c7d2f857919deae0a8ad6dc2f7d806f"
}
Key {
type: 7
@@ -606,19 +606,19 @@ VisualTest {
}
Frame {
msec: 2096
- hash: "96cfb1eb6893fac86c9434d1ffb82fcb"
+ hash: "80af5431f6d9a77f98c23d913c6caad4"
}
Frame {
msec: 2112
- hash: "5e11df1660634ff317be474118174ec5"
+ hash: "b3ccaf648e09dbfcbaa7609440c63fc9"
}
Frame {
msec: 2128
- hash: "2eb75858b50c3a9a80673ab89014ed63"
+ hash: "d267f9f4dd471be1cf4718d212c79887"
}
Frame {
msec: 2144
- hash: "3ff5d66f7902af92d49ebebf04d16c26"
+ hash: "570da61e2d48acd11474fe005110ab4b"
}
Frame {
msec: 2160
@@ -678,31 +678,31 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "efeda5b2d97e1b7c22e2308250501cb7"
+ hash: "570da61e2d48acd11474fe005110ab4b"
}
Frame {
msec: 2368
- hash: "d6158379b699279f66b94a8418e53af1"
+ hash: "db27d4cc92c09148675e76459d8ecb15"
}
Frame {
msec: 2384
- hash: "ab960b0669fa594e0552df623a9136ea"
+ hash: "2c6f60eb170588a8450c679f3b16a6a4"
}
Frame {
msec: 2400
- hash: "0ebf6be1305ee1eb8740f4d0365ef4c5"
+ hash: "024a4d4fc9a11d352d1e0f5ee7f7dbc8"
}
Frame {
msec: 2416
- hash: "46cde47dffc6f2687c8c643eca09b95d"
+ hash: "c966b518b881f85a2d1cc86f5284ee1b"
}
Frame {
msec: 2432
- hash: "2b8698ce02a6964115d960ae19f40c37"
+ hash: "db15811f2d2cff0949213823649ef1d4"
}
Frame {
msec: 2448
- hash: "ff1e7d800bb27b41710c50554adc1091"
+ hash: "bbd9fad235aa2843bf2b64f3cf24f4e3"
}
Key {
type: 7
@@ -714,15 +714,15 @@ VisualTest {
}
Frame {
msec: 2464
- hash: "5837b3aca09038cae23dcb149acc8b0b"
+ hash: "ccbc2f09ed263375e7b52f556fb2836f"
}
Frame {
msec: 2480
- hash: "dbe7c571cdbdb9de4fd01faa6d5374cf"
+ hash: "c3b74e90fa99f4357762b57b9317b6f5"
}
Frame {
msec: 2496
- hash: "f431abcaf05f49ead909296d7649f8a9"
+ hash: "4f2fafdb59db544352e3067d67c0a714"
}
Frame {
msec: 2512
@@ -806,23 +806,23 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "4f2fafdb59db544352e3067d67c0a714"
+ hash: "043583b19c921740dbc990afd4f508ed"
}
Frame {
msec: 2816
- hash: "4dcd4cdf6f4e305732185ec52cd2f2f6"
+ hash: "64fdbc9a930e44dcc38542f720b41b0a"
}
Frame {
msec: 2832
- hash: "dfd3c29b0520edbbee57dfacfa7e2b30"
+ hash: "257d3d8bcf78671d35a898befec091cb"
}
Frame {
msec: 2848
- hash: "257d3d8bcf78671d35a898befec091cb"
+ hash: "92a51faf52bdc7f895bdc08f049f6ed3"
}
Frame {
msec: 2864
- hash: "20e89c544284603943396694abe86756"
+ hash: "5aec71e84a4e9c4962ed73c39d337910"
}
Frame {
msec: 2880
@@ -830,7 +830,7 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "b88c6af89423b32b3a4413035711df03"
+ hash: "534973232974b7ee999172269d16c499"
}
Key {
type: 7
@@ -842,15 +842,15 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "e34de13af44c449c9ecc86e06ce01ed2"
+ hash: "32faa54e636773747a2ec4065a11c337"
}
Frame {
msec: 2928
- hash: "98ffe81129aa7cc7325764221f1dae59"
+ hash: "ebe24b814e27cd8a8db78da58c8f86d7"
}
Frame {
msec: 2944
- hash: "db2d545de9879362738e71a02a3d1d26"
+ hash: "e67ae32a47213b360c1a445bf645dde2"
}
Frame {
msec: 2960
@@ -902,27 +902,27 @@ VisualTest {
}
Frame {
msec: 3120
- hash: "02d8c90faf56c65252e4f938944bda7b"
+ hash: "e67ae32a47213b360c1a445bf645dde2"
}
Frame {
msec: 3136
- hash: "a32994e2320e357241f63b956b6db236"
+ hash: "d446b94a2e3d9f7091c5520852d1a215"
}
Frame {
msec: 3152
- hash: "9ada466c26c217adbcd7a93df264ed75"
+ hash: "79d1a3489be95d113e8c611a2ba63456"
}
Frame {
msec: 3168
- hash: "79d1a3489be95d113e8c611a2ba63456"
+ hash: "95601b7d8ab689142ca89343743b55b2"
}
Frame {
msec: 3184
- hash: "d3aa82455c4ae3ac25097354e132a30f"
+ hash: "ad67049e51eafbbc33d1e3763d78b5f9"
}
Frame {
msec: 3200
- hash: "62d12e5933ed4ed048ccafd229f4b2b7"
+ hash: "69b1d558065ee9b9719c3ae8f08b52ab"
}
Key {
type: 7
@@ -934,19 +934,19 @@ VisualTest {
}
Frame {
msec: 3216
- hash: "5bc4ac94ae20e425084d0811dee1ba08"
+ hash: "858fd65adb231bf2002bcc25075be261"
}
Frame {
msec: 3232
- hash: "6d5113e3732dc7a9172eea3667a01f7b"
+ hash: "2dc6fb114e1d2a606efe48f349251504"
}
Frame {
msec: 3248
- hash: "e435a2588b25d3336f290331931f5981"
+ hash: "e4819f09d6640021408e03c50090e849"
}
Frame {
msec: 3264
- hash: "bce201adbeb319b181cce139f179d7f0"
+ hash: "5fa3ec31176bed2de8cb076b87e0be74"
}
Frame {
msec: 3280
@@ -1006,31 +1006,31 @@ VisualTest {
}
Frame {
msec: 3472
- hash: "8f0f3cd35ae92047f23084f447046eb8"
+ hash: "5fa3ec31176bed2de8cb076b87e0be74"
}
Frame {
msec: 3488
- hash: "ceb12e6c5e9f0566039040d9f3ff587f"
+ hash: "6c84f5e6d352ed345a0bed12c50bf7a9"
}
Frame {
msec: 3504
- hash: "dfd0c89c3ea73aceefcdafa71609c720"
+ hash: "15690df807a7c1e9aa9d7e9154c1a492"
}
Frame {
msec: 3520
- hash: "8d8ed1a9dc6a9f74dfc81b79f02af4c5"
+ hash: "3d6cc3e0d93ddf4b66321fda361f05c0"
}
Frame {
msec: 3536
- hash: "d450bd62e03e1e4c7cb66e98ece05f97"
+ hash: "8e3526ffeb9873b55b3bae2827391628"
}
Frame {
msec: 3552
- hash: "d1ece2210cd24eedd5361e5c3a162236"
+ hash: "33097267d43a7e16a78102cb91c9fd42"
}
Frame {
msec: 3568
- hash: "77589e48b9db95e702055753046319e5"
+ hash: "17ab2623432bba92dc9d99e5764e626e"
}
Key {
type: 7
@@ -1042,15 +1042,15 @@ VisualTest {
}
Frame {
msec: 3584
- hash: "7793263ecb831a1e63fbd76c8addde03"
+ hash: "9945a723d9a3399bb5311eea3d9b0b77"
}
Frame {
msec: 3600
- hash: "bfa9675f981c37fed27dea100226f61a"
+ hash: "e6e9251cd6d941a050beaa36b851e314"
}
Frame {
msec: 3616
- hash: "9780849fe8abd22c32ccafcdd46b0d65"
+ hash: "a61dbcb7d914afe34009085bf37fb8e2"
}
Frame {
msec: 3632
@@ -1138,31 +1138,31 @@ VisualTest {
}
Frame {
msec: 3936
- hash: "a61dbcb7d914afe34009085bf37fb8e2"
+ hash: "e63d987ba303a42046827f14941b444a"
}
Frame {
msec: 3952
- hash: "89175b83b4f7ee4b5d99219cdc97aa59"
+ hash: "9942059cb380dbae191850d2e7175906"
}
Frame {
msec: 3968
- hash: "f524421286503f6175e4ad71dd89145f"
+ hash: "ca5af7d98a008eccba1e21be0da61f3c"
}
Frame {
msec: 3984
- hash: "ca5af7d98a008eccba1e21be0da61f3c"
+ hash: "abb95ac1408d34e2eb319e5396511d65"
}
Frame {
msec: 4000
- hash: "77c19e7e17e00787ff0d7a4e7bad7bc8"
+ hash: "183df6d4be489280181f01a0c0ed3cde"
}
Frame {
msec: 4016
- hash: "04c8db761e324101ad92e0ac9ceed7d4"
+ hash: "64733a4d609c621765d114a6b482dc57"
}
Frame {
msec: 4032
- hash: "97a3dcb81349efab6b44d458e83ce5c4"
+ hash: "897aa5b42e48a7235ab4fdded5876da2"
}
Key {
type: 7
@@ -1174,15 +1174,15 @@ VisualTest {
}
Frame {
msec: 4048
- hash: "e86ebc276b88705c97cc9efb66ccc6b2"
+ hash: "c80f01a1e683d84bfa0821832c113820"
}
Frame {
msec: 4064
- hash: "a134bbfd14879f13b288a04d23382348"
+ hash: "e7065bf6934c7fb7b160ae5c169633e4"
}
Frame {
msec: 4080
- hash: "9530ad3f58ad1c66401572869f7d91bc"
+ hash: "db3d030de94b19ea1db5c60be7c7ca5c"
}
Frame {
msec: 4096
@@ -1230,31 +1230,31 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "980e0fa84fd3bab496623936f5f220a2"
+ hash: "db3d030de94b19ea1db5c60be7c7ca5c"
}
Frame {
msec: 4256
- hash: "ed3268911723d664699bbc31317befc1"
+ hash: "917c11b16c6286bea7a37990d7fa078f"
}
Frame {
msec: 4272
- hash: "3bfda4b3b0b2d2a97ec1c0b5b3f4da63"
+ hash: "1616c6def28659d51905564ff83cc112"
}
Frame {
msec: 4288
- hash: "1616c6def28659d51905564ff83cc112"
+ hash: "fce04972557736a8dfa8de5f1a605ddb"
}
Frame {
msec: 4304
- hash: "68342f34c18956d3a093f8eeeae6977e"
+ hash: "6acffcea115f8a777f62c1f68cd25fa6"
}
Frame {
msec: 4320
- hash: "ac1b12959e9055a28fe2bda0a12b75bc"
+ hash: "f96ae6a4f437cf98b268fc0b0611ddc4"
}
Frame {
msec: 4336
- hash: "009b85ff6b86e418c78ed33a5e88d3f1"
+ hash: "c9e14157dca547623497a6107f14b73d"
}
Key {
type: 7
@@ -1266,15 +1266,15 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "59753bc7dc69767fe2109fdc41f20dae"
+ hash: "6489766ed84c4b6ff26de24cb74848cb"
}
Frame {
msec: 4368
- hash: "1c87d3d8c8d564d4d95a26f57fd28f38"
+ hash: "9d229c10853b30ed048b892953c5d86c"
}
Frame {
msec: 4384
- hash: "4e43b7b6787002c9013010dd74c83f49"
+ hash: "2476aa1a7191b485a76c76e98c9be2b0"
}
Frame {
msec: 4400
@@ -1338,31 +1338,31 @@ VisualTest {
}
Frame {
msec: 4608
- hash: "84de5b5e8b0fba190a783c72967661c7"
+ hash: "2476aa1a7191b485a76c76e98c9be2b0"
}
Frame {
msec: 4624
- hash: "60b696f4913379d28f300fd1b531c6cb"
+ hash: "12f17d727d70269fd98a0f6524c9f750"
}
Frame {
msec: 4640
- hash: "d01e651d9094332fd82ad1cea3e93e9d"
+ hash: "e73d64ebe242eae0f412ca463c76085d"
}
Frame {
msec: 4656
- hash: "87be4cd7c894b03b2b64c996e915d71f"
+ hash: "f37a468e04155c880e707d1d12f71f94"
}
Frame {
msec: 4672
- hash: "b07fccb0c5565d2feed5a9fcdf8acead"
+ hash: "3789293a6b8791d8e60b5160fc457345"
}
Frame {
msec: 4688
- hash: "3dca3165fd34be549d21fb6c414c67d8"
+ hash: "7d8377c816f19fa32d847a30d1c71da9"
}
Frame {
msec: 4704
- hash: "5f69f3298f8ca73fa9b3b6e630c60186"
+ hash: "b9867dbb6f03d5970076251e10e47f16"
}
Key {
type: 7
@@ -1374,23 +1374,23 @@ VisualTest {
}
Frame {
msec: 4720
- hash: "d7f41e9a29d550a7d9a41bb947569abe"
+ hash: "0604bbd1afdfee5881d9d9d79a67a3df"
}
Frame {
msec: 4736
- hash: "4ede2e90ad216a2d44580c50a25dea23"
+ hash: "93401cdfa6cc7fbbfc479faa0bc1d63f"
}
Frame {
msec: 4752
- hash: "9b339845ee588b789dc9095c272e0bdf"
+ hash: "aa379c70dd6a94a55fd8c065331ad47b"
}
Frame {
msec: 4768
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4784
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4800
@@ -1398,91 +1398,91 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4832
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4848
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4864
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4880
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4896
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4912
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4928
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4944
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4960
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4976
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4992
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5008
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5024
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5040
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5056
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5072
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5088
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5104
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5120
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5136
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5152
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Key {
type: 6
@@ -1494,31 +1494,31 @@ VisualTest {
}
Frame {
msec: 5168
- hash: "d6f0a6d7604bad811eeba13fd7c45368"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5184
- hash: "5f92e1531a3f6c21ec82e3c908167fc7"
+ hash: "c58f071ae4efde5cd265fa6e82dda56b"
}
Frame {
msec: 5200
- hash: "5214e99ff052dcdc8f85bad29de92e03"
+ hash: "bea9eadda7b015d0e9a0f05924e723f7"
}
Frame {
msec: 5216
- hash: "d4abed9f0f1115c9a45b0b9b4f54754e"
+ hash: "c255da63dc59ca7555c91701ed373fd5"
}
Frame {
msec: 5232
- hash: "cfae8a0281e704b0e62f6bf31b32800f"
+ hash: "fa0a697341baae4b3aa4dee721ef10a2"
}
Frame {
msec: 5248
- hash: "c203f0674596ae690bf19f2d49be62ac"
+ hash: "2d2148840143772fab6b2405bf5eb609"
}
Frame {
msec: 5264
- hash: "2e2c7e05aade104bdc4f6c489b6f0601"
+ hash: "3716705b5f7caa86eecc1dfafe31ebcf"
}
Key {
type: 7
@@ -1530,51 +1530,51 @@ VisualTest {
}
Frame {
msec: 5280
- hash: "b4b2148b0557dcab3a441165e5e4de5f"
+ hash: "35cfea054566eae3bcc9c8a41caadcdc"
}
Frame {
msec: 5296
- hash: "c5e791d27a42a63d25cdbd492b4af29a"
+ hash: "916858ff0ca4370840d072c389242a2b"
}
Frame {
msec: 5312
- hash: "0f94ebcb407f8e6ae263bd954f2c8177"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5328
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5344
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5360
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5376
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5392
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5408
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5424
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5440
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5456
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Key {
type: 6
@@ -1586,31 +1586,31 @@ VisualTest {
}
Frame {
msec: 5472
- hash: "6fdfe69e377da72e04dc130f5677ed2c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5488
- hash: "c041d26d43766fa1735f2ada2a43225b"
+ hash: "191f2c80617cef61a2890977c3079ad2"
}
Frame {
msec: 5504
- hash: "aa62dbd6c6256665ee1b4ef468607978"
+ hash: "0902ef220363ad2c08f09199278cecf8"
}
Frame {
msec: 5520
- hash: "987fcdf6483a83b1242053f4e7fb7a26"
+ hash: "d28ea1b1e01588bbb767a5599c5345d2"
}
Frame {
msec: 5536
- hash: "fbde70c34709b68eb22f5460a8815fba"
+ hash: "36eeaf2755fffefc32bcd580fade6305"
}
Frame {
msec: 5552
- hash: "911ddc838ebaf5ade1bb026dff2741ba"
+ hash: "51560b23e44e5548875b13ff6dc6ee8d"
}
Frame {
msec: 5568
- hash: "120bbf35b2a3b756bdeaea0df43e49b2"
+ hash: "082abbc9ecd0bf39619819aa526c021c"
}
Key {
type: 7
@@ -1622,47 +1622,47 @@ VisualTest {
}
Frame {
msec: 5584
- hash: "ea93e33c079d6dc5fb18c69fb4fed441"
+ hash: "ab956d21f8ea55dad590b3cafc887585"
}
Frame {
msec: 5600
- hash: "b9ac8ab01cb59b1fee11967bdb6d2dd6"
+ hash: "9501050f547de1de0d280a839e35e120"
}
Frame {
msec: 5616
- hash: "3ff266bf29cbcaa30bc1e7af5dd9866b"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5632
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5648
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5664
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5680
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5696
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5712
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5728
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5744
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5760
@@ -1670,15 +1670,15 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5792
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5808
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Key {
type: 6
@@ -1690,27 +1690,27 @@ VisualTest {
}
Frame {
msec: 5824
- hash: "de1f83d25751639dff42f1755a6534c3"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5840
- hash: "edefdea8b2461d03fb97cf5ed66e9b6d"
+ hash: "6aefcf9976f5910376a583b020c8dd4b"
}
Frame {
msec: 5856
- hash: "cef1886397e3932a511f37571b5011f4"
+ hash: "971ca1e2537d52f352c889817e353736"
}
Frame {
msec: 5872
- hash: "05589ad354314d9e04ef90c1addd99f5"
+ hash: "f1f0599e7f4ba2fb869e886a2e7ff216"
}
Frame {
msec: 5888
- hash: "ff88b52e3755b9b4785d2719ddd4f090"
+ hash: "8bf62b11cd4ec99ae41752e1a9a9c7ca"
}
Frame {
msec: 5904
- hash: "f59edc3016b177a2e8faa6612d718b17"
+ hash: "f2fcf6ad484b240373822c2450dd5305"
}
Key {
type: 7
@@ -1722,131 +1722,131 @@ VisualTest {
}
Frame {
msec: 5920
- hash: "dc673a7cdd927f70b28ebcfe51cd3d89"
+ hash: "f999073e6303ff5658012dabbef4ee8e"
}
Frame {
msec: 5936
- hash: "3abec0da85fb663e63ab22188e092827"
+ hash: "c35ef3056155d8d30dd4b9e6299ac68f"
}
Frame {
msec: 5952
- hash: "50c2c8ac68cafad7c47b576cd8f4a037"
+ hash: "0326908135c0d693f2fc99c9e02d8f94"
}
Frame {
msec: 5968
- hash: "06c31b861e2b96e6595b2244d7b3f4d5"
+ hash: "b0def7204463648dac117ddcc2241c3e"
}
Frame {
msec: 5984
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6000
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6016
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6032
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6048
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6064
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6080
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6096
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6112
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6128
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6144
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6160
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6176
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6192
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6208
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6224
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6240
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6256
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6272
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6288
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6304
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6320
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6336
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6352
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6368
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6384
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6400
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6416
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Key {
type: 6
@@ -1858,31 +1858,31 @@ VisualTest {
}
Frame {
msec: 6432
- hash: "7f52a770775c19e10784b4c5f7874210"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6448
- hash: "827cfb74286a2a80aca8b6c5277d6cfd"
+ hash: "5531bf9affacf58945c6c54c5d14c9c9"
}
Frame {
msec: 6464
- hash: "8399231eda9b66821d43a3d8c4c7d645"
+ hash: "ebc8f36eb0fc7d40bf9f268ef03522a0"
}
Frame {
msec: 6480
- hash: "fc163583671f3c4023361460b436c895"
+ hash: "621a3c318fc259ed27ae050d70d46d39"
}
Frame {
msec: 6496
- hash: "893dea6496c95c32095ad1d673e500c2"
+ hash: "688bea0c0c864d9bc4204cf06b480d3a"
}
Frame {
msec: 6512
- hash: "808c7403b2cdcc882059da56a2f806fe"
+ hash: "8419262c19c40172b93c74d34cad12cb"
}
Frame {
msec: 6528
- hash: "7466b2e5b86ba8ad46be75818659786c"
+ hash: "57ce65a4ebe51c14ee69083f90ed5b80"
}
Key {
type: 7
@@ -1894,47 +1894,47 @@ VisualTest {
}
Frame {
msec: 6544
- hash: "dd2561cd780e24401130305d47757a53"
+ hash: "43827ad5cb4173a8a5d434b167f68761"
}
Frame {
msec: 6560
- hash: "bee89299532d43fc3e6c3e69c343b381"
+ hash: "13e3e00ec3c11d6ca3e51a7aba0e1a97"
}
Frame {
msec: 6576
- hash: "94f8474aedee94098592c05d8fc7d868"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6592
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6608
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6624
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6640
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6656
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6672
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6688
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6704
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Key {
type: 6
@@ -1950,31 +1950,31 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "ccd58be20d47422121d6ef799b927a7a"
+ hash: "b6c7ad2c8e305ea5478a2307aa71b16b"
}
Frame {
msec: 6752
- hash: "e090c7f39649786a1796870e25bd0f0d"
+ hash: "bb4674d0de11e4f625e6db940b4ec06c"
}
Frame {
msec: 6768
- hash: "acf3dcd9f4a869169dbc1ae7fe60e9d0"
+ hash: "26f602a711cea77e5c7be08a93981306"
}
Frame {
msec: 6784
- hash: "51795e9a720845e8305d23507785e1ca"
+ hash: "5346bc8b1711a6679867d81efb9da563"
}
Frame {
msec: 6800
- hash: "0d34a43e177e6b73e2ff9155747d0385"
+ hash: "3aa4d335a91be2bf2616d61fa7719ce5"
}
Frame {
msec: 6816
- hash: "1876c3cdffc1af01da1aaa0ac636d0a8"
+ hash: "2bad8dd039a35f11ba86b409bbcea6fe"
}
Frame {
msec: 6832
- hash: "3131296b6edf4190520e2cdb3f8b936e"
+ hash: "20e4b381a6bed27e9e64d2eeda7870da"
}
Key {
type: 7
@@ -1986,51 +1986,51 @@ VisualTest {
}
Frame {
msec: 6848
- hash: "ee92f0a764e5081b130e205a5c362b07"
+ hash: "e96eb16671f26f04a72498bc3ab54f06"
}
Frame {
msec: 6864
- hash: "8737ea2c60aeb215228c00a7fddd1baa"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6880
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6896
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6912
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6928
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6944
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6960
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6976
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6992
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7008
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7024
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 6
@@ -2042,35 +2042,35 @@ VisualTest {
}
Frame {
msec: 7040
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7056
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7072
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7088
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7104
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7120
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7136
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7152
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 7
@@ -2082,111 +2082,111 @@ VisualTest {
}
Frame {
msec: 7168
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7184
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7200
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7216
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7232
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7248
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7264
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7280
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7296
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7312
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7328
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7344
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7360
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7376
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7392
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7408
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7424
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7440
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7456
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7472
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7488
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7504
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7520
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7536
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7552
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7568
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7584
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 6
@@ -2198,23 +2198,23 @@ VisualTest {
}
Frame {
msec: 7600
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7616
- hash: "eb0d1be15f63af6eaf6634b02e5f240a"
+ hash: "6e26f05f7a2531620ed4a25073e0f0c5"
}
Frame {
msec: 7632
- hash: "2423c305bebb3449e87c78e8fb447c88"
+ hash: "9fe693b6b53763ffc1b94d157252b18c"
}
Frame {
msec: 7648
- hash: "f0ede6ea85647728db80878b3e525edc"
+ hash: "49aae47da204d4104757b4420df7413e"
}
Frame {
msec: 7664
- hash: "387d127b2b000dc344ee4768cf2d29b2"
+ hash: "ecd7456cb5ba2034c766e1ec298c2ebf"
}
Frame {
msec: 7680
@@ -2222,7 +2222,7 @@ VisualTest {
}
Frame {
msec: 7696
- hash: "1d0d8100e994c16d7973ad9a97b0068f"
+ hash: "e8b6316baae781ca5390bc86528194c0"
}
Key {
type: 7
@@ -2234,71 +2234,71 @@ VisualTest {
}
Frame {
msec: 7712
- hash: "95fb4a6d0331ffc4773e39ec8c3e6511"
+ hash: "e11fcb0e62d7f6bfb40b7336e89ff014"
}
Frame {
msec: 7728
- hash: "34738f16150228d971972833d4bd5c8f"
+ hash: "5a07fa8768ebfb938204e500f4a09253"
}
Frame {
msec: 7744
- hash: "9b71c8dacc530f32d7c6f409928caf5c"
+ hash: "1ee3a4780979f69cd7926df3d4c18731"
}
Frame {
msec: 7760
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7776
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7792
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7808
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7824
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7840
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7856
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7872
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7888
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7904
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7920
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7936
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7952
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7968
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Key {
type: 6
@@ -2310,15 +2310,15 @@ VisualTest {
}
Frame {
msec: 7984
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 8000
- hash: "0587fc809c38c3bbe1fbac2960596974"
+ hash: "1306bb76c161e84e2e5307a0ebc34393"
}
Frame {
msec: 8016
- hash: "d20eba806cf4730a850db4c095fa36f9"
+ hash: "a97cbb851cf1fdeb428ee36042be52e1"
}
Key {
type: 7
@@ -2330,59 +2330,59 @@ VisualTest {
}
Frame {
msec: 8032
- hash: "c1663e75ba05b341e1e970a451958ea0"
+ hash: "e79ccbe112066ded3276aa7feb2e7848"
}
Frame {
msec: 8048
- hash: "ea40cc33b689d6b42fc5a69fa30178e4"
+ hash: "9cc673f743e2018cf9a6d815fe76dc80"
}
Frame {
msec: 8064
- hash: "a07a1c61de1813158ff743cd326ee427"
+ hash: "8179262829f88ee4bbb9537b29ab56ee"
}
Frame {
msec: 8080
- hash: "6dfddaa340df8999ca77f6a6e4c6c3ce"
+ hash: "3810cc1b5902259c22bce0118497aaf3"
}
Frame {
msec: 8096
- hash: "76ca40bb169c1ddc291847d4be2d38d7"
+ hash: "d41c5a6fdfafb2263e7c35a927f7753c"
}
Frame {
msec: 8112
- hash: "e44778541b76208981a3944a64235cac"
+ hash: "e54d0179d62b7cdec96218c3a0ef110d"
}
Frame {
msec: 8128
- hash: "fdf45ea650d31957cc675c3bec8bf53e"
+ hash: "da89e8408417b99582ffd825c2226bf4"
}
Frame {
msec: 8144
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8160
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8176
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8192
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8208
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8224
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8240
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Key {
type: 6
@@ -2394,27 +2394,27 @@ VisualTest {
}
Frame {
msec: 8256
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8272
- hash: "338481e6390f2a61e975084c16427584"
+ hash: "2fcac6c204d45d6fbab76c3d07e2c8ad"
}
Frame {
msec: 8288
- hash: "8923c45c23b1f4250b7d1e483b07a4da"
+ hash: "78602c9ac9dbd6c34ef539799513d874"
}
Frame {
msec: 8304
- hash: "b21de834906d0eecea985561e2e41e4f"
+ hash: "02f8d434d50af8fa6063a4f03dabe2b1"
}
Frame {
msec: 8320
- hash: "a8c9761cfb20631520ed890cd2648c4b"
+ hash: "ff5da7b1a1467418bc712c0ac33c878f"
}
Frame {
msec: 8336
- hash: "abf96a042ef12190bc48ff49732ef55a"
+ hash: "2aed8048e5040ebda3bdfdf4a57d08eb"
}
Key {
type: 7
@@ -2426,55 +2426,55 @@ VisualTest {
}
Frame {
msec: 8352
- hash: "5b9506dfb038cd26dfc81ecd2406ada9"
+ hash: "c6b50c1a6a843aa9484c48e4bf073e4b"
}
Frame {
msec: 8368
- hash: "be75b8d39f81b2fdaff01469bfc67d4a"
+ hash: "a08ef172dfb72151108e81cacfaa964f"
}
Frame {
msec: 8384
- hash: "488aa2977f349df82b5f6ae5e3619d35"
+ hash: "a2a755231d0eee686aa38cd4d4b417f2"
}
Frame {
msec: 8400
- hash: "d69f17f0ce8537511353d20b59d20de0"
+ hash: "5c598e26c1b65796b8e68c7d27abbc0f"
}
Frame {
msec: 8416
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8432
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8448
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8464
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8480
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8496
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8512
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8528
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8544
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Key {
type: 6
@@ -2486,23 +2486,23 @@ VisualTest {
}
Frame {
msec: 8560
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8576
- hash: "8f74d33bf95cbf37fdb4521c69373a64"
+ hash: "1aface9c3746488496af48caf23af1a5"
}
Frame {
msec: 8592
- hash: "e33bb4cd12790c9d9992efdd3e23bee9"
+ hash: "c08f9756c9cc453a2544052b15beab5d"
}
Frame {
msec: 8608
- hash: "36f32e34b4093091c4707f26c52896ad"
+ hash: "b70544dc0d5cc18181f0bf40c068410b"
}
Frame {
msec: 8624
- hash: "5ab5e142f8dc883287c116cedbacfd55"
+ hash: "7e8fbce1337b0b04beda76ee54c98285"
}
Frame {
msec: 8640
@@ -2518,19 +2518,19 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "c74212e45a6c4b6a18caeb6a22350609"
+ hash: "4724d0bfd63f248914f18117ba0c6119"
}
Frame {
msec: 8672
- hash: "8919643a7d13677dd902941860093209"
+ hash: "16013089bfe18b35efbd8cd36d37bb0a"
}
Frame {
msec: 8688
- hash: "6f2ab4400fadf51b994351f0975e31fc"
+ hash: "57a857a48922cb252bb4ddc77b29825e"
}
Frame {
msec: 8704
- hash: "4798559ce6f9bd7455ed5385d0030763"
+ hash: "10a46ba67a0c7abe08ea8f80a75040e8"
}
Frame {
msec: 8720
@@ -2586,23 +2586,23 @@ VisualTest {
}
Frame {
msec: 8896
- hash: "fac81cf6f45cb47abc1fa36d23e39d34"
+ hash: "df1797772003dc3dbdd0e245c447bf20"
}
Frame {
msec: 8912
- hash: "862f4deee01183fd38b094da59048b23"
+ hash: "70dd7fd50388196706f72a48ac96963c"
}
Frame {
msec: 8928
- hash: "2f3b147221da30d8857d25fc788b3eac"
+ hash: "439e43c26fc22a6c3a2b8568bfddbfa3"
}
Frame {
msec: 8944
- hash: "5b295b187c6cfc6aefa51e5efc2c27e3"
+ hash: "77e9ea697690a3e5c3965c0bf76055b0"
}
Frame {
msec: 8960
- hash: "fe3139ddc8fdbc1b0c25bd641f83e833"
+ hash: "30226190fa4466b3450ff1f810e85635"
}
Key {
type: 7
@@ -2614,19 +2614,19 @@ VisualTest {
}
Frame {
msec: 8976
- hash: "8f2a9585dc6248a403aafd0f151d6ba0"
+ hash: "9a69afa4de272f00d8a26141fa974f6e"
}
Frame {
msec: 8992
- hash: "39eca8cc6bb8ea30cc452dc24f8e46dc"
+ hash: "1883a34a21ecc690022a6623c67c8ba1"
}
Frame {
msec: 9008
- hash: "8dbbc6026942cb6e572f1cb7e2675713"
+ hash: "e5be5b7e7060fffacaf93b6bf8d051a4"
}
Frame {
msec: 9024
- hash: "62dfa07b96dd18c6be89822654bf09f3"
+ hash: "2667c2596de97dc15353158eba03495f"
}
Frame {
msec: 9040
@@ -2831,7 +2831,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
index c79e19f7fe..95556f14d8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
@@ -38,7 +38,7 @@ Rectangle {
Component {
id: appHighlight
- Rectangle { width: 100; height: 100; color: "white"; z: 3000 }
+ Rectangle { width: 100; height: 100; color: "white"; z: 0 }
}
GridView {
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
index 811e0e4806..0dd9d0e62c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
@@ -1,6 +1,7 @@
import QtQuick 1.0
Rectangle {
+ property string skip: "Last bit is wrong (rest is probably right, just bitrot). QTBUG-14838"
width: 300; height: 400; color: "black"
ListModel {
@@ -45,7 +46,7 @@ Rectangle {
model: appModel; delegate: appDelegate; focus: true
keyNavigationWraps: true
- flickableData: [
+ flickableData: [//Presumably the different way of doing highlight tests more things
Rectangle {
color: "transparent"; border.color: "white"; border.width: 8; z: 3000
height: 100; width: 100
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
index 7321d95c9c..da77af9249 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
index 49d2a5a7c2..578c9e9cc3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
index 6fe14b717c..24c61264fa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
index 463edf8fd6..3fec1effcc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
@@ -10,235 +10,235 @@ VisualTest {
}
Frame {
msec: 32
- hash: "43c0ad5826e8058260951f063f0851ab"
+ hash: "c7eb3936886726f584d1bd99133a199f"
}
Frame {
msec: 48
- hash: "55eb2c9939514338e7ef58c9276fc223"
+ hash: "f7f6eeab119435f0cccd55074b4941bf"
}
Frame {
msec: 64
- hash: "6a1bbb91bf450547d6100b6e61a98f6d"
+ hash: "06f52743e61bf0212971652c500fe5d1"
}
Frame {
msec: 80
- hash: "bdb9b8cab70c72d99aba830eb8e8913b"
+ hash: "1f9dd3a3a0524c60791362f560936f9b"
}
Frame {
msec: 96
- hash: "71a0e046bc68183b830df9dafd8fa147"
+ hash: "42538495fc9d63384a1709476c06d750"
}
Frame {
msec: 112
- hash: "e7228e0ed77e05c661282c2d2fe88b3e"
+ hash: "4d1b53541ffe5cdfcf0e3aa2916b1bac"
}
Frame {
msec: 128
- hash: "93a4c3e501b05844f687a2dd1754aad2"
+ hash: "6a3a683dbd2ad7c89f0788441303485e"
}
Frame {
msec: 144
- hash: "1856ac86313c16bf4874130d9a48ff45"
+ hash: "125a936660dae42969fab4144d166ac6"
}
Frame {
msec: 160
- hash: "3637d8dad4f44c938f91b0800bd9fb2f"
+ hash: "87d008547326ff1bf2c4c2a9d9b99abc"
}
Frame {
msec: 176
- hash: "c5ace4ede38d29363d69c6b4b2f9349f"
+ hash: "0df69d85b37d3ebf0e314a7e89701703"
}
Frame {
msec: 192
- hash: "a5d832d02f4a635052817654df90caba"
+ hash: "7af12cac3bd33c903d6aa6fa8f89b498"
}
Frame {
msec: 208
- hash: "9ebf8bea8abe7ac209d47214a87f8fc0"
+ hash: "424c950111c492ded19df874b938067c"
}
Frame {
msec: 224
- hash: "35b8f5cb18284867be8d27d601394a2b"
+ hash: "bee69a0df1ca8ccc7d83a52f9de34f8c"
}
Frame {
msec: 240
- hash: "a2c4a6063f219af6f2b29b2d21a4265d"
+ hash: "47da1538d818e22d836de57d5c6601ce"
}
Frame {
msec: 256
- hash: "27f25ace7b8e93c55638ed99f49b821c"
+ hash: "fbfb0e177b19d6ef9433619f60dd9580"
}
Frame {
msec: 272
- hash: "4f6511bfbbd8113195a7597eb6dfb219"
+ hash: "23b4f8bb116e8db48db25ccccedba43a"
}
Frame {
msec: 288
- hash: "6a696159cdbb51a67064c600124535d1"
+ hash: "13f0847f1b86f880690692066cde21c7"
}
Frame {
msec: 304
- hash: "6cd667eb352256dbb728532634e7ffd0"
+ hash: "639ca4c978bea080139b219c75bf01d1"
}
Frame {
msec: 320
- hash: "28fa16c8936bf86a8426ded306aa2b8c"
+ hash: "19debcaa7bbde930eda2fd08ac1e9d8a"
}
Frame {
msec: 336
- hash: "061fecdb88733e3e51c5823571bc4d19"
+ hash: "1d733c5010604bff67138f1eb9881dcd"
}
Frame {
msec: 352
- hash: "f64530f638b3d18d56593e0b7c884f5d"
+ hash: "b14435e41a3730baff06bb0800157081"
}
Frame {
msec: 368
- hash: "8530cf40739890dc7401fad65a6325bf"
+ hash: "504b3548c38d50f15235594f3f3d7be5"
}
Frame {
msec: 384
- hash: "0abc555552e7256dbc424b2eac5c95f2"
+ hash: "4e73ef73c949da579217c1d94139a75a"
}
Frame {
msec: 400
- hash: "64aeae59a8c958dfc62d92636b2f5217"
+ hash: "5fced44782484b1962368b9c04bf5246"
}
Frame {
msec: 416
- hash: "3e0f50f5bee017220b129d06b2acde2c"
+ hash: "6ab0cd5c14e1871a35d003574255c1db"
}
Frame {
msec: 432
- hash: "e676c01ff2e35bdfe674be67d49945b1"
+ hash: "23f5c485fbd0acd607119e93277284db"
}
Frame {
msec: 448
- hash: "bc060b480aab94fd440fd27f5beb7383"
+ hash: "02ebd53ee0e6ca3605916b05d827989e"
}
Frame {
msec: 464
- hash: "79c79f723de72315e63da8a7cbe1b425"
+ hash: "99b1d1e72d7da88a7d5d5a7907e1b1f4"
}
Frame {
msec: 480
- hash: "7bf93c2697af75d0f862a47d57cd6a7f"
+ hash: "b7de7d40263f2811ec51f28f8ff4929c"
}
Frame {
msec: 496
- hash: "7641b9e233f4aabd99bcd985ce1d51ae"
+ hash: "e64059f850dd4c8642a9883a1c5356bf"
}
Frame {
msec: 512
- hash: "b596a28cb67617d37408bd25d947d088"
+ hash: "b0aefb8f8d4d970ba4b51d7f77b55cf1"
}
Frame {
msec: 528
- hash: "f2c5cdf15c27b05c0ea97675ddc41757"
+ hash: "5ab4b1373c233b2342eb66cf9eccac8d"
}
Frame {
msec: 544
- hash: "eae5eb8c41a1d6d75446618518490f20"
+ hash: "b3726c296d5919a59c32201d857e92b4"
}
Frame {
msec: 560
- hash: "0be5e9a6d857fe1a262524801c69490d"
+ hash: "70e246371f9cf83b5913f2fc53f6b736"
}
Frame {
msec: 576
- hash: "65478b8c4d932c10924f70462a662254"
+ hash: "871cd4b99b6d544d487424219e0caf92"
}
Frame {
msec: 592
- hash: "7b034f3c98e8eb38eec11cf3c2aa0804"
+ hash: "8c002ec15e88220bf12ebaa5a3390570"
}
Frame {
msec: 608
- hash: "5bbc8eed41500ccbc820cfb38794232f"
+ hash: "21c994a5ad23938a9e873d04bbd4165e"
}
Frame {
msec: 624
- hash: "1b39d555ca8932b40efd769c4ba74d3f"
+ hash: "1f04a0ed31823cd0817f3e97a11e3a46"
}
Frame {
msec: 640
- hash: "f9a38e12becbce400191e22f1d22427c"
+ hash: "f163eda68878ae0ed4cac7f941e24414"
}
Frame {
msec: 656
- hash: "cbc27c72517d76edfc2d3692cd83f151"
+ hash: "560527d6c7fa64a4739f9c79f3eaab8f"
}
Frame {
msec: 672
- hash: "4a883a5aed05f0bbcefcefea6ef56df6"
+ hash: "df7e7469ff685c4cd822232b1aa66029"
}
Frame {
msec: 688
- hash: "7a30ea30c0619c87c96bcaba916c64df"
+ hash: "fa92bf73b0737d4ac8bbc16518cd9c2a"
}
Frame {
msec: 704
- hash: "33cd0797b6d229592ed53117fcaaa898"
+ hash: "bb2f2765ba20b727701352f11ed30417"
}
Frame {
msec: 720
- hash: "21178ef9366c8a65ecb9e21d584573b0"
+ hash: "4c45617ce77a5869cdbfcfe851796422"
}
Frame {
msec: 736
- hash: "fe75beac8681fdac8a2b79c9c7267128"
+ hash: "24aa2eabe8d2a4adc5a096dd201a3bc1"
}
Frame {
msec: 752
- hash: "df26a23d394e053417de86309683c5e0"
+ hash: "2eb5de2524ad38e1dcd44d89b115e75a"
}
Frame {
msec: 768
- hash: "411594a1ed7c351cb872e0a6f3081b1b"
+ hash: "8b39e542908051b0ab8fbf3cd36f3be9"
}
Frame {
msec: 784
- hash: "b4b639f204cfed9e1fec872e4de115c2"
+ hash: "a447e9d7c87c90633dcfc550fcf04ff6"
}
Frame {
msec: 800
- hash: "4d801e2f4848399c011d60264720b912"
+ hash: "c3d1e7753b592bc0d0c3169e3cf08bb7"
}
Frame {
msec: 816
- hash: "4f28c7b154853ff78cdefb5a5ac9d2b7"
+ hash: "fb20ccb3b36798835fbc1d529a7424ea"
}
Frame {
msec: 832
- hash: "cc6d4283b0d7bf9f579637575d5e1fef"
+ hash: "ff253670ae78826250b9612cf2a2e1a4"
}
Frame {
msec: 848
- hash: "8edc371d23d01be547990074b5e640af"
+ hash: "45fb7f71debd3b61062a4165c04c0637"
}
Frame {
msec: 864
- hash: "874845d7178e6cd8369f21379060f561"
+ hash: "a1542b5bc5e65cdb3f8775cf21b54429"
}
Frame {
msec: 880
- hash: "98fb6d79990775385603fb1a50ab5186"
+ hash: "a146b5b88875e4148658dd55e162d6f4"
}
Frame {
msec: 896
- hash: "d15539efc27baabb5a74f464b152d266"
+ hash: "94222050206925d4c9b38da03125cc0c"
}
Frame {
msec: 912
- hash: "fc44d091d6689e8870162a6d29b6d287"
+ hash: "71a63ace8450029b968723cfa684330c"
}
Frame {
msec: 928
- hash: "a3c964f4bf524e22092b1650df43375a"
+ hash: "14e4d2af07146133c6a0e87391747c6a"
}
Frame {
msec: 944
- hash: "ca203fd630ec1eadea37cf36bd30ba40"
+ hash: "e380593e219531620dbca0a8131b4f13"
}
Frame {
msec: 960
@@ -246,239 +246,239 @@ VisualTest {
}
Frame {
msec: 976
- hash: "2e0630818c04fc6c259eec8561c645cd"
+ hash: "2b33354b9e53eae7ebd5996ae0350773"
}
Frame {
msec: 992
- hash: "a7b1f6305ddcf4a338e1a96ea31a5341"
+ hash: "0d2871475891f96e1cc4150cbe725d46"
}
Frame {
msec: 1008
- hash: "23a5013a8f9407d06ac6fd0c1e961743"
+ hash: "b6d064a26c282ce4fd8cba48de0a0f7b"
}
Frame {
msec: 1024
- hash: "9de73decddaab4269bd33efdb21278a3"
+ hash: "9ad67d9833d749b2b8158abb3076357b"
}
Frame {
msec: 1040
- hash: "7582c26b45dd11c262f51b387af89cb2"
+ hash: "ce86624a1e055fdb4711dd73be31dc42"
}
Frame {
msec: 1056
- hash: "650e0d395f1d1f2ddda8711089d85511"
+ hash: "a2c6fc81e1f02477f6ad084acaf12b0d"
}
Frame {
msec: 1072
- hash: "9ff84e81219aa6bb7ab534b2a47a3930"
+ hash: "bab24924a5ac4cd45c1fa7b5e4ff3efe"
}
Frame {
msec: 1088
- hash: "11e255273e8ca4716047fb52636f0c3e"
+ hash: "8c8fd3b9cc257dab84df8e88a3e7a001"
}
Frame {
msec: 1104
- hash: "b2fcbefd13db3c765183b1eefc2ca0bc"
+ hash: "a3f9936dc4e3161d9db1fa39267cda4d"
}
Frame {
msec: 1120
- hash: "7150aff523c0d480702f6a326699cb65"
+ hash: "d6669c8a47077f665a93587ea3cafe6e"
}
Frame {
msec: 1136
- hash: "63886c15107a2a7d639069cd81c3cd07"
+ hash: "601dbd220a7f312d4343323ae99e21ee"
}
Frame {
msec: 1152
- hash: "1ec1fc30bbb5f43a1d6d36bce345f569"
+ hash: "722411ffc1d6740caed9bf1231bc54ba"
}
Frame {
msec: 1168
- hash: "34060cbc31ce1fbf406cbb595312c609"
+ hash: "cb3bd6f5ee770399e21a07e56dcf28ef"
}
Frame {
msec: 1184
- hash: "6f3a04c7f411785956e640aa630f7ac4"
+ hash: "1819d6719e6b56b3e673dacf1865272e"
}
Frame {
msec: 1200
- hash: "d7bdb7e170b6f193eaf4b07c01b4dc6b"
+ hash: "6b6532937a3e37df28b3939cbadc4741"
}
Frame {
msec: 1216
- hash: "6ca02c0d9cfeb4b1932f7ad1feac9850"
+ hash: "8a065d54600e9ae3c7958f7b71d8432d"
}
Frame {
msec: 1232
- hash: "d446c7b185361de5c615a17ac1fee607"
+ hash: "2259806ac264b292f5701f34ffac5c35"
}
Frame {
msec: 1248
- hash: "bc2faf5b7b2972f155954e4e685e80ae"
+ hash: "e4b2a6440df9141616f89cbb6a6ba0aa"
}
Frame {
msec: 1264
- hash: "2bf26cedc76aea4a6d9744b7dd935db8"
+ hash: "034b74fe5327909214bb5a6e3084edf2"
}
Frame {
msec: 1280
- hash: "accbee9d0f8cf73ef72aa7bfb49b3fa5"
+ hash: "976fd9bc54baefe8d71002a22706052a"
}
Frame {
msec: 1296
- hash: "933eb2e46f42e212bdfc515d30f663d3"
+ hash: "45138388ebc6ec44a205934475907b25"
}
Frame {
msec: 1312
- hash: "7495318c893dbb22771b53e93c7614e8"
+ hash: "01edec5ae6e33b49baee2abe2a59ad7d"
}
Frame {
msec: 1328
- hash: "894fe23c1b3543451293c047b640c4bb"
+ hash: "9a89ff95df027e53827c5554a28e05a8"
}
Frame {
msec: 1344
- hash: "9b7179ef059ee82ca4a383f536f47a42"
+ hash: "8d1cd8a1181b7320990b7348b424ce4b"
}
Frame {
msec: 1360
- hash: "5ec1a5bfac2473efdcad7dba0da4015c"
+ hash: "2366d1ee0c0740f0d19fe2ce1acfe4c3"
}
Frame {
msec: 1376
- hash: "2bd64528e83260a80e7f2843e2c34a19"
+ hash: "071988963ab2d1a53243e0f6837fecb0"
}
Frame {
msec: 1392
- hash: "16bf64a9bf6b4bc09b108c65d074b5f2"
+ hash: "20f1e8adef04cea6bcd1511ac47a7922"
}
Frame {
msec: 1408
- hash: "c33eaa717ba63655f375499058b1be55"
+ hash: "2241def30a3ef54ea82e5fa2b1ef5997"
}
Frame {
msec: 1424
- hash: "d080f4591f9fd59745bf850525590849"
+ hash: "15365370ac6859f1bfc76e96e603c417"
}
Frame {
msec: 1440
- hash: "921585c88ec133c83c07650745bb4441"
+ hash: "45edcbeb23c88f62982f9af9a4647f4c"
}
Frame {
msec: 1456
- hash: "f037b28137b22a0c91fc71fc6626475a"
+ hash: "b7a9c7c44e6f9ff5132d1ad3f6137dc8"
}
Frame {
msec: 1472
- hash: "e10b3c432a230d5509c2fa7df48b56c9"
+ hash: "8a55b85fdd63ac63c1a566a5c4d92a04"
}
Frame {
msec: 1488
- hash: "ac02c7b7e68ee8cfad1fe556020e93d8"
+ hash: "e1973b7d557dec08e6375feefb56db47"
}
Frame {
msec: 1504
- hash: "12d59e70dedfa0c741afed9b98cb9a3a"
+ hash: "a321445212e561de4262228482b0edbe"
}
Frame {
msec: 1520
- hash: "a9aa635ccde26829d7e1cdc29fcce8d1"
+ hash: "a2c787a576e1f85561c08330b6801e98"
}
Frame {
msec: 1536
- hash: "f571b3da827b884ad036dade8ad2fe37"
+ hash: "ba84070f0081d4c7a08ebc3204d9aebf"
}
Frame {
msec: 1552
- hash: "1ffa8d7512e9001cbc78b28451133b44"
+ hash: "4b82a6908ed0caf3cbfd9dc9211ec69a"
}
Frame {
msec: 1568
- hash: "2ef4b10f2eafd71dfde15f7f00e923c6"
+ hash: "a1dc7c4ad596fc005cf3077ee78406e1"
}
Frame {
msec: 1584
- hash: "09b3bc232a134eae5ae14c0336f508ba"
+ hash: "53d76884202d4b9ce3874db796705b80"
}
Frame {
msec: 1600
- hash: "ebadb5c6b4986c865f7f8ef232680b7e"
+ hash: "9f24c090531259f9d83ea97e842c4f14"
}
Frame {
msec: 1616
- hash: "26621991073510e9a95e3b208e3ee56e"
+ hash: "541c81585a781bab82d4ee95b9f844ff"
}
Frame {
msec: 1632
- hash: "f18e97f13c06f3c5368edf851f19f401"
+ hash: "73e15141e6c6bfba4a2c820ba96e3f6e"
}
Frame {
msec: 1648
- hash: "3c322dbbf5ecfe1de56595dcb7d949e1"
+ hash: "0500129b602ab14925aa09a1d9bee3d0"
}
Frame {
msec: 1664
- hash: "50058d1bb992a6d0601c9d5490149936"
+ hash: "2d45ba5e0e21430f468332c13ce3ee15"
}
Frame {
msec: 1680
- hash: "4cc78f56f13478ec21a4a0d6b22f956b"
+ hash: "bafd11c210e683d79ac438c5612503bc"
}
Frame {
msec: 1696
- hash: "d765cd86560dff3faa5a3c902512c74c"
+ hash: "f968f49e6a0674877c55282e5543edab"
}
Frame {
msec: 1712
- hash: "ad983068c2149b0c06da3b89a5d94d24"
+ hash: "705307529862a3825a0870b294058825"
}
Frame {
msec: 1728
- hash: "e6da7260001771fc00c472bccae641fe"
+ hash: "a008a501d1dc16a5ffaee325fdd90816"
}
Frame {
msec: 1744
- hash: "71778ad8a61ecb0f78f7234ecf0d1d97"
+ hash: "5091621481873738658f4d8543582c62"
}
Frame {
msec: 1760
- hash: "6b2209ea5f7f17c2cd868986f0c907d9"
+ hash: "141216eeb31b5af4ec247bb930169a7f"
}
Frame {
msec: 1776
- hash: "6513c82829ef7e7c9461dcf5b50f675f"
+ hash: "bfb203e39ab0a9837fc5b9c9b49d9580"
}
Frame {
msec: 1792
- hash: "0172c5bdf96c8bceab25a6c82bdbe527"
+ hash: "1f2704480af7dd2bb382d13450f34755"
}
Frame {
msec: 1808
- hash: "64b53bf1c1988d3a799b564089f8e63f"
+ hash: "f3182da7f6202250a6cc2de3e43fcf87"
}
Frame {
msec: 1824
- hash: "a1bdea4771ec9719cfe88f4e827bd005"
+ hash: "6fa500f5ff387c5801186fb7eced96f4"
}
Frame {
msec: 1840
- hash: "263de376cee2ba7701a7ca116bc1be81"
+ hash: "1874d59911d70daf098cd053da69127b"
}
Frame {
msec: 1856
- hash: "9795dada7f09d7d4d40df858dea8bc70"
+ hash: "52a7bcb9a18e8d4a24c2617124b7961b"
}
Frame {
msec: 1872
- hash: "85ea4c63fc31f79423cb509f6c6d4faa"
+ hash: "f3a7dd26aa4177dbee02d52df664c751"
}
Frame {
msec: 1888
- hash: "c86d8c4460d1e3c2f26b723dc628fe84"
+ hash: "5180db29e325f00c3940b6a7b8eb8a8e"
}
Frame {
msec: 1904
- hash: "6bf6ef1fd377bfcf0b93baa7f28e1d3d"
+ hash: "eab16b6ef76e627eff492cdf5d5da9e2"
}
Frame {
msec: 1920
@@ -486,239 +486,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "57b8a48bed9375b74391950c28e611da"
+ hash: "00743f1dceb5d0351a67a237bcf1985b"
}
Frame {
msec: 1952
- hash: "70203655bc832998529071d7f665ecbe"
+ hash: "85ecf35d439bd4129f8780d8ee561dfb"
}
Frame {
msec: 1968
- hash: "9ab9808d495f907a255d85fbd82491e2"
+ hash: "785d712b57b3ec4cee6b9e2fcfa1b775"
}
Frame {
msec: 1984
- hash: "297570136b058ba43e883b0aef20d82f"
+ hash: "77906acfafec6ab595e8dad00373f953"
}
Frame {
msec: 2000
- hash: "0c2f15ce83e2d961ec36299b13890709"
+ hash: "33722e5c66ee6dfc87ca62a53590969e"
}
Frame {
msec: 2016
- hash: "6d57b6dcb1dbfa35245d79ef36ca49b2"
+ hash: "7bd3d9e36789b3456c5e098d02341ce3"
}
Frame {
msec: 2032
- hash: "12a71804fd71991706d8a39b676d1628"
+ hash: "be4af661ca19ca607acf0d8949b58c26"
}
Frame {
msec: 2048
- hash: "f6a9e1b0b498fc576f3eadeb86c08fe9"
+ hash: "e249df985887229664d3c61c7b01d2ef"
}
Frame {
msec: 2064
- hash: "051c2ed34cbef82d44aec4841a33f086"
+ hash: "541a01af440e81c7b20fa9df0e85f5f9"
}
Frame {
msec: 2080
- hash: "12b89590b20fff8d6c94dde40a5d6185"
+ hash: "3579e5a3ab93b8c9998ef812f43ba158"
}
Frame {
msec: 2096
- hash: "7a29cd11ddb042203465a9522ff951ce"
+ hash: "c2902c8068a48788e5511d2987191181"
}
Frame {
msec: 2112
- hash: "4853f364261ab8e1c9d35cfe42efb385"
+ hash: "3fc7d417d13cbccbff81c0630cf968f3"
}
Frame {
msec: 2128
- hash: "7149ab3ed649cac9cf662be7c434056f"
+ hash: "5507fabe77585c38b2929e2565cd8e9d"
}
Frame {
msec: 2144
- hash: "bbe199700474dda156355d31ac09be39"
+ hash: "73f6a9a1602929b80ba28ac2c8095a95"
}
Frame {
msec: 2160
- hash: "a3f3fbbe844b8c6fb8cb8bbcc17120e3"
+ hash: "3377ee6818f1fbf15cfe2916ef7328ed"
}
Frame {
msec: 2176
- hash: "e9a04cfe9e8c50f74978fbd4ecce536a"
+ hash: "4bea4237a5044b9ffbe9815b877a5b96"
}
Frame {
msec: 2192
- hash: "0df1d4211f770cdd7b8a98ea476c6f42"
+ hash: "f25dadf7b916625f120d3b5fc1602d0d"
}
Frame {
msec: 2208
- hash: "a6837afb43663b9473db2378b1a9f989"
+ hash: "ba095d86b7ecc9e2ca6c5d6567d6debf"
}
Frame {
msec: 2224
- hash: "691ea67f3b84b8dda449c2a8e86b1087"
+ hash: "296129caee6a9526aa2c6071fb07198c"
}
Frame {
msec: 2240
- hash: "16d18947637c63662b9a502c493f06ec"
+ hash: "42abe26548e9eb7a2c63aea7f349808c"
}
Frame {
msec: 2256
- hash: "8f9207d404da08706e150f3b64d0088d"
+ hash: "2d187394342584568aa24353233f67f7"
}
Frame {
msec: 2272
- hash: "48ad430e38cdc34845a834cfb9ea70ef"
+ hash: "5c4047c8ca78103d443f9058f3ec3237"
}
Frame {
msec: 2288
- hash: "1252cfb294ae99c40b03dd021160553f"
+ hash: "05af8a131ec98b5bc60669bfcdee9a16"
}
Frame {
msec: 2304
- hash: "b1d5e752fbe03c95ee0dc7bbdf6fb9f6"
+ hash: "b486a796a74962d6b5a4e928ff9e6a2d"
}
Frame {
msec: 2320
- hash: "2282cb42ef0c812ba27e33ed0f962a84"
+ hash: "8bfa5cc3edf294a728bae51014733230"
}
Frame {
msec: 2336
- hash: "42fc82c8d40d383b3cf31a741a4358c5"
+ hash: "fb5928a74d75f7eb23ed914e12ea2dba"
}
Frame {
msec: 2352
- hash: "368c1ffa2deb1911929f1769e31c8017"
+ hash: "16c83f70c3559e97c4a28df7e8b94d95"
}
Frame {
msec: 2368
- hash: "8693bdbde404e36970943ac6b650ca00"
+ hash: "a7f926210d56dc368c99da12a27db42e"
}
Frame {
msec: 2384
- hash: "57609613c336029b60da428d48842a4e"
+ hash: "9f235f259af00126a3fc2417d399dee6"
}
Frame {
msec: 2400
- hash: "b61dafe9e87421d3fcf8cb9ff0e7a41b"
+ hash: "2397c99cc1697303bad9fbd029ee63a3"
}
Frame {
msec: 2416
- hash: "c8c34d1d82bef418ef97f52cb9773cf4"
+ hash: "b83a021c82c203d6cf690edd5fd98c89"
}
Frame {
msec: 2432
- hash: "aa756c09717dc02e81e76511b4c58f60"
+ hash: "4e9e74f8b115b69b593f0233f9431258"
}
Frame {
msec: 2448
- hash: "96e75c5ce1b5393f6cc46fbbe0a67689"
+ hash: "2d8f24eea1e87691eb2292bd01756498"
}
Frame {
msec: 2464
- hash: "fb5febae411f43a6cd218b03b36f5018"
+ hash: "bad7ffbfe4feac5e7a13a70c8096ddab"
}
Frame {
msec: 2480
- hash: "889870fa67784261e7b73b7d0a53324e"
+ hash: "6869d23bf601c67593f23402023f931d"
}
Frame {
msec: 2496
- hash: "fb124d4ebee6457f2137f07954619912"
+ hash: "6e4846623fe8b4a1c850729620cd7502"
}
Frame {
msec: 2512
- hash: "258ae87f78805c555e0ed802c5123eeb"
+ hash: "f679d87f206ca71de191f3991c13f4b0"
}
Frame {
msec: 2528
- hash: "2e730872c37f118a03864d23ebf7bab3"
+ hash: "7f503ceda23f0e4718f6216c3b4ddef7"
}
Frame {
msec: 2544
- hash: "381386302f210932bc7d44247a48f13c"
+ hash: "69f01285109c21cbd32a0f17942734be"
}
Frame {
msec: 2560
- hash: "306f8e6d183eb080da3375d65f2491f0"
+ hash: "f2060324802c080703ff62c051c7cff2"
}
Frame {
msec: 2576
- hash: "39862f236aabf362d0a07ba64eb212e1"
+ hash: "45d01b58f0812596aff06a09c1167d83"
}
Frame {
msec: 2592
- hash: "57452ecfea80ebd4d9fd23f8efbb34f2"
+ hash: "688c9931abdaa7225da91cdf7f2beb48"
}
Frame {
msec: 2608
- hash: "64bd12d4f6e32f19abef79289673c2fe"
+ hash: "d522505f28615cc17206ca6099dbd83e"
}
Frame {
msec: 2624
- hash: "56340d636f4df7e5f68e84c1d8388429"
+ hash: "ad86d8cee90c1458b64318f3edd94aee"
}
Frame {
msec: 2640
- hash: "795cd97d4be294fa6157f23793861ec3"
+ hash: "6dda1a6359b421ef7c9ffa4ecd863341"
}
Frame {
msec: 2656
- hash: "4be9fd5314ad6721a0ddf5a5dc51ccee"
+ hash: "dcc388cdf2b87e10b07e2f05ab6dce3c"
}
Frame {
msec: 2672
- hash: "3349b775c329db022bf0414b9ed57466"
+ hash: "a5d64264be7778929116c9407548c7f8"
}
Frame {
msec: 2688
- hash: "587b7070836063f9d138c4a4ee8da8bb"
+ hash: "cc7ac18a25936825d42694a9022b73fa"
}
Frame {
msec: 2704
- hash: "5bb078819bef7695c9af1bd4b544a26a"
+ hash: "4423af95764aadbaffe3c608fb3a376b"
}
Frame {
msec: 2720
- hash: "799c05999713e8b29f7d2917f515d2c2"
+ hash: "ad186cd5735531e2e6bfb2fc387dee2d"
}
Frame {
msec: 2736
- hash: "41bb926661acd8e21300f4933734748a"
+ hash: "d0e7c8071350bac03cf06996b6f74a63"
}
Frame {
msec: 2752
- hash: "2ead23d38a2f1834c7688a9657d9d7cc"
+ hash: "d012311c64fb35717155ebc88f9940d6"
}
Frame {
msec: 2768
- hash: "196309eac81adea21630dda19947ef5e"
+ hash: "13111334420c479b6a3ddbde65e2d143"
}
Frame {
msec: 2784
- hash: "cf414b2004712581f11f27890745c761"
+ hash: "3a77939f35498ef91590cd57c534fb6a"
}
Frame {
msec: 2800
- hash: "6b2a6837da878fa8f3811b2045e098b1"
+ hash: "89cbc568600c18c3d7163c3079a3f584"
}
Frame {
msec: 2816
- hash: "7390cfdef1d4bc194b86854b1947f15d"
+ hash: "2a8db5a4cae5258578749a88fbf915ce"
}
Frame {
msec: 2832
- hash: "9e4543fcf65a56edfbcaf46805343071"
+ hash: "ddd9cef18ce748096869dae9c2e23de3"
}
Frame {
msec: 2848
- hash: "3a886e2ed813eb7d44d0cd67eb5dee31"
+ hash: "d9e213af096ce69f75863ed7c39b59f4"
}
Frame {
msec: 2864
- hash: "625baed6cbf3a58b32060810be53d0b6"
+ hash: "69e9bfa09b8f5a1e2d83b77a5c9bc374"
}
Frame {
msec: 2880
@@ -726,50 +726,50 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "484666ad104cee644c6a7e8ec0c4b10e"
+ hash: "449168c60d6c9f04c94b3c48f27de7ff"
}
Frame {
msec: 2912
- hash: "41abe2e2d92b293407141d0333d7d04a"
+ hash: "e60ed277794737b9f5d8c4a575f5b300"
}
Frame {
msec: 2928
- hash: "953c03834bd3b50798b77c0c6bb0f4a8"
+ hash: "5c1a39fa9789064ff0d5ea1fd4c6d187"
}
Frame {
msec: 2944
- hash: "a076463868003c62df3ee5147ffd4660"
+ hash: "64c1593bf33b85593153ac9eeeb7793e"
}
Frame {
msec: 2960
- hash: "b389b5c9ed31816dd562a8f1332d28c9"
+ hash: "dab7df26ba23ed3e750fa6080916f177"
}
Frame {
msec: 2976
- hash: "246706829939a2619d64fad63e424fdb"
+ hash: "5958428d5ab5a379f9bbcc0f86c20d1b"
}
Frame {
msec: 2992
- hash: "d5e644f16bde52c566191a054a1279e5"
+ hash: "65929536b7b8b48958fab7bd1e3ccca5"
}
Frame {
msec: 3008
- hash: "10b2e99d2e08939b75c24a6bbf481858"
+ hash: "cb157ba8c58bb7a8ec357e83e82ab441"
}
Frame {
msec: 3024
- hash: "732a7bb0009f394f0039e09594362c75"
+ hash: "bf36b7c52a3b3b2fb08524131bb4b9e2"
}
Frame {
msec: 3040
- hash: "261f38ce42a8a8c86daadd497ecfad07"
+ hash: "0d2dbb3ba42cad9e8b5833c97dd0cdba"
}
Frame {
msec: 3056
- hash: "8b66ae6261db386d6c4e88d0146db090"
+ hash: "f918a9f5fa6808b545c715dffa2f4838"
}
Frame {
msec: 3072
- hash: "dc8dba79e4466059c29725084cf801bb"
+ hash: "ec11344fb21ee06df6cface390d611d9"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
index b36a220a75..78ba061055 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
@@ -4,31 +4,31 @@ import Qt.labs.particles 1.0
Rectangle {
width: 640; height: 480; color: "black"
- Particles { id:particlesAnotEmitting
+ Particles { id:particlesAneverEmitting
y:60; width: 260; height:30; source: "star.png";
lifeSpan:1000; count: 50; angle:70; angleDeviation:36;
velocity:30; velocityDeviation:10; emissionRate: 0
ParticleMotionWander { yvariance:5; xvariance:30; pace:100 }
}
- Particles { id:particlesA
+ Particles { id:particlesA //snowy particles from the top
y:0; width: 260; height:30; source: "star.png";
lifeSpan:1000; count: 50; angle:70; angleDeviation:36;
velocity:30; velocityDeviation:10; emissionRate: 10
ParticleMotionWander { yvariance:5; xvariance:30; pace:100 }
}
- Particles { id:particlesB
+ Particles { id:particlesB //particle fountain bursting every second
y:280; x:180; width:1; height:1; lifeSpan:1000; source: "star.png"
count: 100; angle:270; angleDeviation:45; velocity:50; velocityDeviation:30;
emissionRate: 0
ParticleMotionGravity { yattractor: 1000; xattractor:0; acceleration:25 }
}
- Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); }
+ Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); }
Column{
x: 340;
- Repeater{
+ Repeater{//emission variance test
model: 5
delegate: Component{
Item{
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
index 18c8a9e6f0..3e1a92dc6b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
index e86acb419d..8658d7d2ba 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
index 17990b706a..f1a56d7a60 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
index 18c8a9e6f0..e1eaebf3cc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
index 18c8a9e6f0..e1eaebf3cc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
index 8636f8f9e2..06e7d18b91 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png
index fa7c4b622f..2c6c5f999a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
index 54ef8586ec..e3baa4d863 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 32
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 48
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 64
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 80
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 96
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 112
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 128
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 144
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 160
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 176
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 192
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 208
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 224
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 240
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 256
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 272
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 288
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 304
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 320
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 336
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 352
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 368
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 384
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 400
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 416
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 432
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 448
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 464
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 480
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 496
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 512
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 528
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 544
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 560
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 576
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 592
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 608
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 624
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 640
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 656
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 672
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 688
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 704
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 720
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 736
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 752
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 768
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 784
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 800
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 816
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 832
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 848
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 864
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 880
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 896
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 912
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 928
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 944
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 960
@@ -246,23 +246,23 @@ VisualTest {
}
Frame {
msec: 976
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 992
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 1008
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 1024
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Frame {
msec: 1040
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Mouse {
type: 2
@@ -274,7 +274,7 @@ VisualTest {
}
Frame {
msec: 1056
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Mouse {
type: 5
@@ -286,7 +286,7 @@ VisualTest {
}
Frame {
msec: 1072
- hash: "1ed6fa56736cf7cb2f99b5d362974463"
+ hash: "cffe9de189a5c9bed3d98f8803b47212"
}
Mouse {
type: 5
@@ -298,7 +298,7 @@ VisualTest {
}
Frame {
msec: 1088
- hash: "24f3dd6c49dd8b19cd0c387409405e18"
+ hash: "e8c46deb6b5f5739e4b95d53619e9314"
}
Mouse {
type: 5
@@ -310,7 +310,7 @@ VisualTest {
}
Frame {
msec: 1104
- hash: "08c828e7fdfba4252fa7a9fb06eb728e"
+ hash: "11d19a126669227211f399d262bfd8bd"
}
Mouse {
type: 5
@@ -322,7 +322,7 @@ VisualTest {
}
Frame {
msec: 1120
- hash: "b76110faf8520f52128b5e1af8f2b838"
+ hash: "46d81424418241d7dd98c581491c08c7"
}
Mouse {
type: 5
@@ -334,7 +334,7 @@ VisualTest {
}
Frame {
msec: 1136
- hash: "5f56acb5f39ac291cc8e73c0268df214"
+ hash: "8674dba6282cd9dd6ca31442f7f996e2"
}
Mouse {
type: 5
@@ -346,7 +346,7 @@ VisualTest {
}
Frame {
msec: 1152
- hash: "840ee0c0d8ea94e22e783a15687f979d"
+ hash: "efc9e337337267c43b865f33c8912c4c"
}
Mouse {
type: 5
@@ -358,7 +358,7 @@ VisualTest {
}
Frame {
msec: 1168
- hash: "69827007bbdf5a360ccc34a016315113"
+ hash: "b3fd11ff8cf16bad9fd7e1329add6029"
}
Mouse {
type: 5
@@ -370,7 +370,7 @@ VisualTest {
}
Frame {
msec: 1184
- hash: "2437beb8f9cb39b125611fb186bad820"
+ hash: "3be61bd51ca152965c0e789a7587fe98"
}
Mouse {
type: 5
@@ -390,183 +390,183 @@ VisualTest {
}
Frame {
msec: 1200
- hash: "df07c389b26fc191234c70b97bfaa432"
+ hash: "9b02fac96198b587d59b10ddc021dfca"
}
Frame {
msec: 1216
- hash: "8d4e23f4e91d0e0df9d87c3171d5971f"
+ hash: "505b19e66a416012cc10125381b3e012"
}
Frame {
msec: 1232
- hash: "dd79837aefeabffa7184be07f2a98969"
+ hash: "eff92d7a9b0962067d5ef97e86a23c07"
}
Frame {
msec: 1248
- hash: "2d9bb2aaf4b882902f090ff0c89053c8"
+ hash: "74f48d40be0dd93988d01aa18f26ae96"
}
Frame {
msec: 1264
- hash: "b1ec9adbb026d8002a7f16fe9a8d56d2"
+ hash: "1f8608199813f9c54c426f59290089fa"
}
Frame {
msec: 1280
- hash: "43b23d6e1aeeb36350c3530650e9156f"
+ hash: "8b4e68ab41bf4e0e23d86c7f99ff11a5"
}
Frame {
msec: 1296
- hash: "03f231597c4d5010ee71c74217f2483d"
+ hash: "00180bb46496f5b10350071a7f0e1f85"
}
Frame {
msec: 1312
- hash: "8607c7412a5a1b4ea1522f28c465a83e"
+ hash: "d966232acbb1ecf2339a1df02642dd9e"
}
Frame {
msec: 1328
- hash: "671e80e290bec997eb36320ff76fdccf"
+ hash: "0235a7aa18d390099e6934971354f878"
}
Frame {
msec: 1344
- hash: "5f6717112bd45e5ebe194e0f87d12be6"
+ hash: "136159dc7d4775e108c4738b7c1bcc86"
}
Frame {
msec: 1360
- hash: "ca8e33c7a5428d70ae13cb64e5098a48"
+ hash: "e976f2c7ef3d61c2e200fcc849e9f4cd"
}
Frame {
msec: 1376
- hash: "86e60eb395f66bbaa1ec07b3e07013c0"
+ hash: "09181b465a9d228006e827b56ec83c1d"
}
Frame {
msec: 1392
- hash: "342fa6ddc02d0a793e97a79ba8882415"
+ hash: "8b3f884ac343f1272e3d3af6b2b4d875"
}
Frame {
msec: 1408
- hash: "a907fbcc47807d4eb6d66e070ea7f2de"
+ hash: "419ffc2f8685ea8d1e5232c4440b2d96"
}
Frame {
msec: 1424
- hash: "04838f8b495bed6d050cbe54d00aad31"
+ hash: "105b3cc7c5b8f07e90a3c3aaa9d78ce7"
}
Frame {
msec: 1440
- hash: "d485534916473ea6c4612230c5a95421"
+ hash: "6005de2db98dfd9cb8e3cb42a668a6bd"
}
Frame {
msec: 1456
- hash: "1d3da7cc5b9120724645558584f2f0f3"
+ hash: "2bae12b6d577965a3cd24bb05c4f5e44"
}
Frame {
msec: 1472
- hash: "c271f057d5f1745e910b2b407c52a4f3"
+ hash: "e74db37aedd78bf1765d0a3b4ed89023"
}
Frame {
msec: 1488
- hash: "050d1814a9ced514db6cfd2732eb76be"
+ hash: "49511dcf43ce2dbbe4fbafb461189e72"
}
Frame {
msec: 1504
- hash: "cfcd21aadfe3fd611caad83920fb2432"
+ hash: "21183bde6a5cb1d9769e01630e1b593a"
}
Frame {
msec: 1520
- hash: "472f900ef8eef74522da3338ce7fa93e"
+ hash: "15bef0512513a0bdef002a4af5e1b3d3"
}
Frame {
msec: 1536
- hash: "f9d892a81c6ba3b9fc4c6e76082d4fa7"
+ hash: "d46944a859d8be8c3371bf719ffe6251"
}
Frame {
msec: 1552
- hash: "a3febe1c3c4585e25a410a91cc34c1fa"
+ hash: "2a5249bc1e0eba408654d6500fe22e6f"
}
Frame {
msec: 1568
- hash: "74cd765c9d9a6fb243070b4a56a07e87"
+ hash: "df860d60c47ea0eae7ed917ce1cd0578"
}
Frame {
msec: 1584
- hash: "469d324abbef017a99bc587bfae622b3"
+ hash: "90bfd7e58c63e7e2ad647d37a597c084"
}
Frame {
msec: 1600
- hash: "6054ff6e658f0a5f5e313f0a724d9610"
+ hash: "a400250799ca74b0de5fa0b00ea54223"
}
Frame {
msec: 1616
- hash: "67cee7ebe428c9d35f1f28274f3049d5"
+ hash: "1943506235c641ee444394b2bf48f2ea"
}
Frame {
msec: 1632
- hash: "ce6c3a1dd726eacbba6306e56121beef"
+ hash: "ac9dd2d323a513f6cf729890b5b6dccc"
}
Frame {
msec: 1648
- hash: "a7d5f703c98c0c8cd32b189a79e1fd05"
+ hash: "029cbaec81f7e1251d8de63b8011f06e"
}
Frame {
msec: 1664
- hash: "41cfd9982767ba904843fb73a5a0ed71"
+ hash: "c0cf823c09a96cf8b6ac063a87f1e5ed"
}
Frame {
msec: 1680
- hash: "388dcde17a820800237d1185372d889f"
+ hash: "9ed0e1fef6937f5e05b6647b0fb9d534"
}
Frame {
msec: 1696
- hash: "3bd72585388f04d55900ccd345cd576e"
+ hash: "61b878c5c6db407032c6abb76e49e1b2"
}
Frame {
msec: 1712
- hash: "0e5c63b066f2b70000eca7f3aaa3a195"
+ hash: "b842458ea2b17501f089c9b5cdd15cc4"
}
Frame {
msec: 1728
- hash: "15199f3e9f00afc76279b5bbffb78d92"
+ hash: "8a308f9048be4323eb82229b2bcdfbe2"
}
Frame {
msec: 1744
- hash: "596ad681a3b96afbc284e3af5fd173cb"
+ hash: "5a4e29c2d768a3d0ca319ae7406920dd"
}
Frame {
msec: 1760
- hash: "e5ae2d0245fc5d74c6ea3f7dddd1ca2a"
+ hash: "b96f98a169e700ccf5c77b42e1143d50"
}
Frame {
msec: 1776
- hash: "0d152716f9ebe5f0fae3f5cabb20630f"
+ hash: "570b2182f63d4eebc2c9d136636c5c7a"
}
Frame {
msec: 1792
- hash: "74afbfa464b0d19b53432fa4d5ea2804"
+ hash: "df2bb468c032ce62cc23ac3600123649"
}
Frame {
msec: 1808
- hash: "c8aa3f4738a8c07cdf2450a24c885ce6"
+ hash: "f6579e334ba34bae43c6fa9bae465e32"
}
Frame {
msec: 1824
- hash: "2e4e0003f1b1cb10593075862b972643"
+ hash: "b6bba71527e894c0520eb840db66fc8a"
}
Frame {
msec: 1840
- hash: "acea518c7da7330ae78daf5fbfd1a423"
+ hash: "510afb9fd3812786cfdfb82b7131a158"
}
Frame {
msec: 1856
- hash: "0b8d4ea6947b522c6aa9a32d9f16723e"
+ hash: "13da41ed3e0e071c1645e71a003a8a1d"
}
Frame {
msec: 1872
- hash: "19f2aef82586817ef574a70865060997"
+ hash: "c09aabd8c11c6124d97793563b274c7a"
}
Frame {
msec: 1888
- hash: "115565eb0ba3024dbf15d00ed242c389"
+ hash: "34101fd20242b0b48d056f24f21c8939"
}
Frame {
msec: 1904
- hash: "7e59425c85acf93f5bf55e139c148737"
+ hash: "34f064cb167b85e79a2f113eb430a675"
}
Frame {
msec: 1920
@@ -574,139 +574,139 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "ce96601476cf55f665bef09bb1b038e2"
+ hash: "d50eb3d7eaad3d2a825876dcf1f59d91"
}
Frame {
msec: 1952
- hash: "dc6eaacefe37fc709ac0bef99110f796"
+ hash: "c0c308b9eb3af4c1af3bc7e197696475"
}
Frame {
msec: 1968
- hash: "82ad9b84425bd8e385524cb052a8fdd4"
+ hash: "67e630b9f050a64645e276695f3d4932"
}
Frame {
msec: 1984
- hash: "608000b44ade998e225010d5ea562316"
+ hash: "5bb212885448a7506ee6de766ea80a8a"
}
Frame {
msec: 2000
- hash: "ec6b4d519b7bafcf5293c2b5e6585007"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2016
- hash: "9895792ffa929ba6fc600949f11766b6"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2032
- hash: "0d2b27c9ca22520b269f93c90de08df4"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2048
- hash: "78a61e4565db709215b419aa56f6efab"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2064
- hash: "d6f2aebed062d093c00b27a52f0b14b8"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2080
- hash: "21b7a438ad1e835b84e5576e52abbe84"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2096
- hash: "703e32f43e9a71b8677d6839a0eafe06"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2112
- hash: "b04bea8af558de4120723fc5abd0f36c"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2128
- hash: "ac8e91c3b55e058ce8ff08ad6e3af9b6"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2144
- hash: "54846c8c70b232d05ff5eaf144f6f7d3"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2160
- hash: "52281806f5c80512b4bcab7f61139f74"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2176
- hash: "a352657ff34ef8962162c00647df343a"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2192
- hash: "3a0b12d1f8bf5cae8ac06289dd30d52a"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2208
- hash: "2c6bbcd05719f69b9a67be18de2084a6"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2224
- hash: "ab091484522587412b0e8aceeb8987ce"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2240
- hash: "13682b0d45bcbad0f011d08899085b1d"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2256
- hash: "3c5d6f82eafd1b04edfbcbffbdbe2177"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2272
- hash: "151803d70b7c3327df32c8602fcd677a"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2288
- hash: "78613cec5364fe3f0df84188793d8eac"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2304
- hash: "fc05a3cad43af35230c5ba89f6fd13c5"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2320
- hash: "9f826733b300c89eeb80452129505e8b"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2336
- hash: "8565efc5c1fb1bdf5629e3bd495bb611"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2352
- hash: "3b8f6e8c526ab8cce170277c378a5a69"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2368
- hash: "07db3bc0ab19e0ca829e89558bacf1a1"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2384
- hash: "ed8843024c6ac28a8c782839b362149c"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2400
- hash: "381a9f6564c090613aa2cd0476b95210"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2416
- hash: "c3fabd891fa8e27fd71df175db383667"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2432
- hash: "9b441792fdaa9ba9d340fc0c6a9c11bd"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2448
- hash: "3209c9ba69fa016370e3d56e7e1e37a4"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Frame {
msec: 2464
- hash: "34da0a01453fbb2571b370257fd35f8e"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Mouse {
type: 2
@@ -726,7 +726,7 @@ VisualTest {
}
Frame {
msec: 2480
- hash: "32e6204a07c493d0a0f9f50773fe8f32"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Mouse {
type: 5
@@ -738,7 +738,7 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "2a1814768ae500ba9c24bc2e3e4de1d5"
+ hash: "f9ec9b4de5244e58fbba2f6871e4a61b"
}
Mouse {
type: 5
@@ -750,7 +750,7 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "7cf6e3c52d12d590beafd061979a49cb"
+ hash: "a123e6b06abaa4dda4645bc174edc6ad"
}
Mouse {
type: 5
@@ -770,7 +770,7 @@ VisualTest {
}
Frame {
msec: 2528
- hash: "c66c36642ab7f6c32b45e27de38d23b6"
+ hash: "a706a48bce5eec7a1d55fec0df8c4d81"
}
Mouse {
type: 5
@@ -782,7 +782,7 @@ VisualTest {
}
Frame {
msec: 2544
- hash: "6e003380cc6fd303ae3b499863225ba5"
+ hash: "297edbcda96e508dc9d0d977951c015a"
}
Mouse {
type: 5
@@ -794,7 +794,7 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "a790259cea2c247493be58c6018435b9"
+ hash: "7d334b1b7bfe3893473b02b49e2e1bda"
}
Mouse {
type: 5
@@ -814,79 +814,79 @@ VisualTest {
}
Frame {
msec: 2576
- hash: "e6cce7468a27b5063821df8dbaa15c18"
+ hash: "45ba14d15a8fcac259a06dc85a935f18"
}
Frame {
msec: 2592
- hash: "ff8386cbe89aeac184f4a75237ef4a14"
+ hash: "0119f472e718a8e6bc59a998c18beb7f"
}
Frame {
msec: 2608
- hash: "1a11a90853b025837b991be40efb78f8"
+ hash: "fb08ca9960ec17a26dcf27de6474392f"
}
Frame {
msec: 2624
- hash: "17da10de7e2d2fcf125207e2873bdee8"
+ hash: "b209bd311ce16fa9daf612786b7c5f53"
}
Frame {
msec: 2640
- hash: "dfbda435d05903cc3a31f4f8f31e8985"
+ hash: "d47eb1544d2c417e5b452df6715efe0e"
}
Frame {
msec: 2656
- hash: "1f3753e809099f20c6289f150a096935"
+ hash: "caf3eeb521fbd0b5f97e99111d4a2416"
}
Frame {
msec: 2672
- hash: "9454afc9d70103e1f1c00eb0ad2ca534"
+ hash: "5726e2e19aca222de3ce0125cf1def6c"
}
Frame {
msec: 2688
- hash: "860ab90e2421a0c8faab304915b5e6f2"
+ hash: "7f2ca733f50390284d90e757788c6c64"
}
Frame {
msec: 2704
- hash: "600258507426a8c3c89e3591ee9328f1"
+ hash: "72eb5d86be5e9b477abbfbfae78261fc"
}
Frame {
msec: 2720
- hash: "0795a607b893da2bdc0970195f3039fd"
+ hash: "f0a1dda33df6856a02e5668c6bb45aa2"
}
Frame {
msec: 2736
- hash: "e300b9109e242d85537fc3f4461eaf8e"
+ hash: "55863490cefc48da96a368b95055ac2b"
}
Frame {
msec: 2752
- hash: "dbb84b38e2bda694f210f133dc133180"
+ hash: "e01c23ac71fd3906a47b4a969ee592d9"
}
Frame {
msec: 2768
- hash: "2455e9de47da4db88eef35fea1dc2abe"
+ hash: "b45eb0154d405b49c9f7ea1452601b4e"
}
Frame {
msec: 2784
- hash: "5f0c3d7e089c921a68813a48f0fd8844"
+ hash: "b5bf040d5dbf4f7cf8c5a0dc3d6aaea1"
}
Frame {
msec: 2800
- hash: "e6d9e7d0fdc724a6a1804bc94629cab4"
+ hash: "c171c81a12d4971f33154e52f789967a"
}
Frame {
msec: 2816
- hash: "d177183bcbaa27ad061fd88bd037277d"
+ hash: "fac8265a6d744a11120a0d434821d8b4"
}
Frame {
msec: 2832
- hash: "78dd13fa6367abd14374462d89a3d066"
+ hash: "2b6b1f9aa8aa32c9e48579d215e31268"
}
Frame {
msec: 2848
- hash: "41d12e4c362ccc99a1a04b3a09f0e68c"
+ hash: "8455997dc106cd5d386eb3cf3703828c"
}
Frame {
msec: 2864
- hash: "5112700bf72aacb176e63ef054fce244"
+ hash: "c6525e8ee9c7ac6fa4d0c8d6dd4e1745"
}
Frame {
msec: 2880
@@ -894,239 +894,239 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "0257e67512c62ffc42a272fd304e4ed3"
+ hash: "bc501c449f5d8b7de40b27204c5344a4"
}
Frame {
msec: 2912
- hash: "42cd0a98aa0f3768cf77aac284072fa9"
+ hash: "fe850b5232c819a9171d0b93aaf5e811"
}
Frame {
msec: 2928
- hash: "811d27f89b0c434fc49e4280f85c2f27"
+ hash: "a54d819719aeb80392e5b6ffbc25dea0"
}
Frame {
msec: 2944
- hash: "887406c50c666d08e4d98c040efae9a5"
+ hash: "8479d90984fd9f619b86529231b840fd"
}
Frame {
msec: 2960
- hash: "27e10fa9d82920c7f761465501d44564"
+ hash: "6bfa9782e64bfc0041175073aa2bbb80"
}
Frame {
msec: 2976
- hash: "ba67dbe0010ba2aae3ca100886b11553"
+ hash: "8df19b6bd14c7e1f014dfdb4cc887263"
}
Frame {
msec: 2992
- hash: "8064db575e2c74c0faf7782adc527a08"
+ hash: "02dd88bf2766c756b840bea3e6f7dd80"
}
Frame {
msec: 3008
- hash: "b7fd5446ad957610ab853e0c597b9a36"
+ hash: "edf9f3ca4b85ffba5ca051d96b1b3b64"
}
Frame {
msec: 3024
- hash: "092b53eb50e91d74db7899328899cfd3"
+ hash: "7da796da178c888018981d7dd39b3784"
}
Frame {
msec: 3040
- hash: "0346065ad603b41db9365987ebe81586"
+ hash: "d4b850c173169ec184634bb2001e3f3d"
}
Frame {
msec: 3056
- hash: "705083f27a338fea544c9806f0d8fcb3"
+ hash: "37afe96e32df2ac6031d70fe9ded7d56"
}
Frame {
msec: 3072
- hash: "fc29b4888e26deec4c983e487b9bd058"
+ hash: "7a0f09bc5d91c4295000d39c97b31d76"
}
Frame {
msec: 3088
- hash: "0ff734e0509908eba292c1814f677e5b"
+ hash: "afbbb94bc89ef4f9e321dd2c391d0af1"
}
Frame {
msec: 3104
- hash: "7181d9011ddd3ad49ee95fac2e146b12"
+ hash: "93c4ff33449244b76103f0d35cc7a9e1"
}
Frame {
msec: 3120
- hash: "4478b07b0331bb30e60f23ee74475f73"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3136
- hash: "514aa7a4b1230ae1701004f479eeb5f2"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3152
- hash: "56e51f8f36e0f1a5a4b6b21c41151375"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3168
- hash: "f58216f12e507a91482ded5372f960c7"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3184
- hash: "18e8675ca5ea7ade7e32b29f1632e1ff"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3200
- hash: "13ec0166cc7dd82042e596739c598a1e"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3216
- hash: "5cebf9afa912b17ac3161619d238e5da"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3232
- hash: "f096b191e347b7e2eab51b6adc1a5aac"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3248
- hash: "81cffc13a615ab673172912760863c08"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3264
- hash: "e89c7acfc07bc0eb6e9740d545400064"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3280
- hash: "e681f06f57d43a38acb29a3cb45e4384"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3296
- hash: "945bfe7808fb620dc3f7ad887183244c"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3312
- hash: "4d1fc53701adce4e4af87c32e6c5a8de"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3328
- hash: "c42bbf27e800558fab33bc6e9a0f36b9"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3344
- hash: "5f48f59812b17a9be466f0601f0ed0df"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3360
- hash: "f3a3f645115077b7aeb66465280b7a16"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3376
- hash: "d1c295b2157001ff1020515f4b2aceaa"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3392
- hash: "e5f364e0e4bd75dd04280f6b6f48b8ba"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3408
- hash: "f439df4b5907ba0201c0dad934115721"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3424
- hash: "2e7eb0e999792f3aa87c63865f68d26b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3440
- hash: "45d3ccb3b03adc8323445207d2dca502"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3456
- hash: "c345f92a25406e33256bfe47dc7f72f3"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3472
- hash: "dcb2663d27d644c0b50aa7386aa9d488"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3488
- hash: "ebe4b9eaf39676bcdd968f8517efa222"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3504
- hash: "deb3e3e6fdf8fe18de907f88822538e8"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3520
- hash: "30e8ab0e6cf32a45190c4b29e458d858"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3536
- hash: "059e6f57c2c78a25ab8b515c878231f9"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3552
- hash: "fa7621f338ae187edac5cb69b22e64b3"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3568
- hash: "bf287cbb0963fc8e575cd95808e1983d"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3584
- hash: "741dc09e0ae13d6afbdaae701cb699ef"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3600
- hash: "8dd52007df5585aed4b9737a8314a74d"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3616
- hash: "ddcd945a3a4467d8dd0b7a4197aafed5"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3632
- hash: "015deb5f228fa2f77978315ccca4f4c8"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3648
- hash: "e1c960e966873e694837fd98f231cfcb"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3664
- hash: "17a177d37b427d9488e36d19b345a397"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3680
- hash: "d4aded08d04f79d50536ecf539c0583d"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3696
- hash: "72890e9b84acf9df6083e23ab9270da1"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3712
- hash: "313859115de570f8d41f67c4db7cf49e"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3728
- hash: "98918d73b6d6b375db53470dd72c7b35"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3744
- hash: "ff706517a4d257747893c11a3b059926"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3760
- hash: "73e62664a31232c1a349568c8da6ce64"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3776
- hash: "bed046c6eae90d267e859cd76d3eacfb"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3792
- hash: "4643348fc1b47f0d3244e7e717247953"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3808
- hash: "0305bfc35b5618da19e9eabb3c1b5d2b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3824
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3840
@@ -1134,47 +1134,47 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3872
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3888
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3904
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3920
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3936
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3952
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3968
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 3984
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4000
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4016
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 2
@@ -1186,7 +1186,7 @@ VisualTest {
}
Frame {
msec: 4032
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1198,7 +1198,7 @@ VisualTest {
}
Frame {
msec: 4048
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1210,7 +1210,7 @@ VisualTest {
}
Frame {
msec: 4064
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1222,7 +1222,7 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1234,7 +1234,7 @@ VisualTest {
}
Frame {
msec: 4096
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1254,7 +1254,7 @@ VisualTest {
}
Frame {
msec: 4112
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1266,7 +1266,7 @@ VisualTest {
}
Frame {
msec: 4128
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1278,7 +1278,7 @@ VisualTest {
}
Frame {
msec: 4144
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1298,7 +1298,7 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1310,7 +1310,7 @@ VisualTest {
}
Frame {
msec: 4176
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1322,7 +1322,7 @@ VisualTest {
}
Frame {
msec: 4192
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1342,7 +1342,7 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1354,7 +1354,7 @@ VisualTest {
}
Frame {
msec: 4224
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1366,7 +1366,7 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1386,7 +1386,7 @@ VisualTest {
}
Frame {
msec: 4256
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1398,7 +1398,7 @@ VisualTest {
}
Frame {
msec: 4272
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1410,7 +1410,7 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1430,7 +1430,7 @@ VisualTest {
}
Frame {
msec: 4304
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1442,7 +1442,7 @@ VisualTest {
}
Frame {
msec: 4320
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1454,7 +1454,7 @@ VisualTest {
}
Frame {
msec: 4336
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1474,115 +1474,115 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4368
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4384
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4400
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4416
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4432
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4448
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4464
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4480
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4496
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4512
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4528
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4544
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4560
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4576
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4592
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4608
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4624
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4640
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4656
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4672
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4688
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4704
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4720
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4736
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4752
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4768
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4784
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4800
@@ -1590,147 +1590,147 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4832
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4848
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4864
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4880
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4896
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4912
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4928
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4944
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4960
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4976
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 4992
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5008
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5024
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5040
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5056
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5072
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5088
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5104
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5120
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5136
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5152
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5168
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5184
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5200
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5216
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5232
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5248
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5264
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5280
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5296
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5312
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5328
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5344
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5360
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Frame {
msec: 5376
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 2
@@ -1742,7 +1742,7 @@ VisualTest {
}
Frame {
msec: 5392
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1762,7 +1762,7 @@ VisualTest {
}
Frame {
msec: 5408
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5e21e09fa0ec2b1e9f29be60100c40f2"
}
Mouse {
type: 5
@@ -1774,7 +1774,7 @@ VisualTest {
}
Frame {
msec: 5424
- hash: "ba4e61f8de7f078cfc1e5fc8dd3c65f3"
+ hash: "d269b601f6c58e4349a5bc41ed8040cb"
}
Mouse {
type: 5
@@ -1786,7 +1786,7 @@ VisualTest {
}
Frame {
msec: 5440
- hash: "00389598468dbd1a90cada9543715770"
+ hash: "b5fb0c0e78b48380e5d9dd82be64554c"
}
Mouse {
type: 5
@@ -1798,7 +1798,7 @@ VisualTest {
}
Frame {
msec: 5456
- hash: "ab020b76bc23554e176bd3a59712c3bc"
+ hash: "86699ae4ad4491a39272704aa8d2be0a"
}
Mouse {
type: 5
@@ -1810,7 +1810,7 @@ VisualTest {
}
Frame {
msec: 5472
- hash: "96483c5c51cc851c55166b13617b12ea"
+ hash: "f7ad9df8715594e9012d9e6ba61784ae"
}
Mouse {
type: 5
@@ -1822,7 +1822,7 @@ VisualTest {
}
Frame {
msec: 5488
- hash: "1ad679d1400a0f185a380a75840c6a50"
+ hash: "5d50347997afcdd437e8f5b1afd5fdb6"
}
Mouse {
type: 5
@@ -1842,7 +1842,7 @@ VisualTest {
}
Frame {
msec: 5504
- hash: "b5ed338d402d16a831c0595311350789"
+ hash: "40290cb6417848caf299aac419e78b3e"
}
Mouse {
type: 5
@@ -1862,63 +1862,63 @@ VisualTest {
}
Frame {
msec: 5520
- hash: "bf51ff7b6f264170d9c5700559e03262"
+ hash: "cdd32a53cd968afc378069fa7fc08fc1"
}
Frame {
msec: 5536
- hash: "0d62681e661aad7b67b880e13afeb4de"
+ hash: "2f0e8c2f895506b3d484da3024c0e823"
}
Frame {
msec: 5552
- hash: "3371739270c458d4ce8a08f2e12d4ba5"
+ hash: "e97ab47515d55760919b4319f7aa2f4a"
}
Frame {
msec: 5568
- hash: "db271b0ebfa0172d8386ac9afde9f296"
+ hash: "e8698483768d3cf121985ffce93c89e0"
}
Frame {
msec: 5584
- hash: "d64c064ab483c9636b2736c67b2b1a48"
+ hash: "75f23e628458b6abce65873777ec2226"
}
Frame {
msec: 5600
- hash: "20a8ccb0ff1c0d5ff606b343f1a32bff"
+ hash: "5477a54c2c2fd9de2b76a82fb8c9c371"
}
Frame {
msec: 5616
- hash: "5547bb0a4d6b51733829597b9d8d141a"
+ hash: "c20f1a85cf8166664b1dc44986fc7f1a"
}
Frame {
msec: 5632
- hash: "1135177a5cb24aa11372653985599775"
+ hash: "44f4b02055397a06c628564d9f2180f3"
}
Frame {
msec: 5648
- hash: "5031ea6ca8ec59155edb7c1f10f77925"
+ hash: "09d79da372ded40a24d1fdc0d5d97fa6"
}
Frame {
msec: 5664
- hash: "7c5c1015af23f32c002a24a880201883"
+ hash: "7fec934dac44b7365ef110fc9fa2ff0b"
}
Frame {
msec: 5680
- hash: "c1dd3ad07775d74d2e81b830d07543e0"
+ hash: "d9f6e4e21629626f9f3fbdf879173147"
}
Frame {
msec: 5696
- hash: "ad6651f644be3c6f1ebf340809fe516f"
+ hash: "674967f6494a5aa45f4344142f54145f"
}
Frame {
msec: 5712
- hash: "1eb69541ae67d9d9193b86a6592de4c2"
+ hash: "59090ec0960776ae02deb8f2365848a8"
}
Frame {
msec: 5728
- hash: "c9c40ec693a421243804efb8f99707f4"
+ hash: "6ced1eb439584cd55d7ea83b4c6ad89d"
}
Frame {
msec: 5744
- hash: "832884a5102069ca085001156a04e74e"
+ hash: "2f93341754e279408ebe9389987d6354"
}
Frame {
msec: 5760
@@ -1926,239 +1926,239 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "df0c7d73069e1087d34c7a703197cb2a"
+ hash: "6ecfb56d8e685d6e251938ecc740a0d3"
}
Frame {
msec: 5792
- hash: "4a8e1f548e48b86140aa1a5fa8b17bd3"
+ hash: "eb3254187a72afde5091eb240f1ce043"
}
Frame {
msec: 5808
- hash: "f79f47e3a0c16a1361fa287a594c4673"
+ hash: "cc367bfa5264fa7539d26ca7f2b81300"
}
Frame {
msec: 5824
- hash: "c26da5ed2e4055f5c172b48163560143"
+ hash: "6a869340f179e768d271b28fd8983c1b"
}
Frame {
msec: 5840
- hash: "0e971cd0c2e25d52b689d4b22509a7d9"
+ hash: "e22f23a5d5e55eed1e74414dfd4da00f"
}
Frame {
msec: 5856
- hash: "40bae0ef35772c476cddccc034b7c872"
+ hash: "c6b0c88158ff5052bb3e8ff4c46fa0f3"
}
Frame {
msec: 5872
- hash: "ce1fc0faae5e313bc21e024dac3097da"
+ hash: "8cebf630fa954c5a3be2b26b29597379"
}
Frame {
msec: 5888
- hash: "ba614972cec0e9fa47cb09f1ba77eefb"
+ hash: "60bc980648f99ca37a80bff2e462f2f6"
}
Frame {
msec: 5904
- hash: "2266ae29490ae01ff8a2329956c124a7"
+ hash: "8c3db2a7a7314931a5553408f41551af"
}
Frame {
msec: 5920
- hash: "debae0194926cb5af0a8f7fdfb7f08b8"
+ hash: "97323491971e95f6d09c83afbcadcbdc"
}
Frame {
msec: 5936
- hash: "10a7111367cfcbe24063b9ee6975e4fc"
+ hash: "9abecb040056c3d07614c1d0253d08c6"
}
Frame {
msec: 5952
- hash: "3c0f9e0603e33506f31ff6569d007b97"
+ hash: "b3efc154d193cb69f074c511918f4976"
}
Frame {
msec: 5968
- hash: "69d92abce3f093cc7610bd715a7396fa"
+ hash: "e8fd8d8ebfb33d0f7c7717f89dec87b8"
}
Frame {
msec: 5984
- hash: "befad9882a6af920684d94c74d8d7f78"
+ hash: "fe9eb2c5b292db6fedbdacb4e31b8d9c"
}
Frame {
msec: 6000
- hash: "10632052ac53504bd36687ba7aa7ebc1"
+ hash: "6e86cbefdb523a7153019aa6c3bdee40"
}
Frame {
msec: 6016
- hash: "af4053320c12cbcc6f0e7e321dba1c83"
+ hash: "142b81c3de5c7140680f6c0ed77e7a55"
}
Frame {
msec: 6032
- hash: "4560c5fcef9d630d744e80dc46947b9d"
+ hash: "cfef661007ee19ef6c39cc784f3e8369"
}
Frame {
msec: 6048
- hash: "012ee780ed98131321aaa241a2599c5f"
+ hash: "1305eafc2ffd60605274e043829bce0c"
}
Frame {
msec: 6064
- hash: "25d3fb9d44bc2be3b86a5451d8ffaec2"
+ hash: "3c6d2fc8364dd9e5e0409cc6f3d16e78"
}
Frame {
msec: 6080
- hash: "09c5cbff81a5c9fae40ec29b936ee52b"
+ hash: "e1eb0c51700d3b5c56cf8555d9eb8cf6"
}
Frame {
msec: 6096
- hash: "27a0b1d2ea2fc8729e5542c6462c1815"
+ hash: "9778e7a92f9223f4a8b01edab2627c94"
}
Frame {
msec: 6112
- hash: "c6f347c942aed190ebee077b5bd0888c"
+ hash: "7616da76832eace7846df67ff29524bd"
}
Frame {
msec: 6128
- hash: "029d78844bd72acb310bd2887489bdf0"
+ hash: "f7bf509b2764a44227e1b6ebbb6bcabe"
}
Frame {
msec: 6144
- hash: "3af16ab398f1515e90e81460ac061a74"
+ hash: "a2efece1011c7f90872154242db70d46"
}
Frame {
msec: 6160
- hash: "0151ca050722645e2899919f79f6aa0b"
+ hash: "f77dbceb3f26533f2f795ea16116a880"
}
Frame {
msec: 6176
- hash: "eead61dfc1851bc9fba3b4bca510af6a"
+ hash: "8874effc7fa1455c658490f42aad0046"
}
Frame {
msec: 6192
- hash: "da822098c606556ad8683316f5a821ab"
+ hash: "6d8e2a8c79eed4edbc7a1005fd7e85fd"
}
Frame {
msec: 6208
- hash: "ee47fc2bcf2264f5799a76308fbf2b65"
+ hash: "7d0f33ce8f934f0d4bfd6ac5b50bc0a6"
}
Frame {
msec: 6224
- hash: "81b208b84ca887d35cda79b5c0e4cd4e"
+ hash: "1aefde7dbbd6ca7f57637147bfd7a664"
}
Frame {
msec: 6240
- hash: "fd52ccaddcb79a2dfa12bb57640a3610"
+ hash: "524fa1fc729a033983817fd9591dff09"
}
Frame {
msec: 6256
- hash: "b187e8fcd0a777657a733c260aaaf557"
+ hash: "c5559eb1e5bb5d2ab20888831a3924a0"
}
Frame {
msec: 6272
- hash: "2cfe47a86bf9df3704002288b6249ed9"
+ hash: "e5e78ff025bfa205f6ad243484122ec1"
}
Frame {
msec: 6288
- hash: "b79b81706f62789a15557ac1a017addf"
+ hash: "b3a4e501838e7c44f9b0e21b263922a3"
}
Frame {
msec: 6304
- hash: "77a84eb447fe7034783678f6903ff76d"
+ hash: "c35ddb641840b7d7a100e074aab82bb8"
}
Frame {
msec: 6320
- hash: "82529385d3072812fa737193914ece1c"
+ hash: "1121ff859d3a120efd8d3f6b307d2f5c"
}
Frame {
msec: 6336
- hash: "a7ccfa6c8aebf2016f2f12045d2f1abe"
+ hash: "2be325c442cfc17ae7b722add60170e1"
}
Frame {
msec: 6352
- hash: "486d38e7ea6a5cf13f2ecd1c6919ece7"
+ hash: "c3e86d4a73c739c159e71255ca08457e"
}
Frame {
msec: 6368
- hash: "6c5bd377d2289ec88f969e961f1dcf65"
+ hash: "fc56984eb2c3c9db61a54edcfe67f36b"
}
Frame {
msec: 6384
- hash: "92e20565fbcf8c7c9a67726f3a0dd41f"
+ hash: "477421a20f47af33b4272fd8f63718bb"
}
Frame {
msec: 6400
- hash: "0fcd995a26262b875440d0d9f03d16c4"
+ hash: "dee4659125ff750159c5b5ec0acd6a99"
}
Frame {
msec: 6416
- hash: "f679759eddca739764bd2816ee53ef31"
+ hash: "31dce66ad26dbcee6f1515dd43a94354"
}
Frame {
msec: 6432
- hash: "adffd1da9b750df3d9f48820a2235c0b"
+ hash: "25c4478c27d808b85746cd65fbb1f93f"
}
Frame {
msec: 6448
- hash: "e0f8730acf7a6802ade228f95d700c08"
+ hash: "f9094ea959b54b92a6d39db6cd9b5f10"
}
Frame {
msec: 6464
- hash: "2c5209c3715bb9f39ac23a8b32a17ef9"
+ hash: "47f1d0f234073353ca233206c2872093"
}
Frame {
msec: 6480
- hash: "741694ef4cbd3477a8e13ba89fc9d607"
+ hash: "3a6cf2c77f1ae99977f2ed0b4683aecf"
}
Frame {
msec: 6496
- hash: "e88d6a61acb3fde6b441c2e718a0c2fb"
+ hash: "df203035dbd68ffe2c9dc532061e7927"
}
Frame {
msec: 6512
- hash: "b91863800e6ab967616d68def388d5d5"
+ hash: "20f69f8e32fd217967feb9a955e27717"
}
Frame {
msec: 6528
- hash: "4c28a99236c351a2e3e3301c0b5bbba8"
+ hash: "0bd932d1953ee28c38a359ddfb0c2075"
}
Frame {
msec: 6544
- hash: "6affb524d7f63fef94d29629a148be04"
+ hash: "0c6c75cca96a1d04c9b60d9bd1543318"
}
Frame {
msec: 6560
- hash: "f7823d25adf673117f010738d977b787"
+ hash: "9b4c8f6cf066800c1f2bb07357fc2e0d"
}
Frame {
msec: 6576
- hash: "dfb930f3db30ec53c8e9a1aa5d9056e4"
+ hash: "eb861eb18ddb237cd11d24e101be83d1"
}
Frame {
msec: 6592
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "086db75c06bf1fb1f527f5c8e6255d02"
}
Frame {
msec: 6608
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "e807b1166ca3f658c780b1fef8400b8d"
}
Frame {
msec: 6624
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6640
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6656
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6672
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6688
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6704
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6720
@@ -2166,138 +2166,138 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6752
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6768
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6784
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6800
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6816
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6832
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6848
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6864
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6880
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6896
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6912
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6928
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6944
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6960
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6976
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 6992
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7008
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7024
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7040
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7056
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7072
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7088
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7104
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7120
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7136
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7152
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7168
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7184
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7200
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7216
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7232
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7248
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
Frame {
msec: 7264
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "a9c65a178a4b4598705bf736c0b1b595"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
index 16a7e108b7..d94ea1961e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
index 116ce88627..df940dfe4a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
index 13896d4e0a..d10afe117d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
index 5d180031e2..8f99617efd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
index cd3387f99f..18b1c09679 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
index 9f31c69893..e15d688f62 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
index 06d32b6128..949807d96d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 912
- hash: "1c2d4a99e7e2f5e945c05857d6a463a2"
+ hash: "01b9c877f51b878ed262943aedcf89b4"
}
Mouse {
type: 5
@@ -558,79 +558,79 @@ VisualTest {
}
Frame {
msec: 1616
- hash: "0b3782e842a6c54585d6a266314025d8"
+ hash: "64c0ba48b59addcbd9dc2a36c24b3070"
}
Frame {
msec: 1632
- hash: "02409885b82ebac931df18d8e23238d7"
+ hash: "5ce463d514a776055897052defbae117"
}
Frame {
msec: 1648
- hash: "edcbd91ad267c125c431367be3e4a8a3"
+ hash: "16b25853ec30feee97c3f11a0ea5767e"
}
Frame {
msec: 1664
- hash: "47641fd7ec919b3c041c5acc04b0d083"
+ hash: "55cfc9179923c935a44de0fee69d74ce"
}
Frame {
msec: 1680
- hash: "ea8f026fee0fba2c27a8df1e1e531acb"
+ hash: "47641fd7ec919b3c041c5acc04b0d083"
}
Frame {
msec: 1696
- hash: "e2e8a398760be380f9b2b7dbcb03c0e8"
+ hash: "466eedb320beed99d7eba5a71095438a"
}
Frame {
msec: 1712
- hash: "a1767f2e10f9ab87050ef246a4a29bbb"
+ hash: "a7520215940ca21acd148ca88c0fec62"
}
Frame {
msec: 1728
- hash: "f60cccf793bd6d356d69b1394638a201"
+ hash: "f5c8bff5c3305064dbaa777707994de3"
}
Frame {
msec: 1744
- hash: "31dc8c50a99164c19445a089223c8813"
+ hash: "95b37e22bb68634029e18bcef7e9502c"
}
Frame {
msec: 1760
- hash: "78ff726b7da5ba03fa74f66b39bf1006"
+ hash: "f60cccf793bd6d356d69b1394638a201"
}
Frame {
msec: 1776
- hash: "6f8a540dccf7182f6aed8903a0afb109"
+ hash: "d77a5c2553e9391c14a49dba951ae236"
}
Frame {
msec: 1792
- hash: "c914c500507b9c7180dcf25e985135e9"
+ hash: "0bfa2f6e5fa25a9847c2515de8ad53bd"
}
Frame {
msec: 1808
- hash: "39702ce38bcfca46ef3a8dbb7299c725"
+ hash: "202c077b20213814545ab594987b3c46"
}
Frame {
msec: 1824
- hash: "969b71ee88a1d244e62af1cecc105234"
+ hash: "32c5d1644c4f6a3386b4300b1dadae2e"
}
Frame {
msec: 1840
- hash: "11c8397fb9d7b993761b08ba8c9958e5"
+ hash: "c914c500507b9c7180dcf25e985135e9"
}
Frame {
msec: 1856
- hash: "79ad4a90ab449e3232db993b30786d89"
+ hash: "62095b2214425007cb19a6218819ed21"
}
Frame {
msec: 1872
- hash: "daf979fd50e0860bf30f377a059d89dc"
+ hash: "06d25e03eca85906c93d60b7c80b353c"
}
Frame {
msec: 1888
- hash: "5412e7524dc22e8064c8a8c684092802"
+ hash: "605992eb3f636b705b4b6dd7dfbe1a5f"
}
Frame {
msec: 1904
- hash: "2c3bea8bf10ecf6c19b93e94cb7ac0ea"
+ hash: "3241ccb6da86acc69bb07c044ba5bade"
}
Frame {
msec: 1920
@@ -638,15 +638,15 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "bbfa2f8aaab0abaff9d771d5ec546d96"
+ hash: "f09fe53cd6698a94d1626df1a1e4079b"
}
Frame {
msec: 1952
- hash: "be2811bf369bc9dd8c5d9deec3b84788"
+ hash: "aff96cfa2f88f1f2ce6af5e6a838fb79"
}
Frame {
msec: 1968
- hash: "779838915f48eb917d36c3f2b65eedae"
+ hash: "dddc255c053608f6b199cebb40e164bc"
}
Mouse {
type: 2
@@ -666,7 +666,7 @@ VisualTest {
}
Frame {
msec: 1984
- hash: "d20b5fe14b47dfb1e73f8ef44802da11"
+ hash: "345864eccf0b48f94097c9e0f037d71d"
}
Mouse {
type: 5
@@ -678,7 +678,7 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "5312dd1f9d309ab5134b8bb67685488e"
+ hash: "05e9776009f78d5466473c67a900e74d"
}
Mouse {
type: 5
@@ -698,219 +698,219 @@ VisualTest {
}
Frame {
msec: 2016
- hash: "8d6b6cbb74cc654bc5aff10a807dd3cb"
+ hash: "3a2bca372b5e492d71c73c945851a616"
}
Frame {
msec: 2032
- hash: "dee717869177d1de4a26599b120f1c3d"
+ hash: "f7957d18f0fc7421f7109dfc5debba3a"
}
Frame {
msec: 2048
- hash: "2b2c60f42024784ceed5c68505dfa5ca"
+ hash: "cdd2a73b65b60991f1a3671cc668fa0e"
}
Frame {
msec: 2064
- hash: "1a6a108fd6cf607ec08dbedd804d12f7"
+ hash: "d1646d66d0726f163cd32d4e985da46b"
}
Frame {
msec: 2080
- hash: "10bc4d0a1dc400fedc9a68b68c6525fd"
+ hash: "1d2ea750a691ba78943c8e6e1a950017"
}
Frame {
msec: 2096
- hash: "dc6a4abfbfb38e90af2308320d0f795b"
+ hash: "c372a639a59e7cb1f5573de540dd0dcf"
}
Frame {
msec: 2112
- hash: "82c61d8461001c19af7c2b458d427e0b"
+ hash: "964fc74c67a84cb84516389c57468ada"
}
Frame {
msec: 2128
- hash: "e455d9ccffedaa708532bb69ad15871e"
+ hash: "7310eb82821b9c209dd9e54d7b8d2e61"
}
Frame {
msec: 2144
- hash: "b9c6169ad08724fc70df30668dfe7509"
+ hash: "55b62e5afa61e8acb4faf97f7c2b1aa5"
}
Frame {
msec: 2160
- hash: "a3fe5862be470470854d4157c1c027db"
+ hash: "4a9994d898380369eb705efb52839402"
}
Frame {
msec: 2176
- hash: "6a3804bd5f4fd5f1c424615ceb620525"
+ hash: "340811fac74949d8561c825547801ab0"
}
Frame {
msec: 2192
- hash: "df0d72248310654a9cf47e707fe9e414"
+ hash: "4ab688cb3f157dff07a652a84d1ed1da"
}
Frame {
msec: 2208
- hash: "beb19f2b2979ab40b5ccf8c0fbe9b72f"
+ hash: "a249bd338776e1f0d11ad70aebcb91b3"
}
Frame {
msec: 2224
- hash: "be3449b49048b764bea68a76baa0fc75"
+ hash: "6db4a1fd4f2597a180705b7d927ef512"
}
Frame {
msec: 2240
- hash: "4a615cae9c8f85e7b8aecd4c9014f1eb"
+ hash: "7a47ac68a2a433d6edce92b772c3c608"
}
Frame {
msec: 2256
- hash: "b3c274f1a9d65684c0a55a544bf77810"
+ hash: "10f23e9e7729a6525549b71143ae539c"
}
Frame {
msec: 2272
- hash: "31456b01fcfb60a77d2b9662c2fff7b6"
+ hash: "c977e2525e1fb7406414862fbd23fcf8"
}
Frame {
msec: 2288
- hash: "2be5cf3f6158bf09659acc68b134846f"
+ hash: "66251028e13fbd8f4f4d6836eb9615f9"
}
Frame {
msec: 2304
- hash: "5f9c725a11305f3e6c48ab332faabf50"
+ hash: "925b50a4f9fe33d83463914c2221be82"
}
Frame {
msec: 2320
- hash: "277c2733c7245d045665198984b74224"
+ hash: "7169f87de9a332bb94108661e9783a54"
}
Frame {
msec: 2336
- hash: "265b8342bc747fb43a5291df0f4ce48b"
+ hash: "3ff3c0d2db8d1d65cfc7b14520cf41aa"
}
Frame {
msec: 2352
- hash: "803b49ec31955b481009a51c64bcce65"
+ hash: "0757ee68ff9923a2dbeb2129f3d4409c"
}
Frame {
msec: 2368
- hash: "a717b30ad50746cdf0fae82212ac88f0"
+ hash: "223dd69204949b494cda0762ef9965fd"
}
Frame {
msec: 2384
- hash: "65f46c8e69f24d060b5da6f866867f51"
+ hash: "e97c6ba010857de43baeccbe85e2b262"
}
Frame {
msec: 2400
- hash: "52f9e5d1106d00a950470076a50e4239"
+ hash: "9f170350da8b3785d5db9c24ce8cacf8"
}
Frame {
msec: 2416
- hash: "058a787aae2845308e68bb93f6a811e4"
+ hash: "512f3a1ef9d5c263ab22559490dc3022"
}
Frame {
msec: 2432
- hash: "621985111c25994c0c0fe3635be67c1d"
+ hash: "0f3df7f366bc918c55172df45c22056e"
}
Frame {
msec: 2448
- hash: "2949b8185cefbaaf587a043d805cc670"
+ hash: "71f8f04423b9a3356aa08235a91ddde7"
}
Frame {
msec: 2464
- hash: "d4a03127ae5047184c736617deeac92d"
+ hash: "0c48c98562318f7bac502c49fd09fd5e"
}
Frame {
msec: 2480
- hash: "876c6c5ac4500de6234423bf6f3511d6"
+ hash: "17defd865ec00da3a74360044a906ea9"
}
Frame {
msec: 2496
- hash: "eb08aa172cfbdb696b6f672dfa7b6fff"
+ hash: "07ef0b634016b52023174a6a593cb2aa"
}
Frame {
msec: 2512
- hash: "a60c13b8f46faa0a35dbb539010550d4"
+ hash: "56d06c41e9ad55852654bcc6ce77504d"
}
Frame {
msec: 2528
- hash: "c6f8786506e0326a5734ab8aea782f95"
+ hash: "05848d818a1531a649f9c23947e67855"
}
Frame {
msec: 2544
- hash: "a49927f2aae24e692fc379f0ab6f4ee9"
+ hash: "11c8397fb9d7b993761b08ba8c9958e5"
}
Frame {
msec: 2560
- hash: "2f1a2d50e1090b34ad1ea6a36eec4fe0"
+ hash: "82255275db096d4150bd6cbd07805b3f"
}
Frame {
msec: 2576
- hash: "a5ee24d37be960a88684748b73dc75fe"
+ hash: "8dd3572656f6feb16d55d9318b6b6317"
}
Frame {
msec: 2592
- hash: "28682389395b47ae33ceec1ba3beef4e"
+ hash: "8096e99b41c38a777df2010057119afb"
}
Frame {
msec: 2608
- hash: "1869667b50b76d99716dd0d7849901fa"
+ hash: "4187c358b8319dffdef36c67b02a4921"
}
Frame {
msec: 2624
- hash: "2806ee1005193f55825aa6147583985f"
+ hash: "f891ef9a694bc6513f04e38d34c78e24"
}
Frame {
msec: 2640
- hash: "c00589dce90e3ab2f2c8890f30f80d3d"
+ hash: "77db9416fb003a5bb793b6573ca3a3cd"
}
Frame {
msec: 2656
- hash: "1f1881f0a29525e380ecbcce15499fa4"
+ hash: "152cf831ca83212fc026b1146c49a386"
}
Frame {
msec: 2672
- hash: "2a4c3ff764545a3899c864680f22f0a3"
+ hash: "a596b17515b471d5e67edda3baf8938b"
}
Frame {
msec: 2688
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "307db3e3c929da9783b12d7a2efdbda5"
}
Frame {
msec: 2704
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "1baff6641852daabdc639a35a4821189"
}
Frame {
msec: 2720
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "1f7df5b9c29773c7ae3d08005e7dd903"
}
Frame {
msec: 2736
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "7eb1937ccb2727c27e57b7d7960678d2"
}
Frame {
msec: 2752
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "8294b7a9105083887634973a1c64b70a"
}
Frame {
msec: 2768
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "89ea9be6ebb280ff43d7b037d989aa53"
}
Frame {
msec: 2784
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "4cbeaef4f796eebf114c5e470389d30a"
}
Frame {
msec: 2800
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "0ce8c069bf3fb31d759d62e429c67a15"
}
Frame {
msec: 2816
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "201f1b39884249f60a53a201f783ce9b"
}
Frame {
msec: 2832
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "bcafa2c76a9747a64565a3d3484c1c91"
}
Frame {
msec: 2848
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "94c7ff74b5a37b6e03a47afc40fde107"
}
Frame {
msec: 2864
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ hash: "08127dfa54da0616ce6cb19c646487ed"
}
Frame {
msec: 2880
@@ -934,7 +934,7 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "ce00c77e8ff1768b41f5585344af1c58"
+ hash: "b76ce9c50fcbe38a29c1930302dd61da"
}
Mouse {
type: 5
@@ -946,7 +946,7 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "24f401275fa6ec7d26234609792fe0b8"
+ hash: "d30704b159562c21cd2f42f2370acdfa"
}
Mouse {
type: 5
@@ -958,7 +958,7 @@ VisualTest {
}
Frame {
msec: 2928
- hash: "d3c74863c627a1b922a6b6c4a24f8c40"
+ hash: "db0916ebf147ee738aaf7492bd38c262"
}
Mouse {
type: 5
@@ -978,203 +978,203 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "64a3209e6adc737065e5d5c3202a7283"
+ hash: "128058d78c8ceabf4867c8c2d23c8007"
}
Frame {
msec: 2960
- hash: "cf936ffe4330edefddb31c59368491fc"
+ hash: "9a59b6d1576b70796abcd58167e5135e"
}
Frame {
msec: 2976
- hash: "a67213db044bb876f737cd355fe54444"
+ hash: "2d5f030aa7ae5f7b5df1894f0250a391"
}
Frame {
msec: 2992
- hash: "0f9e97057cbbd8071e0f5f61318bdf9c"
+ hash: "fb45fe68abab13f5eb4e8022f1e4e2f1"
}
Frame {
msec: 3008
- hash: "c5f38d334df86ebb6ac4600c83eced20"
+ hash: "ad090853500b3720c1bb4d750731e25c"
}
Frame {
msec: 3024
- hash: "6d8e6049a36eac4136dbdb5fb18d0650"
+ hash: "f8f560f26cc0b63f51858c5119b7a1ef"
}
Frame {
msec: 3040
- hash: "8ee97cff4a632e6e297bd3bdac27b8d4"
+ hash: "87e9d53c0ffcf7231693d9d6619ad37e"
}
Frame {
msec: 3056
- hash: "aca1fcd005d211d35245e64a44002c01"
+ hash: "73000f490569eb178d47a00b96d39a17"
}
Frame {
msec: 3072
- hash: "7076180bf0eb14a5e733be9320f1f009"
+ hash: "b8a196eca9c3bd95659931115bec319f"
}
Frame {
msec: 3088
- hash: "e0a0545b3a0b6a0b07d3fa987e1d58b6"
+ hash: "5f9265d0818701ce08066b55a8bbd904"
}
Frame {
msec: 3104
- hash: "0294b098ce7f0d381542776320e52d2e"
+ hash: "9a62f2e25e8d32872e43fbdcdb838756"
}
Frame {
msec: 3120
- hash: "36f8bcc42add38fe149e34a703cf8a02"
+ hash: "1c7b238074d274e4f105b5c2b7fd6dac"
}
Frame {
msec: 3136
- hash: "631426bde50fd35d1da1c30d9878253e"
+ hash: "f6fbd5658a122ced7257852b4d38605d"
}
Frame {
msec: 3152
- hash: "a4d64c9d378138bedf63389e58d8f1d6"
+ hash: "24a0cc1d69213b12f9420fa9ffee7319"
}
Frame {
msec: 3168
- hash: "17fdf61bffd947c2e9898f5c4517fdf8"
+ hash: "8811594c57e514da3afeb04460569e5d"
}
Frame {
msec: 3184
- hash: "653b8c7a55bc4ca763238098711eafa1"
+ hash: "760d4afdc958184b5b68bc3bcc2f1d3b"
}
Frame {
msec: 3200
- hash: "89e15b3ee1b1fc945801e08cfcdba62c"
+ hash: "b3b2ca99af9aa022dfebf71bfa1cd491"
}
Frame {
msec: 3216
- hash: "7ea615af67336895e6cee6d3a39ff7de"
+ hash: "293dbff5edf4dde1f57ca3af1c4bce5e"
}
Frame {
msec: 3232
- hash: "88faee45db80f04ef1120c35057a5f7d"
+ hash: "0c48c98562318f7bac502c49fd09fd5e"
}
Frame {
msec: 3248
- hash: "8cfe34047b29ac85e58d55e0f6e0b195"
+ hash: "1cac8d792f55f3e47549d628bd729a7d"
}
Frame {
msec: 3264
- hash: "39255546502fcb882005fe4c38c21fb0"
+ hash: "d63664b4a6c42c67a3c700e3a000fc07"
}
Frame {
msec: 3280
- hash: "6bf7a959a05fc27f651b2a3ba07de30d"
+ hash: "be41201056bd58d4793c9c7b5cc63f3f"
}
Frame {
msec: 3296
- hash: "c2c61cb8dbbbd38827277ab32579c6da"
+ hash: "0ea52d61c7b8803d76340874b846783d"
}
Frame {
msec: 3312
- hash: "ff370d4b4e44c4cbacca96107105df21"
+ hash: "260c743db91b8802e2c27f8c92d620e5"
}
Frame {
msec: 3328
- hash: "ccadd9e070d54de21c76397d18ad3de8"
+ hash: "33d3dbe981874cd04edd35a4e5bf4e68"
}
Frame {
msec: 3344
- hash: "6302c39de00070b0a23f9dc87f74dd8d"
+ hash: "27d183bfe7a7775ba47578de7a5b2dcb"
}
Frame {
msec: 3360
- hash: "7ab69e6d9809c78dc723609bd2761206"
+ hash: "a6c0bd87922ca8d40fe413ab8624dd24"
}
Frame {
msec: 3376
- hash: "c429cc724b39891805cf4c1448de60b3"
+ hash: "218d68463d34cc31dc81756be9effd02"
}
Frame {
msec: 3392
- hash: "396ddf0b01e9fe7c2bfb220e64a0c7ec"
+ hash: "29e9148ab8c0aa66988a6bcda12b06ea"
}
Frame {
msec: 3408
- hash: "7a519a4efeecef5e7623a270e458fb13"
+ hash: "8cc09fb7e94b1bd0d3482e0bf5d0abec"
}
Frame {
msec: 3424
- hash: "869d174a939e0638a1a22d5c8a010c14"
+ hash: "39a595b99ed012a1e54b516b75f8652d"
}
Frame {
msec: 3440
- hash: "9ecd2cf4e3b42ff93bcbf4db9829666c"
+ hash: "30754f5e10dc0d148f10a5eced16258a"
}
Frame {
msec: 3456
- hash: "b06b58b250d3df365806a3f8991d57f3"
+ hash: "85de32bfdfaea28e4c534dca69b1255e"
}
Frame {
msec: 3472
- hash: "7a6fb03feb2ae0af1f143daedd22a88b"
+ hash: "459bda74f223c6cfbee12524939b09ef"
}
Frame {
msec: 3488
- hash: "e9fe338dbe7afb69f3870743b0a18805"
+ hash: "db2ae2401ff1a65911339e2292f075dd"
}
Frame {
msec: 3504
- hash: "04b8def2085e9ce4065b02b938915557"
+ hash: "0cc18d7cbf42cb68baedd73cf59d8c08"
}
Frame {
msec: 3520
- hash: "7e6942f72012875ba83a1c9121e1f786"
+ hash: "36c72c3d608fc5126f4b62d4416ad54e"
}
Frame {
msec: 3536
- hash: "291e2d79a79959d9c8c586b6bdc31689"
+ hash: "7f4db14f493a300ba37dae79a9d60084"
}
Frame {
msec: 3552
- hash: "e490bc7fd92f486b964cca967bd33b38"
+ hash: "efe0031b95195bebfd887ef63c2ce441"
}
Frame {
msec: 3568
- hash: "0c9858e0445e25d2b12c84801de441cb"
+ hash: "ade092ef64fc3b1e4d4afc86dca3cf71"
}
Frame {
msec: 3584
- hash: "72ba7a4aacb150e1e9c6de72cff82258"
+ hash: "e57a7cf2f90b87fed0fd438599fabae3"
}
Frame {
msec: 3600
- hash: "1daca95256842545a5b77bcc46782478"
+ hash: "1be372fe7de83c4d019e3856c03b39b6"
}
Frame {
msec: 3616
- hash: "869f3d16e203ad47f1ae7ca83e369b75"
+ hash: "4cb14166395004b6f0f04c6d95879583"
}
Frame {
msec: 3632
- hash: "9cc9cb20aab3369f4e3c5259d291708c"
+ hash: "a5ec71ba41f5fc0eeebf907749f26266"
}
Frame {
msec: 3648
- hash: "a507b957bab3efe2023a65f8c8b3540a"
+ hash: "257ef3bb651dbd43635576563c0f97c7"
}
Frame {
msec: 3664
- hash: "9fce2a6cddd8b06a80ce16599b56caa6"
+ hash: "aa95d440ff9c75215bd2483befe18f78"
}
Frame {
msec: 3680
- hash: "2f85d3064968e3e7b669f733fad58459"
+ hash: "670815d144a7838b02bf24cf586c8df4"
}
Frame {
msec: 3696
- hash: "6dd6fad85dc5317a22a05a8486317767"
+ hash: "5f58ff1dd96ee21710ce2aeee81c232b"
}
Frame {
msec: 3712
- hash: "b0faa2ec225cd96fb6d2fd05dc66bed1"
+ hash: "0c5a6c2dfbac5b97481b8e505fd4c4eb"
}
Frame {
msec: 3728
- hash: "3188219f095c2a9ac7c0f6034463d769"
+ hash: "b269e9fe4d14537c8bef0b66effe7319"
}
Frame {
msec: 3744
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
index ce516ac77e..c89bd68501 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
@@ -33,7 +33,7 @@ Rectangle {
PathView {
id: photoPathView; model: rssModel; delegate: photoDelegate
- y: 100; width: 800; height: 330; pathItemCount: 10; z: 1
+ y: 100; width: 800; height: 330; z: 1
path: Path {
startX: -50; startY: 40;
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png
deleted file mode 100644
index 3234c98d30..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
index bdf8fee97e..5d88df7d3e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
@@ -6,334 +6,130 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 32
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 48
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 64
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 80
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 96
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 112
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 128
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 144
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 160
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 176
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 192
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 208
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 224
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 240
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 256
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 272
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 288
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 304
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 320
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 336
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 352
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 368
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 384
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 400
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 416
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 432
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 448
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 464
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 480
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 496
- hash: "e9c524091a0351926c3d658b9935f176"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 512
- hash: "e9c524091a0351926c3d658b9935f176"
- }
- Frame {
- msec: 528
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 544
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 560
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 576
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 592
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 608
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 624
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 640
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 656
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 672
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 688
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 704
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 720
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 736
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 752
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 768
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 784
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 800
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 816
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 832
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 848
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 864
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 880
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 896
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 912
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 928
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 944
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 960
- image: "usingRepeater.0.png"
- }
- Frame {
- msec: 976
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 992
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1008
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1024
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1040
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1056
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1072
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1088
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1104
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1120
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1136
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1152
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1168
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1184
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1200
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1216
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1232
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1248
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1264
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1280
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1296
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1312
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
- }
- Frame {
- msec: 1328
- hash: "2b1fb0ebb6f728fe685d95b5947cce90"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
index 8da3602aa5..b5685d1a9a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
Item {
- width: 400; height: 400;
+ property string skip: "Expected to fail until QTBUG-14839 is resolved"
+ width: 120; height: 60;
property int step: 0
function tick()
{
step++;
if(step == 1){
- row1.destroy(); //Not dynamically created, so is this valid?
+ //row1.destroy(); //Not dynamically created, so is this valid?
}else if(step == 2){
r2a.destroy();
}else if(step == 3){
@@ -21,42 +22,46 @@ Item {
}else if(step == 7){
r3c.parent = row2;
}else if(step == 8){
- row3.destroy();
+ //row3.destroy();//empty now, so should have no effect//May be invalid, but was deleting the reparent items at one point
}else{
repeater.model++;
}
}
- //Tests base positioner functionality, so just using row
- Row{
- id: row1
- Rectangle{id: r1a; width:20; height:20; color: "red"}
- Rectangle{id: r1b; width:20; height:20; color: "green"}
- Rectangle{id: r1c; width:20; height:20; color: "blue"}
- }
- Row{
- y:20
- id: row2
- move: Transition{NumberAnimation{properties:"x"}}
- Repeater{
- id: repeater
- model: 0;
- delegate: Component{ Rectangle { color: "yellow"; width:20; height:20;}}
+ //Tests base positioner functionality, so don't need them all.
+ Column{
+ move: Transition{NumberAnimation{properties:"y"}}
+ Row{
+ id: row1
+ height: childrenRect.height
+ Rectangle{id: r1a; width:20; height:20; color: "red"}
+ Rectangle{id: r1b; width:20; height:20; color: "green"}
+ Rectangle{id: r1c; width:20; height:20; color: "blue"}
+ }
+ Row{
+ id: row2
+ height: childrenRect.height
+ move: Transition{NumberAnimation{properties:"x"}}
+ Repeater{
+ id: repeater
+ model: 0;
+ delegate: Component{ Rectangle { color: "yellow"; width:20; height:20;}}
+ }
+ Rectangle{id: r2a; width:20; height:20; color: "red"}
+ Rectangle{id: r2b; width:20; height:20; color: "green"}
+ Rectangle{id: r2c; width:20; height:20; color: "blue"}
+ }
+ Row{
+ move: Transition{NumberAnimation{properties:"x"}}
+ id: row3
+ height: childrenRect.height
+ Rectangle{id: r3a; width:20; height:20; color: "red"}
+ Rectangle{id: r3b; width:20; height:20; color: "green"}
+ Rectangle{id: r3c; width:20; height:20; color: "blue"}
}
- Rectangle{id: r2a; width:20; height:20; color: "red"}
- Rectangle{id: r2b; width:20; height:20; color: "green"}
- Rectangle{id: r2c; width:20; height:20; color: "blue"}
- }
- Row{
- move: Transition{NumberAnimation{properties:"x"}}
- y:40
- id: row3
- Rectangle{id: r3a; width:20; height:20; color: "red"}
- Rectangle{id: r3b; width:20; height:20; color: "green"}
- Rectangle{id: r3c; width:20; height:20; color: "blue"}
}
Timer{
- interval: 500;
+ interval: 250;
running: true;
repeat: true;
onTriggered: tick();
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
index c318a99b75..c236b6a73a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
@@ -1,7 +1,7 @@
import QtQuick 1.0
Item{
- width: 200; height: 600
+ width: 40; height: 320
Column{
Rectangle{color:"Red"; width:40; height:40;}
Repeater{
@@ -11,5 +11,6 @@ Item{
}
Rectangle{color:"Blue"; width:40; height:40;}
}
- Timer{ interval: 500; running: true; onTriggered: rep.model=6;}
+ Timer{ interval: 250; running: true; onTriggered: rep.model=6;}
+ Timer{ interval: 500; running: true; onTriggered: Qt.quit();}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
deleted file mode 100644
index 21b6afbed9..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
deleted file mode 100644
index bb8a02bc4c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
deleted file mode 100644
index da60237b23..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
deleted file mode 100644
index 3e943e8819..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
deleted file mode 100644
index 4fbaf2634c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
deleted file mode 100644
index c10d1966ab..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
deleted file mode 100644
index a672c064c4..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml
deleted file mode 100644
index 2500ef0d3f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml
+++ /dev/null
@@ -1,1807 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "1f60efdb8704b92c9361daa468a25391"
- }
- Frame {
- msec: 32
- hash: "3bb6a87617e0e5d4922e573eec975886"
- }
- Frame {
- msec: 48
- hash: "268941737e6324d580890b151de621fb"
- }
- Frame {
- msec: 64
- hash: "99c674eccc082d7f0982257a748d93e5"
- }
- Frame {
- msec: 80
- hash: "2970467e8262c8a3f0b11be71245d048"
- }
- Frame {
- msec: 96
- hash: "63cbd06d6bb035d27c18dba49238d8b2"
- }
- Frame {
- msec: 112
- hash: "49f77bb3d323f882c0ec56e1f1040b3a"
- }
- Frame {
- msec: 128
- hash: "40263c5f9b5d2236536163785f832b4d"
- }
- Frame {
- msec: 144
- hash: "dc63b1c21a2027c4beb9c297a3677fbd"
- }
- Frame {
- msec: 160
- hash: "4fab52ea29a819fec032f19dbcbef012"
- }
- Frame {
- msec: 176
- hash: "60b48407a8f8ae2cce7d3e7c8b21991c"
- }
- Frame {
- msec: 192
- hash: "6e542c681092a5ebeef0534fa2bd2d6c"
- }
- Frame {
- msec: 208
- hash: "c7c6471969bbf81efdb86d1695548fc6"
- }
- Frame {
- msec: 224
- hash: "b7f4ad9a49feb400894209c02b94478a"
- }
- Frame {
- msec: 240
- hash: "3eb58b2f5233aead976183c13f241113"
- }
- Frame {
- msec: 256
- hash: "54f2036c50c6d8079fc0cadc01385980"
- }
- Frame {
- msec: 272
- hash: "f297659d75f6e724d72bd548821f4c9f"
- }
- Frame {
- msec: 288
- hash: "112798f080336fc9c603a7e9097dd8aa"
- }
- Frame {
- msec: 304
- hash: "c432e6ec2b53ca43cb7a7325d0cc379b"
- }
- Frame {
- msec: 320
- hash: "4a6d3db3efd665ad7f372bf3f2508ed7"
- }
- Frame {
- msec: 336
- hash: "0befa5dc4d2cc196fed0eb1a3aa75b8f"
- }
- Frame {
- msec: 352
- hash: "a34d010b50d59c362b54e44d69c2df91"
- }
- Frame {
- msec: 368
- hash: "cbdacced50186c87066ce1d46548b27e"
- }
- Frame {
- msec: 384
- hash: "a4060010ae4d3c0973bda48d68f7bd0a"
- }
- Frame {
- msec: 400
- hash: "47353437da587f732f986004c09884d0"
- }
- Frame {
- msec: 416
- hash: "080c348145167bbec671a04da6f7564f"
- }
- Frame {
- msec: 432
- hash: "69dead737c717a076ae3865680341fb4"
- }
- Frame {
- msec: 448
- hash: "1efdc31c5c8fa72fc848877deb6caaa4"
- }
- Frame {
- msec: 464
- hash: "28d7da1e933d0585d03acf4a529e7b42"
- }
- Frame {
- msec: 480
- hash: "bf85534124bf025b7ede0d6c80b8e443"
- }
- Frame {
- msec: 496
- hash: "cdbeb2d51541b1b1eff060efe993db91"
- }
- Frame {
- msec: 512
- hash: "52ad56ae16c8ab523adda8edc512dd87"
- }
- Frame {
- msec: 528
- hash: "61b1937f4c8dd2cb0ddd7031c5bfb3ab"
- }
- Frame {
- msec: 544
- hash: "1b109baba71b16827f90da654af093a3"
- }
- Frame {
- msec: 560
- hash: "d56621362802c8626868f36ba1e7db22"
- }
- Frame {
- msec: 576
- hash: "ee5555ec3ad8760f43bbf5958a925936"
- }
- Frame {
- msec: 592
- hash: "1ed2831144a453af1978605c0e42d17c"
- }
- Frame {
- msec: 608
- hash: "c74d5cdb3395a702269dfa88c8c9d975"
- }
- Frame {
- msec: 624
- hash: "ea98ddd9588cc23fd82a342ec2925ba8"
- }
- Frame {
- msec: 640
- hash: "e76b94d6d57f1a510f7649eaab892562"
- }
- Frame {
- msec: 656
- hash: "022f40b6fe9dbaf8019855234acb3461"
- }
- Frame {
- msec: 672
- hash: "467da4f48aa6aeb113f0797facf157e8"
- }
- Frame {
- msec: 688
- hash: "8df407aadd4d896eb6537e1555a0242f"
- }
- Frame {
- msec: 704
- hash: "122e4671881e31f54e617729f4fbb3b0"
- }
- Frame {
- msec: 720
- hash: "562718f101c3cd7525b890076413df5e"
- }
- Frame {
- msec: 736
- hash: "07feae99ecf4b70eb094fd3e10deca56"
- }
- Frame {
- msec: 752
- hash: "0980d133b1006cc07796023880415163"
- }
- Frame {
- msec: 768
- hash: "7112b6ac97678b3b942c64c5108f0329"
- }
- Frame {
- msec: 784
- hash: "bb9f893a9aaee60ab6c30918552828a4"
- }
- Frame {
- msec: 800
- hash: "65d1f29437aaaea33676757276f1e434"
- }
- Frame {
- msec: 816
- hash: "52adcf2509f3236ac8ef571708e77206"
- }
- Frame {
- msec: 832
- hash: "22df5e7eda8a813531d0e0366cbfbf64"
- }
- Frame {
- msec: 848
- hash: "fe9b7b7812dd2410b8ed2eb19aa78f4d"
- }
- Frame {
- msec: 864
- hash: "141e22de4469f316b5ef5471f3c7bba0"
- }
- Frame {
- msec: 880
- hash: "1125c0a105fc4a2cae36b798058ce23f"
- }
- Frame {
- msec: 896
- hash: "8c17c5da2ae867fb0016a485ba9e4166"
- }
- Frame {
- msec: 912
- hash: "d8da9fc7ec4dcefb894c5a6a71e9d001"
- }
- Frame {
- msec: 928
- hash: "00ff642bea89fd89de394d78f8c5db33"
- }
- Frame {
- msec: 944
- hash: "8549063d517a3ce1ffd44c56b3b6cf5e"
- }
- Frame {
- msec: 960
- image: "easefollow.0.png"
- }
- Frame {
- msec: 976
- hash: "95a642caa72bb31cc1e04ecc12d07cd0"
- }
- Frame {
- msec: 992
- hash: "e65c823476bf920d0386f62ca831e6a0"
- }
- Frame {
- msec: 1008
- hash: "91e8913dc693c91a674a10b5b088dd8f"
- }
- Frame {
- msec: 1024
- hash: "1a469ffa0d530f72c78dc14783891c78"
- }
- Frame {
- msec: 1040
- hash: "6e46a83d07f8bc034b421103ef0e4f8c"
- }
- Frame {
- msec: 1056
- hash: "8ddacab411a8b73b6c9e69576fa1b003"
- }
- Frame {
- msec: 1072
- hash: "41f419a85fe44efe27c9a526d83a1e9a"
- }
- Frame {
- msec: 1088
- hash: "73d4ece31b258f9caf4556ce20a5be1f"
- }
- Frame {
- msec: 1104
- hash: "ef3ebe0acb50386cf79b9f08fbba2fbc"
- }
- Frame {
- msec: 1120
- hash: "c11a84d2fa80f28adb1466409812e987"
- }
- Frame {
- msec: 1136
- hash: "2e9db854b02d28b38063ff2a8e821ed1"
- }
- Frame {
- msec: 1152
- hash: "48e073c0e6b19aea8314629a2179af87"
- }
- Frame {
- msec: 1168
- hash: "77e518b7428d93b67a8fb0d33d85ed97"
- }
- Frame {
- msec: 1184
- hash: "1d18323af9c62e015513451883f8b39f"
- }
- Frame {
- msec: 1200
- hash: "df49889ba157cdc1ca240d08d2760ad7"
- }
- Frame {
- msec: 1216
- hash: "7b8cd2bcf0a4c38ab870f27894a43d2f"
- }
- Frame {
- msec: 1232
- hash: "84f10e0c9fd57dd1799df7fc34c5ef01"
- }
- Frame {
- msec: 1248
- hash: "ead4e609bc4a0755032b1648485b9625"
- }
- Frame {
- msec: 1264
- hash: "9a9829c3bd4a3a4155383c37e21e8db8"
- }
- Frame {
- msec: 1280
- hash: "5008917f60256abad867f32c1caf954d"
- }
- Frame {
- msec: 1296
- hash: "c21455d66ed0754177af5ce44b7c7600"
- }
- Frame {
- msec: 1312
- hash: "e8332f2586d80a2700b610e8fe5c72d9"
- }
- Frame {
- msec: 1328
- hash: "0d0c8af138f98bae8a370ebec4a4796c"
- }
- Frame {
- msec: 1344
- hash: "04065e8feeb900d18deeb941572f7f10"
- }
- Frame {
- msec: 1360
- hash: "992a225b1f25bf5b21dd7f8a55dc4b70"
- }
- Frame {
- msec: 1376
- hash: "8ef739d91ee2a4337cbfc3dc94ce9845"
- }
- Frame {
- msec: 1392
- hash: "46744977a26b37ab65e65e1891ceafe7"
- }
- Frame {
- msec: 1408
- hash: "1b4c0d79eeb8d6b2e30172f3664407b9"
- }
- Frame {
- msec: 1424
- hash: "d572831ed34d14d1125570b8b8767bdb"
- }
- Frame {
- msec: 1440
- hash: "8b785c756d11e0fc18959d0897a45673"
- }
- Frame {
- msec: 1456
- hash: "164a71ffcea63ceb6c1ebeb8d0d07af1"
- }
- Frame {
- msec: 1472
- hash: "e128dc12d5117eed9f7c0a16e8348ba2"
- }
- Frame {
- msec: 1488
- hash: "4c7db5b12d83bf22b1c88ac06ca7c385"
- }
- Frame {
- msec: 1504
- hash: "c7283df8dbd78121e17a5893e3ea4f3c"
- }
- Frame {
- msec: 1520
- hash: "fea768e5bb43f6d86d88ced9f73915de"
- }
- Frame {
- msec: 1536
- hash: "b99b54f8e75452c539bb4e7b6a36e944"
- }
- Frame {
- msec: 1552
- hash: "b7274938d16f03b376ad9739e2e893f1"
- }
- Frame {
- msec: 1568
- hash: "e61601942193add8c1c8ebf5c5319932"
- }
- Frame {
- msec: 1584
- hash: "8fdc2181e0120391505706716ba7e5d7"
- }
- Frame {
- msec: 1600
- hash: "66f737ed28453da5175d6b5e807c374d"
- }
- Frame {
- msec: 1616
- hash: "2e00a7895d61edbe794f0a8000871b30"
- }
- Frame {
- msec: 1632
- hash: "1a279fc6b7c4105eccc4e3bc99481bef"
- }
- Frame {
- msec: 1648
- hash: "bc1dea4d23ca9bc29b72a8c2bde4787b"
- }
- Frame {
- msec: 1664
- hash: "8ef40e0be5fb82b32b365b3d4b85421d"
- }
- Frame {
- msec: 1680
- hash: "ee37c68bf38d5eed4e3e9a31306f6801"
- }
- Frame {
- msec: 1696
- hash: "303d760c87a7a833606c8e9f46cb5fc0"
- }
- Frame {
- msec: 1712
- hash: "cc2563b47c58efd39bec6b4e0f2995bb"
- }
- Frame {
- msec: 1728
- hash: "33f7daf09497510475283d6dc7c51228"
- }
- Frame {
- msec: 1744
- hash: "5b5e2de9934c80bd49e0eb7afd85151d"
- }
- Frame {
- msec: 1760
- hash: "5e6bf706336789ca6b60a82998b70113"
- }
- Frame {
- msec: 1776
- hash: "b4d4a860f49bfb88dd2079862b40b7ec"
- }
- Frame {
- msec: 1792
- hash: "07b571fa55327487e34a592c778beb67"
- }
- Frame {
- msec: 1808
- hash: "cb5b349a536cf75a83734181b3eab92b"
- }
- Frame {
- msec: 1824
- hash: "ce903bb58c5c86f2955e68412893aedf"
- }
- Frame {
- msec: 1840
- hash: "ffa89e879558c83ed538812a93e2fe29"
- }
- Frame {
- msec: 1856
- hash: "562aa66bf537853be82a654542c8b80e"
- }
- Frame {
- msec: 1872
- hash: "dc45dac0cc20220bcc81210fb5506ee2"
- }
- Frame {
- msec: 1888
- hash: "3b429eb827df0800a1ad8b906ea32ef9"
- }
- Frame {
- msec: 1904
- hash: "d6ebaf12515d9e24cdbf6d75080c0b28"
- }
- Frame {
- msec: 1920
- image: "easefollow.1.png"
- }
- Frame {
- msec: 1936
- hash: "9f6d26224055c809dc2f3490cd0ff880"
- }
- Frame {
- msec: 1952
- hash: "5630cc8f0b401f7d81bdceaaae5cce68"
- }
- Frame {
- msec: 1968
- hash: "dafda60467e5e2b99c41543dd191ac2d"
- }
- Frame {
- msec: 1984
- hash: "e053cb07a734278cd111d612883c165e"
- }
- Frame {
- msec: 2000
- hash: "63870f3e99c11707004dab9439d61389"
- }
- Frame {
- msec: 2016
- hash: "14c311a6fab45f828c3a19535ea9edc8"
- }
- Frame {
- msec: 2032
- hash: "13e614446cbfcbfd2a7ecc5f0e8688df"
- }
- Frame {
- msec: 2048
- hash: "173c97f59da05b9347180a4824e60c06"
- }
- Frame {
- msec: 2064
- hash: "932e2a9bbcb7dc5befca8f63d8fa3c95"
- }
- Frame {
- msec: 2080
- hash: "4b8f232ffe0cbc7f900de5737c9f95be"
- }
- Frame {
- msec: 2096
- hash: "9686d294d4e931a5eed0e6b5bda63377"
- }
- Frame {
- msec: 2112
- hash: "969c569d92e3ec51dfbdd20d64432224"
- }
- Frame {
- msec: 2128
- hash: "0cef3550cca9fb5611b836098c517dd1"
- }
- Frame {
- msec: 2144
- hash: "6728080a09aa5d48462a3abb8e285e8a"
- }
- Frame {
- msec: 2160
- hash: "4b904dc671b7fc72db0b6e52543e96bd"
- }
- Frame {
- msec: 2176
- hash: "38232f89dffc9b16db6ea60b02f8d1be"
- }
- Frame {
- msec: 2192
- hash: "6b41f2a0f950eddad217a03e137f9a9b"
- }
- Frame {
- msec: 2208
- hash: "be576ea74c2c404da46fcf1d22de6df9"
- }
- Frame {
- msec: 2224
- hash: "3f44bad4b51ceff2944337064a5efa91"
- }
- Frame {
- msec: 2240
- hash: "e1ab98ac1366e9fd8af62a6a26878c73"
- }
- Frame {
- msec: 2256
- hash: "bd131e1725a54b3dbbb86a29ca8a56a9"
- }
- Frame {
- msec: 2272
- hash: "4d3e8af70f228643803f780c4e36f1a6"
- }
- Frame {
- msec: 2288
- hash: "853a5ab4271af7a7638454cfa883aa33"
- }
- Frame {
- msec: 2304
- hash: "ede9260157000f346900153ce2409278"
- }
- Frame {
- msec: 2320
- hash: "b2b16d8ce1ba89f0d9558ac387e25c3d"
- }
- Frame {
- msec: 2336
- hash: "387d338910453637c5cf80fa35528e56"
- }
- Frame {
- msec: 2352
- hash: "26deabf9cdd994455f2a8802eb0e04dc"
- }
- Frame {
- msec: 2368
- hash: "13939659a315dae1b81e3ea166102edf"
- }
- Frame {
- msec: 2384
- hash: "be92b55bb7562372401b25a9167abb2b"
- }
- Frame {
- msec: 2400
- hash: "ee7bf60d7ee97b7de5e909b9af88df80"
- }
- Frame {
- msec: 2416
- hash: "434313a3bcd1d7582b0d89b9a145ef09"
- }
- Frame {
- msec: 2432
- hash: "0857ca59a283897e3df62b9633488f83"
- }
- Frame {
- msec: 2448
- hash: "76718fc7e3d21b54930bc8307a57733a"
- }
- Frame {
- msec: 2464
- hash: "93a91588b38129053a462b920fd686e3"
- }
- Frame {
- msec: 2480
- hash: "2a2486c52fde915696fd8cbd3682e8db"
- }
- Frame {
- msec: 2496
- hash: "b1f4ab6cc5fb4a3a1b4885f2d1b29277"
- }
- Frame {
- msec: 2512
- hash: "4258afce8a85a2e9ead149e34b43d8fc"
- }
- Frame {
- msec: 2528
- hash: "6672c71b98e13d51ebb523aed9036a72"
- }
- Frame {
- msec: 2544
- hash: "eaa39af7eb78948f433e3b44a9454317"
- }
- Frame {
- msec: 2560
- hash: "0a766bc97bea67d4b848c703eaa6777a"
- }
- Frame {
- msec: 2576
- hash: "0b461ec1885ede1dd96b71cf38bfd3d6"
- }
- Frame {
- msec: 2592
- hash: "15efc929370a3864529080e30db1026a"
- }
- Frame {
- msec: 2608
- hash: "e1529e30ff1e4ea1b092a88e85f2f1f6"
- }
- Frame {
- msec: 2624
- hash: "f29bd9dbf7317e94b885da63f0cb7374"
- }
- Frame {
- msec: 2640
- hash: "e5294e087e2ce0d7d936c0129b6c37ae"
- }
- Frame {
- msec: 2656
- hash: "9c63129e774b391cc398cf5da5c9339c"
- }
- Frame {
- msec: 2672
- hash: "4371d85854419d4b00671176bb7c5a2b"
- }
- Frame {
- msec: 2688
- hash: "dd10b3f50e2fdc56c75f00321634b1cc"
- }
- Frame {
- msec: 2704
- hash: "aac6256b21152a5f1f8c576b667d275e"
- }
- Frame {
- msec: 2720
- hash: "c937c44037b2228590d334df4d56a86f"
- }
- Frame {
- msec: 2736
- hash: "f6c714db51cbd1bdb737afe612c33f9c"
- }
- Frame {
- msec: 2752
- hash: "0bba45af79f3201bc7cf042d5c648f73"
- }
- Frame {
- msec: 2768
- hash: "941b08ddbafea3bd46262c060b1e290b"
- }
- Frame {
- msec: 2784
- hash: "d898918dc2023de239b4ab38f7420960"
- }
- Frame {
- msec: 2800
- hash: "d1a16dc2282329113093d06862e7a871"
- }
- Frame {
- msec: 2816
- hash: "bba5359475f643fbeee240e71e843d4c"
- }
- Frame {
- msec: 2832
- hash: "03cf861f4b6bc767e723e47e95c2448b"
- }
- Frame {
- msec: 2848
- hash: "a64bf158c6199b88bc2db3b741d342f0"
- }
- Frame {
- msec: 2864
- hash: "cf0fe7cb42ba842f1c28c1211adb768d"
- }
- Frame {
- msec: 2880
- image: "easefollow.2.png"
- }
- Frame {
- msec: 2896
- hash: "9b3c6414e4ef5a452a5c92bb0b893fc3"
- }
- Frame {
- msec: 2912
- hash: "7cc7ddec3ac2d8cac33c0b0f80a7544d"
- }
- Frame {
- msec: 2928
- hash: "7dd4e7d606e953c872c57fad786d64aa"
- }
- Frame {
- msec: 2944
- hash: "117cc903a39d99ca22f6556095e6f883"
- }
- Frame {
- msec: 2960
- hash: "c6c9304fd65fee1909473bdb21ac7806"
- }
- Frame {
- msec: 2976
- hash: "8e704fe81c040f49c4d80e7dcc46084d"
- }
- Frame {
- msec: 2992
- hash: "d202d5c0a058e1e088fdd280e59f17bb"
- }
- Frame {
- msec: 3008
- hash: "90c072dea32c056f8bd6d010df681929"
- }
- Frame {
- msec: 3024
- hash: "80b4e99f1b47e64084e295a2a3e1121e"
- }
- Frame {
- msec: 3040
- hash: "41d6307075ec9ae9e92d227921f71289"
- }
- Frame {
- msec: 3056
- hash: "f33de23cf4a5c4881310c6866261d387"
- }
- Frame {
- msec: 3072
- hash: "441faa0a1fc95d66b27479dfc1e40188"
- }
- Frame {
- msec: 3088
- hash: "2314b5f6ba3864abd5e87bc87bd621b0"
- }
- Frame {
- msec: 3104
- hash: "e71e3b0ad953258ceef3101e38283fdb"
- }
- Frame {
- msec: 3120
- hash: "890c3b0e727f136bf1ccc486531c9677"
- }
- Frame {
- msec: 3136
- hash: "2a0d23e6dcc6475c323dbf8eb36e8094"
- }
- Frame {
- msec: 3152
- hash: "692682e82347936f87a66484b428e959"
- }
- Frame {
- msec: 3168
- hash: "cf4005c08789762ad21be1a1d78755c9"
- }
- Frame {
- msec: 3184
- hash: "566184563091626bb20ae679e3ce3b91"
- }
- Frame {
- msec: 3200
- hash: "f88a24ad3bbc2699924bb9a7ff6490b3"
- }
- Frame {
- msec: 3216
- hash: "23f3f63d07b2bdc2b82ff4e8606a634d"
- }
- Frame {
- msec: 3232
- hash: "fe121c71ce469ec6f0bf957eb2f0447b"
- }
- Frame {
- msec: 3248
- hash: "ba217690a33c701afe11842aa8105cbb"
- }
- Frame {
- msec: 3264
- hash: "e5c7c1323108f13ba26f5198cc62c137"
- }
- Frame {
- msec: 3280
- hash: "664f76d3d0008b56be2790c470befc91"
- }
- Frame {
- msec: 3296
- hash: "b3f54070ba64b983ccd2a15941ef4c35"
- }
- Frame {
- msec: 3312
- hash: "8a0ba2ae36ad3811778f3a3bc55743f5"
- }
- Frame {
- msec: 3328
- hash: "bfdc71733ca45a2ba2e8abf751554a62"
- }
- Frame {
- msec: 3344
- hash: "686e4d7bb5ae148d37fc2a1f6004a33a"
- }
- Frame {
- msec: 3360
- hash: "29c553d9fe42fdbbd019d0ead61dffa0"
- }
- Frame {
- msec: 3376
- hash: "bfa2b72c6554a2ed80a3b86f2cbed986"
- }
- Frame {
- msec: 3392
- hash: "074ff90417a947f0a04926d5675d073b"
- }
- Frame {
- msec: 3408
- hash: "6f56f9e0aa40149156ca71d6f8d4476a"
- }
- Frame {
- msec: 3424
- hash: "950ce749bbf572021de2dd1688cb87e6"
- }
- Frame {
- msec: 3440
- hash: "2d0903bd71862dc6f28bd702d955ae99"
- }
- Frame {
- msec: 3456
- hash: "2733adae56728f1b744a4086ecb98052"
- }
- Frame {
- msec: 3472
- hash: "779859d739e799bba15beeb97d18e682"
- }
- Frame {
- msec: 3488
- hash: "9074386cfabe136b8839637e5cd58f57"
- }
- Frame {
- msec: 3504
- hash: "fa5bcbf20c6ad0a218f23d98961229a1"
- }
- Frame {
- msec: 3520
- hash: "5406c94da1717eaa5eb0010564216059"
- }
- Frame {
- msec: 3536
- hash: "27d0a3c3a33c04df843bebd72ef79824"
- }
- Frame {
- msec: 3552
- hash: "270df9c99c2679071b854b3d82337f79"
- }
- Frame {
- msec: 3568
- hash: "5b3945505443a67e7a91f66fe42b4fe3"
- }
- Frame {
- msec: 3584
- hash: "9a2f8565c354cb366725368ed323ccf4"
- }
- Frame {
- msec: 3600
- hash: "6702cb7ccd61c008b511932d7bd5d107"
- }
- Frame {
- msec: 3616
- hash: "f6b86c3a1cc88357f588b6dae11aae30"
- }
- Frame {
- msec: 3632
- hash: "b10c23937f420db72af8abaf126f71c2"
- }
- Frame {
- msec: 3648
- hash: "7d6b0810ffc6e488c8168e19bccb7358"
- }
- Frame {
- msec: 3664
- hash: "c01ef69ec46391909619434e9d9dd0ce"
- }
- Frame {
- msec: 3680
- hash: "a046464fccb0c5ba1f63f8b569821a44"
- }
- Frame {
- msec: 3696
- hash: "8763c526924d882438f9aa9bfb4fe87d"
- }
- Frame {
- msec: 3712
- hash: "dede7a62d6e5c10e8f30caa075bd8dfd"
- }
- Frame {
- msec: 3728
- hash: "3b408e5c986f5bb01d8c3949876b792f"
- }
- Frame {
- msec: 3744
- hash: "0a458f3b17cdd3ea85522779c9346af9"
- }
- Frame {
- msec: 3760
- hash: "fef521f0301cce90af88d37e6d441ec8"
- }
- Frame {
- msec: 3776
- hash: "3d083e0822242b3b37c6839ca91a1f68"
- }
- Frame {
- msec: 3792
- hash: "f8fe013a717e6e61830137bdc78a8b40"
- }
- Frame {
- msec: 3808
- hash: "0ae80ad65dd194043500fa50b5a547a6"
- }
- Frame {
- msec: 3824
- hash: "a53c67fa32ef971eaea202fa5d8a6ad6"
- }
- Frame {
- msec: 3840
- image: "easefollow.3.png"
- }
- Frame {
- msec: 3856
- hash: "41f86bbf0658b127f01e8d46d7ec941b"
- }
- Frame {
- msec: 3872
- hash: "d20f21df127565f9eb87c5d759a638d9"
- }
- Frame {
- msec: 3888
- hash: "85ff94f03cea3e111807e90d062c1367"
- }
- Frame {
- msec: 3904
- hash: "aa637850fe5f05a71ac4c7d31dbb36ee"
- }
- Frame {
- msec: 3920
- hash: "c86a67096c5e62bb73b785cdf6a5b6b1"
- }
- Frame {
- msec: 3936
- hash: "9d53537f2c50a0016bf7bb522b2ec3d8"
- }
- Frame {
- msec: 3952
- hash: "b48630c27c27785ddce568a85d4dc58f"
- }
- Frame {
- msec: 3968
- hash: "01c1bdb6e261cc509f26712b13eeb554"
- }
- Frame {
- msec: 3984
- hash: "af8a44284695fd999acd5944434f0372"
- }
- Frame {
- msec: 4000
- hash: "b156d9d6d5163f007ac4a309d8927ae9"
- }
- Frame {
- msec: 4016
- hash: "2df3715416c3c005f04b66fe1258c0d8"
- }
- Frame {
- msec: 4032
- hash: "96b4a7c6b8542b50fc345b54d38ec82a"
- }
- Frame {
- msec: 4048
- hash: "7e62e757fafa06833444c3a7e1d96ce4"
- }
- Frame {
- msec: 4064
- hash: "5222a8f9366c7d974d0687d05d229069"
- }
- Frame {
- msec: 4080
- hash: "ec96169f4633c3bddfd582feeb8e9ad4"
- }
- Frame {
- msec: 4096
- hash: "cb10db893d1e1cb2a370507dc5679985"
- }
- Frame {
- msec: 4112
- hash: "d7e346c2ac77796bde639bd829b72e85"
- }
- Frame {
- msec: 4128
- hash: "ba5bea8857e4fb444bedd3873563e7db"
- }
- Frame {
- msec: 4144
- hash: "05556fba5d1714f70fd6c2bfb43d213b"
- }
- Frame {
- msec: 4160
- hash: "aeeabf35f9759f045a670a9b9f90dc68"
- }
- Frame {
- msec: 4176
- hash: "131bd453f4c7726e5fdd546252700e2e"
- }
- Frame {
- msec: 4192
- hash: "7c5c3b5bb7a4082e6b9b43640e29f4e2"
- }
- Frame {
- msec: 4208
- hash: "07515e21b7a7895f333e4a8bbd2202eb"
- }
- Frame {
- msec: 4224
- hash: "6cf136f223ac6edd39ba6ed9b4445884"
- }
- Frame {
- msec: 4240
- hash: "84264f5745add8a922101735ed8def84"
- }
- Frame {
- msec: 4256
- hash: "660863d1e4b361f2e5445b417be0d2ad"
- }
- Frame {
- msec: 4272
- hash: "7ceb86f4b16546370d72164d0ca3147c"
- }
- Frame {
- msec: 4288
- hash: "a13e97da9722545ad87ac3c5eb92c497"
- }
- Frame {
- msec: 4304
- hash: "5896b5307cbd609d2062d3607786d40c"
- }
- Frame {
- msec: 4320
- hash: "c8c511115394116e4544c67f615ea5d5"
- }
- Frame {
- msec: 4336
- hash: "59ca5fdf12a735e5c292901b54acccb2"
- }
- Frame {
- msec: 4352
- hash: "155cce2738d34e0eac86f5eb63d638f0"
- }
- Frame {
- msec: 4368
- hash: "83a840c3ae7dbd9a05c17fdd8be07d7a"
- }
- Frame {
- msec: 4384
- hash: "800a15de28b14d88f0ad58fc3f4a2520"
- }
- Frame {
- msec: 4400
- hash: "c8381439a3cd3f9e7f80061023723a6e"
- }
- Frame {
- msec: 4416
- hash: "e3d63000db4b9458b202dece49d1bdba"
- }
- Frame {
- msec: 4432
- hash: "c943e56781695798f3c221f8ab09681a"
- }
- Frame {
- msec: 4448
- hash: "1137ee66d7fbf5a84c33f5ffff15b3dd"
- }
- Frame {
- msec: 4464
- hash: "5a98013cc4462aad18cad8d941f77aa0"
- }
- Frame {
- msec: 4480
- hash: "d0b3748fb49a13c0ad9a68b0e2914921"
- }
- Frame {
- msec: 4496
- hash: "12113f71f9117670acbd7877edded7e0"
- }
- Frame {
- msec: 4512
- hash: "22983424da08cdae7a9c6a8905b37736"
- }
- Frame {
- msec: 4528
- hash: "b2db5618a025cefb2650124c81880c49"
- }
- Frame {
- msec: 4544
- hash: "84fb5e7edc5b42163a83e0cd362b3a46"
- }
- Frame {
- msec: 4560
- hash: "39d6f1ed0f60a0c366c22e1442c455ac"
- }
- Frame {
- msec: 4576
- hash: "702367f6e4aaa2a862e57f9e02a08758"
- }
- Frame {
- msec: 4592
- hash: "ecc75293bc156c560d55cb7d278a4e58"
- }
- Frame {
- msec: 4608
- hash: "e68af8e97ce65376fd7904e599440c92"
- }
- Frame {
- msec: 4624
- hash: "75fe9f766d6cf636cd72d8879a461439"
- }
- Frame {
- msec: 4640
- hash: "162aef147ef4bbb0cd92bd70e4f37f62"
- }
- Frame {
- msec: 4656
- hash: "d879aae8949976c7bad4d97f1e5b5549"
- }
- Frame {
- msec: 4672
- hash: "8a983d7228190721f988de2d72cb3aa2"
- }
- Frame {
- msec: 4688
- hash: "a4f3c63fde664d128cd35b129a4f9a23"
- }
- Frame {
- msec: 4704
- hash: "115fb5f3c9b7f1c28ab379596faba91c"
- }
- Frame {
- msec: 4720
- hash: "ea9600c4d6c77a3b32e59401aa84fe96"
- }
- Frame {
- msec: 4736
- hash: "bd6531fdd9cfd46af2df73bacb31f4c5"
- }
- Frame {
- msec: 4752
- hash: "33bdcf1df50eab5e7963c649fbd32226"
- }
- Frame {
- msec: 4768
- hash: "236e88fb72369a55f9eba4b50712ae85"
- }
- Frame {
- msec: 4784
- hash: "5eb3c14a6296fb3a1c58603b2fc937c8"
- }
- Frame {
- msec: 4800
- image: "easefollow.4.png"
- }
- Frame {
- msec: 4816
- hash: "31d11a1ce6422524241c77603fe53e61"
- }
- Frame {
- msec: 4832
- hash: "44e8b9947026c10b922c84883dd8e889"
- }
- Frame {
- msec: 4848
- hash: "d049e4f7c4bc1849398859a4d630c1b3"
- }
- Frame {
- msec: 4864
- hash: "e83b4757898e4eeef74be8213619fbfa"
- }
- Frame {
- msec: 4880
- hash: "d08f40615f2d5abc6236e856a67575dd"
- }
- Frame {
- msec: 4896
- hash: "d9cb26bf1b8bbafb2aed8f74bd454077"
- }
- Frame {
- msec: 4912
- hash: "aa321b94a6cc53b2ebac80e834c0a908"
- }
- Frame {
- msec: 4928
- hash: "48da37164be156b67a4b3b14e50f2375"
- }
- Frame {
- msec: 4944
- hash: "f522ce7728a4a9e7fad86c72f29bd8f9"
- }
- Frame {
- msec: 4960
- hash: "9bc1d16b4bda596702a3d8a3fad8a5c5"
- }
- Frame {
- msec: 4976
- hash: "5275dccf18745dec6c59b846de17d9ef"
- }
- Frame {
- msec: 4992
- hash: "4eb6babc177b96f69b148d52f56d82d7"
- }
- Frame {
- msec: 5008
- hash: "ccdfb454070ac04c4fe4f3513c52f8c8"
- }
- Frame {
- msec: 5024
- hash: "07f6adad6e8ff4f0eff92c758636a951"
- }
- Frame {
- msec: 5040
- hash: "241e0ad9218d49be477509e008e45548"
- }
- Frame {
- msec: 5056
- hash: "151a482e821779da8a61063f1cc73f8c"
- }
- Frame {
- msec: 5072
- hash: "1499d207c5a3a9bc7bbb84d9c5e35578"
- }
- Frame {
- msec: 5088
- hash: "c253753f653157a5058ef071f16b8bbb"
- }
- Frame {
- msec: 5104
- hash: "ec9fea5a870724a106b952edef7fb466"
- }
- Frame {
- msec: 5120
- hash: "99b673f8ed049d31a2aecabcc46d841d"
- }
- Frame {
- msec: 5136
- hash: "61e77fea693ea55aafbdc94c40c3ab33"
- }
- Frame {
- msec: 5152
- hash: "53e44a3732ee6858d5bd596b4c5d5305"
- }
- Frame {
- msec: 5168
- hash: "5b25d3894a56dc4f4a0aa8f88cb69e23"
- }
- Frame {
- msec: 5184
- hash: "5683ad02f1b9126f4e4ff6b03044fdc6"
- }
- Frame {
- msec: 5200
- hash: "0a3ec255575ec1b70e0b10cf59c7c5fd"
- }
- Frame {
- msec: 5216
- hash: "0f5f46fe3fdf42d4651891f13c8afc7e"
- }
- Frame {
- msec: 5232
- hash: "b6955407245c73e356a460d99dad77be"
- }
- Frame {
- msec: 5248
- hash: "6018b53414921943b37c33fa04a29697"
- }
- Frame {
- msec: 5264
- hash: "ff184d349ce0b648f8c1fce91ae997f6"
- }
- Frame {
- msec: 5280
- hash: "9c112a3a785d970593887eeab72fa7fe"
- }
- Frame {
- msec: 5296
- hash: "00384fb20d4c6cd6236d519d2d734cc3"
- }
- Frame {
- msec: 5312
- hash: "601ea99400e5f50ee9a5a4b74b6f3017"
- }
- Frame {
- msec: 5328
- hash: "9afed04bf7eca24d9b6d31ac84ae59c2"
- }
- Frame {
- msec: 5344
- hash: "1983319c8043bfe403513af7ccb5b924"
- }
- Frame {
- msec: 5360
- hash: "b0244e4e1b61202ede78405415c22bca"
- }
- Frame {
- msec: 5376
- hash: "ec5516b1aaeace8784b04649c51ab40b"
- }
- Frame {
- msec: 5392
- hash: "8ff7d2001594abb588f769bab15406d7"
- }
- Frame {
- msec: 5408
- hash: "64d5fd96a1726aa5276f9b508566676f"
- }
- Frame {
- msec: 5424
- hash: "ab49497a6c825038354f076bdbbbc235"
- }
- Frame {
- msec: 5440
- hash: "6b821e43be932800b20af58a7b5a1ff7"
- }
- Frame {
- msec: 5456
- hash: "683a2902300f930e2a81a82dc37c583b"
- }
- Frame {
- msec: 5472
- hash: "86d7946d7fbb66369ccbf26430939225"
- }
- Frame {
- msec: 5488
- hash: "fb38f5fb6555fc14e95a47c595a6ea0c"
- }
- Frame {
- msec: 5504
- hash: "3878f685d9fa3299e9ffe78c22595387"
- }
- Frame {
- msec: 5520
- hash: "b48840a68ff007901b02332c7177f315"
- }
- Frame {
- msec: 5536
- hash: "9d847abc99220b04aceef12e5c09aac0"
- }
- Frame {
- msec: 5552
- hash: "9893ac89fda64d96ec4140c3c87e17a5"
- }
- Frame {
- msec: 5568
- hash: "cd94e1c36e6be9877cd9c12df42bd968"
- }
- Frame {
- msec: 5584
- hash: "c1ce5e53b74af022dc103ad74ff5f1af"
- }
- Frame {
- msec: 5600
- hash: "b3630e08eac02a9578a00b01baabaaba"
- }
- Frame {
- msec: 5616
- hash: "0eb9241aa1f9526c1e24ba76d630805c"
- }
- Frame {
- msec: 5632
- hash: "1b532ae7f9253469467522d4ca66c47b"
- }
- Frame {
- msec: 5648
- hash: "7e6e49079ed6330da2e337a5e4ffd730"
- }
- Frame {
- msec: 5664
- hash: "0391d668f4b906b244a5f5c1713573c2"
- }
- Frame {
- msec: 5680
- hash: "8070fa3280d0d64bf976d4a276359c4c"
- }
- Frame {
- msec: 5696
- hash: "f7d0d36a2d40c798f56ac7ecc1effca6"
- }
- Frame {
- msec: 5712
- hash: "9f8e35ee5080e811c670c480a9c2bd9f"
- }
- Frame {
- msec: 5728
- hash: "c7fea75a43a59a11aa504df32afcdaf8"
- }
- Frame {
- msec: 5744
- hash: "7e549a93ffc6ddcc3d8111f10c05b29e"
- }
- Frame {
- msec: 5760
- image: "easefollow.5.png"
- }
- Frame {
- msec: 5776
- hash: "92d298262f610a2dafa095e3d67c80af"
- }
- Frame {
- msec: 5792
- hash: "db8826b0b2feece0999863b8827a6234"
- }
- Frame {
- msec: 5808
- hash: "12c7050e8094bb39212aed0163666d1a"
- }
- Frame {
- msec: 5824
- hash: "69531beace5c749bf90160a4b25f736a"
- }
- Frame {
- msec: 5840
- hash: "ce873e4dbc8853183b54d59991b2e030"
- }
- Frame {
- msec: 5856
- hash: "fa1078973634578d69527402b11fb7e0"
- }
- Frame {
- msec: 5872
- hash: "1e3b3db590567c0afd1913101192cda9"
- }
- Frame {
- msec: 5888
- hash: "7b9e097018278b784973a546da3d401a"
- }
- Frame {
- msec: 5904
- hash: "a7b0667093888480de6697280aeea9ba"
- }
- Frame {
- msec: 5920
- hash: "e381f2422ead86575abf643b0b0c9797"
- }
- Frame {
- msec: 5936
- hash: "44b08f5a0de2a6955e02f67753f409c8"
- }
- Frame {
- msec: 5952
- hash: "db04665e58448ecc7f95baa3e4ea79a5"
- }
- Frame {
- msec: 5968
- hash: "0e4aae728d8d543538a9446c41e18e91"
- }
- Frame {
- msec: 5984
- hash: "e3cd1bbb1d9963e5c74d36e526a871b0"
- }
- Frame {
- msec: 6000
- hash: "bcd893a0e200ddda4e1468c159018865"
- }
- Frame {
- msec: 6016
- hash: "9c5293356aa6312f909e655e9bcf961b"
- }
- Frame {
- msec: 6032
- hash: "0bab7b9166f6af554d4fa0badeec739e"
- }
- Frame {
- msec: 6048
- hash: "e74996581f0aaeced118c5cbfd977d90"
- }
- Frame {
- msec: 6064
- hash: "5d128eb20a2a23da8c2d9a35293e5769"
- }
- Frame {
- msec: 6080
- hash: "ebbbc343698287faf7ffa7526a726b54"
- }
- Frame {
- msec: 6096
- hash: "d812172192cc19590f9a2d7dbf970439"
- }
- Frame {
- msec: 6112
- hash: "60263addb1b4b5ac43f8199b8ed77e40"
- }
- Frame {
- msec: 6128
- hash: "702a1ff2876eaaa59359811bb6437c5b"
- }
- Frame {
- msec: 6144
- hash: "8f81dc43decce5094ee7a089f0009730"
- }
- Frame {
- msec: 6160
- hash: "efda5dd9edd83a0da089d0b28806c6b6"
- }
- Frame {
- msec: 6176
- hash: "7274a33a7a5272d7abdaf41f4b2bf664"
- }
- Frame {
- msec: 6192
- hash: "0cc80077476e721a3da85c17cc56a65e"
- }
- Frame {
- msec: 6208
- hash: "e65a534f0e7e70520a9c2cfa09ee8159"
- }
- Frame {
- msec: 6224
- hash: "b05b514c63bd8998785382e6a9cbd849"
- }
- Frame {
- msec: 6240
- hash: "10a04d641e0cc65c120d8bcf2f3e54c8"
- }
- Frame {
- msec: 6256
- hash: "68418e2206a496dd15a05b50fec6f87e"
- }
- Frame {
- msec: 6272
- hash: "6549e0989e1c86e3a7eb0dcc8dd31380"
- }
- Frame {
- msec: 6288
- hash: "bd0193c2cbc8958f674f4ec52a693b72"
- }
- Frame {
- msec: 6304
- hash: "746440b45a3688dbd32b34c57454e956"
- }
- Frame {
- msec: 6320
- hash: "6b54ee8af30be2178e8b3afab5dcb4c7"
- }
- Frame {
- msec: 6336
- hash: "ba2fbad3fe2fe25ec0c0c542659168dc"
- }
- Frame {
- msec: 6352
- hash: "84bd72703bd8200f8f090783d06ae451"
- }
- Frame {
- msec: 6368
- hash: "17c9fb063280c2ee4cb4a13273bbb199"
- }
- Frame {
- msec: 6384
- hash: "df28fd55719f5c2d164596d02c2faff2"
- }
- Frame {
- msec: 6400
- hash: "c2e280e78e892200d40022d17ce695b7"
- }
- Frame {
- msec: 6416
- hash: "c657caa0c5158e178ec5df80bbad6bcb"
- }
- Frame {
- msec: 6432
- hash: "d91f4f6ec6503fe8280f9b02dd11e64a"
- }
- Frame {
- msec: 6448
- hash: "0fb9400cdca9dbd4035fbf8af9952360"
- }
- Frame {
- msec: 6464
- hash: "cac0e1b4aa094306b95f90ede4705391"
- }
- Frame {
- msec: 6480
- hash: "e60a4bb14300a937a767effee931c60f"
- }
- Frame {
- msec: 6496
- hash: "8b461397e3f210ee7e9305dcab2af2db"
- }
- Frame {
- msec: 6512
- hash: "6ce9ec0942dd06c9f73929a7e176852c"
- }
- Frame {
- msec: 6528
- hash: "da36e254635eea854a6552ba008117f9"
- }
- Frame {
- msec: 6544
- hash: "0bec6402b5eb09d05ce8e9ff5253ea8d"
- }
- Frame {
- msec: 6560
- hash: "72f6610527d395ca590eda166ef6bc4e"
- }
- Frame {
- msec: 6576
- hash: "622ae3fd47adb2432e2a40d3c5539393"
- }
- Frame {
- msec: 6592
- hash: "0b18c49e2bbf9370216e06b555faf183"
- }
- Frame {
- msec: 6608
- hash: "0c090bb975fb883301b52479fd6f5fdf"
- }
- Frame {
- msec: 6624
- hash: "c4205d7ecb7327426d9591e77247acab"
- }
- Frame {
- msec: 6640
- hash: "f0e0075243e4b8aa97056248fe6033ed"
- }
- Frame {
- msec: 6656
- hash: "47f99b40a8764ee9d9e429061fb7acb2"
- }
- Frame {
- msec: 6672
- hash: "49e8c1e974b0716570d85109b53817a5"
- }
- Frame {
- msec: 6688
- hash: "72f981bad831b6ed858009527902f734"
- }
- Frame {
- msec: 6704
- hash: "e959a0493b06369a429f90f66cb65977"
- }
- Frame {
- msec: 6720
- image: "easefollow.6.png"
- }
- Frame {
- msec: 6736
- hash: "93470d983282f24425558f47ad705154"
- }
- Frame {
- msec: 6752
- hash: "cdccbe1a7c7abd4a6a6ee754ed0c9759"
- }
- Frame {
- msec: 6768
- hash: "0e1b7b5332a9fcdb492db5314a2a0267"
- }
- Frame {
- msec: 6784
- hash: "1e1ffe3439aab51d0b325474e7d8dc28"
- }
- Frame {
- msec: 6800
- hash: "e8e7e9b5871caf77f15678616d6c9c8a"
- }
- Frame {
- msec: 6816
- hash: "9771fff3b7752154d093c038bea73d28"
- }
- Frame {
- msec: 6832
- hash: "1af851ea214cbddb0e3a743084a5cf6b"
- }
- Frame {
- msec: 6848
- hash: "1566182a7e29bbb738705a90c4909617"
- }
- Frame {
- msec: 6864
- hash: "feed650e1d948fe622234d212fb745f2"
- }
- Frame {
- msec: 6880
- hash: "3cd3d063275b91f9680717421c118ba4"
- }
- Frame {
- msec: 6896
- hash: "c1f088801334762cd499e7cc70e1e59a"
- }
- Frame {
- msec: 6912
- hash: "e8f8d153e7a027a5092a9209411d97f7"
- }
- Frame {
- msec: 6928
- hash: "f11747c3533b4b2fc77a64ca0cace8b0"
- }
- Frame {
- msec: 6944
- hash: "21618c67a2a8bbce86fc872060ad40e8"
- }
- Frame {
- msec: 6960
- hash: "02da96335db74b87ceefe91b1dfe72e6"
- }
- Frame {
- msec: 6976
- hash: "2b2e4143143ead8dea5865fd782f1775"
- }
- Frame {
- msec: 6992
- hash: "13e710900b05e26cdb030b1e2b2be715"
- }
- Frame {
- msec: 7008
- hash: "29e8995d17aac4d02034debcbb9fcb98"
- }
- Frame {
- msec: 7024
- hash: "1099db1b3e4c69e84c6ab1b7c311bf1e"
- }
- Frame {
- msec: 7040
- hash: "cc7cb720043334f1eeb385dce4389dc2"
- }
- Frame {
- msec: 7056
- hash: "34c7a62c1bc7261e2fd31c40068b37a7"
- }
- Frame {
- msec: 7072
- hash: "7fafbe05cbcaa21893e3aa0f1fcfb5a0"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 7088
- hash: "5b26c8cf047706633795a8ed3e703a89"
- }
- Frame {
- msec: 7104
- hash: "e0774bf9e74d0cde81c5cb216a9258fc"
- }
- Frame {
- msec: 7120
- hash: "0870262f643245e13f4fba79fd575897"
- }
- Frame {
- msec: 7136
- hash: "8faf0d050bb435ade8af5012c1a6b0dc"
- }
- Frame {
- msec: 7152
- hash: "382c037895cc39a6870db57b5016c01f"
- }
- Frame {
- msec: 7168
- hash: "f1f5a2cbc103ab1bee9f537fa8266e03"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
deleted file mode 100644
index ac0c14159d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- width: 800; height: 240; color: "gray"
-
- Rectangle {
- id: rect
- width: 50; height: 20; y: 30; color: "black"
- SequentialAnimation on x {
- loops: Animation.Infinite
- NumberAnimation { from: 50; to: 700; duration: 2000 }
- NumberAnimation { from: 700; to: 50; duration: 2000 }
- }
- }
-
- Rectangle {
- width: 50; height: 20; y: 60; color: "red"
- x: rect.x
- Behavior on x { SmoothedAnimation { velocity: 400 } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 90; color: "yellow"
- x: rect.x
- Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 120; color: "green"
- x: rect.x
- Behavior on x { SmoothedAnimation { reversingMode: SmoothedAnimation.Sync } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 150; color: "purple"
- x: rect.x
- Behavior on x { SmoothedAnimation { maximumEasingTime: 200 } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 180; color: "blue"
- x: rect.x
- Behavior on x { SmoothedAnimation { duration: 300 } }
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
index 44c4dcdf7c..0e4e6429c2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
@@ -19,7 +19,6 @@ Rectangle {
Image {
x: 92.5; y: 27
source: "content/hour.png"
- smooth: true
transform: Rotation {
id: hourRotation
origin.x: 7.5; origin.y: 73
@@ -34,7 +33,6 @@ Rectangle {
Image {
x: 93.5; y: 17
source: "content/minute.png"
- smooth: true
transform: Rotation {
id: minuteRotation
origin.x: 6.5; origin.y: 83
@@ -49,7 +47,6 @@ Rectangle {
Image {
x: 97.5; y: 20
source: "content/second.png"
- smooth: true
transform: Rotation {
id: secondRotation
origin.x: 2.5; origin.y: 80
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png
index a885950862..a885950862 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png
index 7fbd802a44..7fbd802a44 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png
index 462edacc0e..462edacc0e 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png
index f8061a1235..f8061a1235 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png
index 1297ec7c2b..1297ec7c2b 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png
index 4aa9fb5e8e..4aa9fb5e8e 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png
new file mode 100644
index 0000000000..f159b6b2a3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png
new file mode 100644
index 0000000000..d24af1aab2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml
new file mode 100644
index 0000000000..a3cd66b3ca
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml
@@ -0,0 +1,615 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "cb33c89e5108c85e43b53489d1255862"
+ }
+ Frame {
+ msec: 32
+ hash: "cb33c89e5108c85e43b53489d1255862"
+ }
+ Frame {
+ msec: 48
+ hash: "fcf631cb42237d2ce9e57ef5fef85f93"
+ }
+ Frame {
+ msec: 64
+ hash: "a9f1e24d60588ff9b565b15847669438"
+ }
+ Frame {
+ msec: 80
+ hash: "c5a07045cd24b835fdd0653db5b34f9f"
+ }
+ Frame {
+ msec: 96
+ hash: "bce3e9bfa92f81f0c8746a4777ce1b3e"
+ }
+ Frame {
+ msec: 112
+ hash: "6da93132be1be8b42aaf007306ce5990"
+ }
+ Frame {
+ msec: 128
+ hash: "8695e73f009bd20f3f3aae4a6b8f0098"
+ }
+ Frame {
+ msec: 144
+ hash: "172ece19e661999ce48053007a92f107"
+ }
+ Frame {
+ msec: 160
+ hash: "6e02e658d8873dd678dc9cc7cc8035a0"
+ }
+ Frame {
+ msec: 176
+ hash: "d8e9bad91fd91bce0310a24233ecb906"
+ }
+ Frame {
+ msec: 192
+ hash: "9c23533f0a4d47ec192bed2e48f11c60"
+ }
+ Frame {
+ msec: 208
+ hash: "9c23533f0a4d47ec192bed2e48f11c60"
+ }
+ Frame {
+ msec: 224
+ hash: "be0ee20e9eb94b80171f66fa6f1c2441"
+ }
+ Frame {
+ msec: 240
+ hash: "83b841f7ea7a5e92a21ec0d0130b4281"
+ }
+ Frame {
+ msec: 256
+ hash: "3bbf822e403f4198fbfaa6973726947d"
+ }
+ Frame {
+ msec: 272
+ hash: "172ece19e661999ce48053007a92f107"
+ }
+ Frame {
+ msec: 288
+ hash: "602ca5ac2fc928b831d8e10de01f5bf7"
+ }
+ Frame {
+ msec: 304
+ hash: "9f07659e63a5b3412ede3c8400678cc6"
+ }
+ Frame {
+ msec: 320
+ hash: "6104f86706bd11cee6b5aeef495eacfa"
+ }
+ Frame {
+ msec: 336
+ hash: "b564cfe8c73b3d51e07bbcf5320868f8"
+ }
+ Frame {
+ msec: 352
+ hash: "b2136411eee23d64718a63269071499f"
+ }
+ Frame {
+ msec: 368
+ hash: "7f610f3b80c2cf002c6565ac4b7a8325"
+ }
+ Frame {
+ msec: 384
+ hash: "5480e79cc96fdaffecb2d9dec254c8d4"
+ }
+ Frame {
+ msec: 400
+ hash: "50eea6c6f135c21ecf05fc83ad1ae9a8"
+ }
+ Frame {
+ msec: 416
+ hash: "2d3634d621782194674da127abe66039"
+ }
+ Frame {
+ msec: 432
+ hash: "285180aa632c9247c3b7aa26f5544da6"
+ }
+ Frame {
+ msec: 448
+ hash: "8695e73f009bd20f3f3aae4a6b8f0098"
+ }
+ Frame {
+ msec: 464
+ hash: "914dc6254f29a6cffc80e90a23b61130"
+ }
+ Frame {
+ msec: 480
+ hash: "a564dc3a53b607ca7e9fc6920b65abc3"
+ }
+ Frame {
+ msec: 496
+ hash: "6104f86706bd11cee6b5aeef495eacfa"
+ }
+ Frame {
+ msec: 512
+ hash: "6f34176630c5d9d421a1a31cb3b97a28"
+ }
+ Frame {
+ msec: 528
+ hash: "62199c5663263fee08ba5ce560c7429d"
+ }
+ Frame {
+ msec: 544
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 560
+ hash: "0ec354101faf6603c9ca56fe82dc8ac3"
+ }
+ Frame {
+ msec: 576
+ hash: "0ec354101faf6603c9ca56fe82dc8ac3"
+ }
+ Frame {
+ msec: 592
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 608
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 624
+ hash: "62199c5663263fee08ba5ce560c7429d"
+ }
+ Frame {
+ msec: 640
+ hash: "1716d50c65b4319845fdc7ea1ceafe4d"
+ }
+ Frame {
+ msec: 656
+ hash: "d087befa8f95f70e33604748230d5dd5"
+ }
+ Frame {
+ msec: 672
+ hash: "7ae892fbab85d76e713ab70ca13d3f1f"
+ }
+ Frame {
+ msec: 688
+ hash: "fb069bfb88b35f9f15273e04a62a9534"
+ }
+ Frame {
+ msec: 704
+ hash: "41c69834e756bafc051ff65e149f8994"
+ }
+ Frame {
+ msec: 720
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 736
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 752
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 768
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 784
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 800
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 816
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 832
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 848
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 864
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 880
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 896
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 912
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 928
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 944
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 960
+ image: "clock.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 992
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1008
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1024
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1040
+ hash: "0ec9e1163fe8284ab27aa55f94bf3b14"
+ }
+ Frame {
+ msec: 1056
+ hash: "9b6efbb358b1c7928e005620a60ab4a9"
+ }
+ Frame {
+ msec: 1072
+ hash: "5be6fe791a3bb6f72a6c6a3d1e2fa86e"
+ }
+ Frame {
+ msec: 1088
+ hash: "41fefdc45bd52600f7f108d4163d484b"
+ }
+ Frame {
+ msec: 1104
+ hash: "45828a5bef6c4ad4d274c0ea46f72e44"
+ }
+ Frame {
+ msec: 1120
+ hash: "17f0925ae38ee4c523713592d6b9f541"
+ }
+ Frame {
+ msec: 1136
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1152
+ hash: "ded71422852eec4464f54e9c1b01b28a"
+ }
+ Frame {
+ msec: 1168
+ hash: "0318d105aa5f7d3bebb0d24a85065f90"
+ }
+ Frame {
+ msec: 1184
+ hash: "9abe4cb4e8ff6ffafd993b10ac55aad9"
+ }
+ Frame {
+ msec: 1200
+ hash: "b92dba35b477ce11822277ba64582232"
+ }
+ Frame {
+ msec: 1216
+ hash: "3a9a6106e1f12ffbc81ae9d4b30376fe"
+ }
+ Frame {
+ msec: 1232
+ hash: "4647b6e6c95e3339094c7e2641458137"
+ }
+ Frame {
+ msec: 1248
+ hash: "0977f3ed3ab6426423f7a7bfb0bd1726"
+ }
+ Frame {
+ msec: 1264
+ hash: "930002bcd6986af36678d23c3dc17330"
+ }
+ Frame {
+ msec: 1280
+ hash: "ded71422852eec4464f54e9c1b01b28a"
+ }
+ Frame {
+ msec: 1296
+ hash: "16164138479aed4db7fd9a1c785556cb"
+ }
+ Frame {
+ msec: 1312
+ hash: "0b884e6a8a1c93d62fcee037f9ad8745"
+ }
+ Frame {
+ msec: 1328
+ hash: "dd1323c721a0ede74910c16df4b47074"
+ }
+ Frame {
+ msec: 1344
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1360
+ hash: "e8c528178425f7c6089ed6d094e734fb"
+ }
+ Frame {
+ msec: 1376
+ hash: "f2954641b11004bc4d29a217791e3833"
+ }
+ Frame {
+ msec: 1392
+ hash: "5d4d4086c4aebf04eb5b0045cf9a36a8"
+ }
+ Frame {
+ msec: 1408
+ hash: "f2954641b11004bc4d29a217791e3833"
+ }
+ Frame {
+ msec: 1424
+ hash: "c2e47da0e709c9ddeee01ae29d3ad059"
+ }
+ Frame {
+ msec: 1440
+ hash: "e539f0142b3f6c2f7de084ddedbe979e"
+ }
+ Frame {
+ msec: 1456
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1472
+ hash: "ae191ede94be250b60744d81179c5054"
+ }
+ Frame {
+ msec: 1488
+ hash: "f985b1ab4feae3bd7066e15bdd026c1a"
+ }
+ Frame {
+ msec: 1504
+ hash: "dd1323c721a0ede74910c16df4b47074"
+ }
+ Frame {
+ msec: 1520
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1536
+ hash: "dcdeb76d6e4c676e736ec9fcf68f993b"
+ }
+ Frame {
+ msec: 1552
+ hash: "599bfdb42d46a31bf8639e7b1c89526b"
+ }
+ Frame {
+ msec: 1568
+ hash: "bef384984df19143de0c290a6621146d"
+ }
+ Frame {
+ msec: 1584
+ hash: "bef384984df19143de0c290a6621146d"
+ }
+ Frame {
+ msec: 1600
+ hash: "04192a5408bc1aff5431b4ea0be94b27"
+ }
+ Frame {
+ msec: 1616
+ hash: "8da64659fb7f532eac43a67accd319ee"
+ }
+ Frame {
+ msec: 1632
+ hash: "dcdeb76d6e4c676e736ec9fcf68f993b"
+ }
+ Frame {
+ msec: 1648
+ hash: "fba3a7729e46d8e78d203188ef29d829"
+ }
+ Frame {
+ msec: 1664
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1680
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1696
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1712
+ hash: "7f62ba22b5567d4ea96725a6215ff98a"
+ }
+ Frame {
+ msec: 1728
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1744
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1760
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1776
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1792
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1808
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1824
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1840
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1856
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1872
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1888
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1904
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1920
+ image: "clock.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1952
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1968
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1984
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2000
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2016
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2032
+ hash: "dba66886121f802a4a49ee1e220279db"
+ }
+ Frame {
+ msec: 2048
+ hash: "b43648a05b6900bd0402bb56c98692df"
+ }
+ Frame {
+ msec: 2064
+ hash: "8213e39455c952a589a90eea0040edfe"
+ }
+ Frame {
+ msec: 2080
+ hash: "0d72dcbb2de67c84c0cf802e1de2b32b"
+ }
+ Frame {
+ msec: 2096
+ hash: "db5b4994b46f3e0de86149af8b99abb6"
+ }
+ Frame {
+ msec: 2112
+ hash: "440f7414e3db5339f2180bf1fcdc1c55"
+ }
+ Frame {
+ msec: 2128
+ hash: "f757740304369ac45bb88657f79f304e"
+ }
+ Frame {
+ msec: 2144
+ hash: "4521da9bcf198f78f7270cca959adfe4"
+ }
+ Frame {
+ msec: 2160
+ hash: "92d602d139aedf31180f12349a1edcad"
+ }
+ Frame {
+ msec: 2176
+ hash: "4092500cb913f0c9ae49d61e53553371"
+ }
+ Frame {
+ msec: 2192
+ hash: "dee122e2c46b398c48a7ef1619683a6f"
+ }
+ Frame {
+ msec: 2208
+ hash: "1817fa481e8648dd092e29403b0f887e"
+ }
+ Frame {
+ msec: 2224
+ hash: "93a69d88553709c0f164b11d8d765805"
+ }
+ Frame {
+ msec: 2240
+ hash: "92d602d139aedf31180f12349a1edcad"
+ }
+ Frame {
+ msec: 2256
+ hash: "4ff6679a9615ca8bd5dd63c296cca3d5"
+ }
+ Frame {
+ msec: 2272
+ hash: "4521da9bcf198f78f7270cca959adfe4"
+ }
+ Frame {
+ msec: 2288
+ hash: "127b93b536f6266965941af5888a63dd"
+ }
+ Frame {
+ msec: 2304
+ hash: "1a3e36e44069a8bf29b73acfd8340044"
+ }
+ Frame {
+ msec: 2320
+ hash: "1065e18d2b41af8b0b5c4f5ae2a30d4d"
+ }
+ Frame {
+ msec: 2336
+ hash: "37144e92ba8c7edd2ef87ecb6525ed5f"
+ }
+ Frame {
+ msec: 2352
+ hash: "d6445d8270ddbf5fcd196b3d71393da4"
+ }
+ Frame {
+ msec: 2368
+ hash: "b55cc8bdf97531912fa1df1f379e623c"
+ }
+ Frame {
+ msec: 2384
+ hash: "fdb86be92fa17fd4e773e5fd65f249a3"
+ }
+ Frame {
+ msec: 2400
+ hash: "b55cc8bdf97531912fa1df1f379e623c"
+ }
+ Frame {
+ msec: 2416
+ hash: "eb0de8259f7a6be756102f79b5220f56"
+ }
+ Frame {
+ msec: 2432
+ hash: "5afbb87fe77112b86282252a2ffe3821"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png
new file mode 100644
index 0000000000..c79ac9c7ec
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png
new file mode 100644
index 0000000000..d00d78d6be
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png
new file mode 100644
index 0000000000..c01c980450
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png
new file mode 100644
index 0000000000..6bca85fad4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png
new file mode 100644
index 0000000000..5f024d2a7c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png
new file mode 100644
index 0000000000..b244fbe551
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png
new file mode 100644
index 0000000000..141753cd91
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
new file mode 100644
index 0000000000..a688563ee8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
@@ -0,0 +1,1763 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "e94ba580322887dbbbf9cb6309e39c23"
+ }
+ Frame {
+ msec: 32
+ hash: "e94ba580322887dbbbf9cb6309e39c23"
+ }
+ Frame {
+ msec: 48
+ hash: "787a59cda2c0b27d8959026e6d1b9427"
+ }
+ Frame {
+ msec: 64
+ hash: "9ca724d4b31aa16015b5cbb50eea0c3a"
+ }
+ Frame {
+ msec: 80
+ hash: "8a2c62a0190da1b7c1bade243baea6b8"
+ }
+ Frame {
+ msec: 96
+ hash: "e129bebca7ad348c3134569d8eee4efc"
+ }
+ Frame {
+ msec: 112
+ hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8"
+ }
+ Frame {
+ msec: 128
+ hash: "a82a4042fdca7c30facd2c4740c455f7"
+ }
+ Frame {
+ msec: 144
+ hash: "62195722eb3acbfbad137ec71fd50bfe"
+ }
+ Frame {
+ msec: 160
+ hash: "449819cdc880d59650732b5447ec6237"
+ }
+ Frame {
+ msec: 176
+ hash: "552a838ebcacc0e08fa93b64a2433831"
+ }
+ Frame {
+ msec: 192
+ hash: "3984992606d54f05eb31dd0974af2183"
+ }
+ Frame {
+ msec: 208
+ hash: "3fd7225bbb0215ca8b6397580f2352a5"
+ }
+ Frame {
+ msec: 224
+ hash: "0fd8f26f40a9049de1cf2a9493d579d1"
+ }
+ Frame {
+ msec: 240
+ hash: "d08f0c57f071dc42e79fc5e0e3c32eeb"
+ }
+ Frame {
+ msec: 256
+ hash: "084c2db330ee82cd032df248ecc9629d"
+ }
+ Frame {
+ msec: 272
+ hash: "98da0d7f280d7fc4579c970c9a173b51"
+ }
+ Frame {
+ msec: 288
+ hash: "4c819c54ced1b6ef0574417a7e11f2e7"
+ }
+ Frame {
+ msec: 304
+ hash: "3dc5f7b412cb176c3b23d37cda3ef87c"
+ }
+ Frame {
+ msec: 320
+ hash: "c368a01b43d94205c03f9c750c37f330"
+ }
+ Frame {
+ msec: 336
+ hash: "8842bd0c8b17cac4fc9df84835999174"
+ }
+ Frame {
+ msec: 352
+ hash: "26829e9c7ca44dfcb0c03852f4158a18"
+ }
+ Frame {
+ msec: 368
+ hash: "ecffdb0888f1721e27b163e1f29a1950"
+ }
+ Frame {
+ msec: 384
+ hash: "eaead96f2683c464a12df8aadba20691"
+ }
+ Frame {
+ msec: 400
+ hash: "1e931963925bd208dce1ec9011372a3b"
+ }
+ Frame {
+ msec: 416
+ hash: "1c3fd049001c1e883f21d0d1e0e32cba"
+ }
+ Frame {
+ msec: 432
+ hash: "e8c3422ca637750ac52565594737d092"
+ }
+ Frame {
+ msec: 448
+ hash: "b1c36322cf89e15a80af7c43f2aebca1"
+ }
+ Frame {
+ msec: 464
+ hash: "f676c3171495f7bb2cb1812cfebaa17a"
+ }
+ Frame {
+ msec: 480
+ hash: "255119e2efa99c8e31fee611aaaa5137"
+ }
+ Frame {
+ msec: 496
+ hash: "e0bd32e3d44cfc2351db105f4595f18a"
+ }
+ Frame {
+ msec: 512
+ hash: "b7f23b8f3769f929b42491efda7ebe19"
+ }
+ Frame {
+ msec: 528
+ hash: "718cee11d869a8a8c5191cc0c09f2d30"
+ }
+ Frame {
+ msec: 544
+ hash: "fbdbf92f8c5f507605ff50abc594682b"
+ }
+ Frame {
+ msec: 560
+ hash: "c07fdc69c72b40d3c8dd1cc499008888"
+ }
+ Frame {
+ msec: 576
+ hash: "38e17ecd537dc0f51211ad672a2ebb21"
+ }
+ Frame {
+ msec: 592
+ hash: "2cbdc8728ef779c62f9938672986658a"
+ }
+ Frame {
+ msec: 608
+ hash: "7fb66509d5d1df34861e9c70f9a579f0"
+ }
+ Frame {
+ msec: 624
+ hash: "410b89392e859058718a08b79ec3d8fa"
+ }
+ Frame {
+ msec: 640
+ hash: "9bd90f80700217d08dafed93b81ee9cf"
+ }
+ Frame {
+ msec: 656
+ hash: "6d83671504a4274887b4e0d9bd2b24e7"
+ }
+ Frame {
+ msec: 672
+ hash: "51ff7bd3fd4a776af33fce7b935b145c"
+ }
+ Frame {
+ msec: 688
+ hash: "20f27392368b63b248bcd455cf3c9106"
+ }
+ Frame {
+ msec: 704
+ hash: "1a5ab296bd55aa215c9b04a7ff6c73a1"
+ }
+ Frame {
+ msec: 720
+ hash: "020fd7b14e8662fc006b0c39adca7c6a"
+ }
+ Frame {
+ msec: 736
+ hash: "2619120bdb25a153963bdf05c4a16d44"
+ }
+ Frame {
+ msec: 752
+ hash: "fd321314031efeb9ce71146764289d9f"
+ }
+ Frame {
+ msec: 768
+ hash: "378a71f09445dfff284db919787cbf87"
+ }
+ Frame {
+ msec: 784
+ hash: "d59eefe82ab8a00c903141dd9ea767ef"
+ }
+ Frame {
+ msec: 800
+ hash: "0a65004d69a4567f2a5c7e84dab3a905"
+ }
+ Frame {
+ msec: 816
+ hash: "92a4631716a51ff484ca14d9cfe05b2e"
+ }
+ Frame {
+ msec: 832
+ hash: "87203f627cf410cad56d6ba38a140efa"
+ }
+ Frame {
+ msec: 848
+ hash: "054cc085998cc059a6b7b4a7300dd36b"
+ }
+ Frame {
+ msec: 864
+ hash: "af3fefeb908a0485c723d36f61eff0a4"
+ }
+ Frame {
+ msec: 880
+ hash: "3f905d1e1ea79858b5a9bbfeab4eb255"
+ }
+ Frame {
+ msec: 896
+ hash: "f935f1fc5f26a201098d894fca9a4d1f"
+ }
+ Frame {
+ msec: 912
+ hash: "42b003dbb531da514716b9c32bdd3614"
+ }
+ Frame {
+ msec: 928
+ hash: "a82fed83ee4efee7896b639c7691b13a"
+ }
+ Frame {
+ msec: 944
+ hash: "31ad8cbf875233ea495330b0d3d4d2dd"
+ }
+ Frame {
+ msec: 960
+ image: "follow.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "78422e0e8d323dea6aa655a2980b7562"
+ }
+ Frame {
+ msec: 992
+ hash: "5d71ff48b865ad4266eb8292f981b04e"
+ }
+ Frame {
+ msec: 1008
+ hash: "df599d934d131c92b209284277009efb"
+ }
+ Frame {
+ msec: 1024
+ hash: "5aaf33d11eb70ffdfe89246c637caed7"
+ }
+ Frame {
+ msec: 1040
+ hash: "9648cf623a66ded145c4fd23a42917b3"
+ }
+ Frame {
+ msec: 1056
+ hash: "9d33c2cc44ceac5a527ddcf809a51df6"
+ }
+ Frame {
+ msec: 1072
+ hash: "6d0ad2e0d012e53a03e246e6d5e49e13"
+ }
+ Frame {
+ msec: 1088
+ hash: "d33fa68796e38b19f44571d11c1bcd33"
+ }
+ Frame {
+ msec: 1104
+ hash: "636680f49bbf30b0fac31a6c581f18dd"
+ }
+ Frame {
+ msec: 1120
+ hash: "66801dbc39301e6b46b244fe502e0340"
+ }
+ Frame {
+ msec: 1136
+ hash: "f8fa6a033483279e78636f26493b10ac"
+ }
+ Frame {
+ msec: 1152
+ hash: "11b46611550173df42986dee4339d907"
+ }
+ Frame {
+ msec: 1168
+ hash: "5c9afdb519006079ee8d28b2b60d0b76"
+ }
+ Frame {
+ msec: 1184
+ hash: "9a55c38b2cd8abf25fbe448c7ef80971"
+ }
+ Frame {
+ msec: 1200
+ hash: "27ebdf1424e892b35c93ec009d942407"
+ }
+ Frame {
+ msec: 1216
+ hash: "2d9e3f0ae56f7337012b51c4dd173108"
+ }
+ Frame {
+ msec: 1232
+ hash: "e6f89ca892131d68ff1f4ca95c95d807"
+ }
+ Frame {
+ msec: 1248
+ hash: "f75791f1b12a217d37acb09bdb114cc5"
+ }
+ Frame {
+ msec: 1264
+ hash: "94c5ab1460fb1b0f957a9718b45bca36"
+ }
+ Frame {
+ msec: 1280
+ hash: "e246c8a0ec3d01ea20258b24a5673fe1"
+ }
+ Frame {
+ msec: 1296
+ hash: "529de7735e73409dff266d8c1275215c"
+ }
+ Frame {
+ msec: 1312
+ hash: "330400763a670580570cb62241ebec62"
+ }
+ Frame {
+ msec: 1328
+ hash: "ae444d1de9c509fc6f74136ca90f927a"
+ }
+ Frame {
+ msec: 1344
+ hash: "c43631ca8ee90ea5dc7664be5bc45429"
+ }
+ Frame {
+ msec: 1360
+ hash: "b366ac4a5b66c331a7667e9df0fc4eda"
+ }
+ Frame {
+ msec: 1376
+ hash: "1c7f4c47a9c57a34787cc9703e99bff1"
+ }
+ Frame {
+ msec: 1392
+ hash: "5555535609d512e8d34549b6624f74b8"
+ }
+ Frame {
+ msec: 1408
+ hash: "be59df714541923494b59f31f57e310e"
+ }
+ Frame {
+ msec: 1424
+ hash: "63e434f053032e54298f6e61c8d4da7d"
+ }
+ Frame {
+ msec: 1440
+ hash: "b0bb838637eceb6f8993ebc5b887afed"
+ }
+ Frame {
+ msec: 1456
+ hash: "fc39f33add4ebcaf578558ecd4aea281"
+ }
+ Frame {
+ msec: 1472
+ hash: "3f36faa7cc1e5898d4d5890c47633ff3"
+ }
+ Frame {
+ msec: 1488
+ hash: "4b328002b4461869b1f7de48e7291902"
+ }
+ Frame {
+ msec: 1504
+ hash: "26252c63924d2abcaebea2c7caf1d7aa"
+ }
+ Frame {
+ msec: 1520
+ hash: "a9a6023484ae439be86b2c2ff59dc40b"
+ }
+ Frame {
+ msec: 1536
+ hash: "620dab11bd4aab84cc0d949c48dd9a5d"
+ }
+ Frame {
+ msec: 1552
+ hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f"
+ }
+ Frame {
+ msec: 1568
+ hash: "b33306abcb6a8402e491b7216495c778"
+ }
+ Frame {
+ msec: 1584
+ hash: "3cc52e8649a02e87785f1dc63f5c1efd"
+ }
+ Frame {
+ msec: 1600
+ hash: "fe21141f48da685213ed9d7641b2e7a0"
+ }
+ Frame {
+ msec: 1616
+ hash: "205aac4e822e20bd32f637256250f3c8"
+ }
+ Frame {
+ msec: 1632
+ hash: "124df0948f36aaf6151556d301f4b930"
+ }
+ Frame {
+ msec: 1648
+ hash: "c1701edd5eaf143fd1dbdc4a5324b48a"
+ }
+ Frame {
+ msec: 1664
+ hash: "117402df55367c918a3835958f4ab1d6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "73e3b86a1da28490cae4b03fdceefe19"
+ }
+ Frame {
+ msec: 1696
+ hash: "172e329fb47d6db0180242990a84fe3b"
+ }
+ Frame {
+ msec: 1712
+ hash: "82cf704cdfd406bab22689bc888ddc8d"
+ }
+ Frame {
+ msec: 1728
+ hash: "4c288f198a06d1b2815d34c3c8f97051"
+ }
+ Frame {
+ msec: 1744
+ hash: "6404d81456bb95a6b1c1ae55a181e40e"
+ }
+ Frame {
+ msec: 1760
+ hash: "b2b4b3de77e2b7fd58d3da1ad52355a9"
+ }
+ Frame {
+ msec: 1776
+ hash: "95388037c1f79a9dab951031f1d7c307"
+ }
+ Frame {
+ msec: 1792
+ hash: "c4ee57d9bffbb5f0ff173db48eadf2e3"
+ }
+ Frame {
+ msec: 1808
+ hash: "703ac9672a9c55cf08e6381ef76ac13c"
+ }
+ Frame {
+ msec: 1824
+ hash: "ea7726d2a2923290398262c8f70d511e"
+ }
+ Frame {
+ msec: 1840
+ hash: "5d1af6cbdb4ee5b00045751204408632"
+ }
+ Frame {
+ msec: 1856
+ hash: "a52aa37b10a05382f1b136896b7e00e8"
+ }
+ Frame {
+ msec: 1872
+ hash: "a5acc1a45c95a67725e5e15084b7be18"
+ }
+ Frame {
+ msec: 1888
+ hash: "c9fac8b5a4110493958d49b073ea96ed"
+ }
+ Frame {
+ msec: 1904
+ hash: "6fca3a5c6d1cfbf1b905aca25b7785c5"
+ }
+ Frame {
+ msec: 1920
+ image: "follow.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "379d5c4ced414f856e476095fbedfb7d"
+ }
+ Frame {
+ msec: 1952
+ hash: "b2f980ab19d44ee98ab3e82a19adfe2d"
+ }
+ Frame {
+ msec: 1968
+ hash: "e01732623930aebefd76ab62c81dc722"
+ }
+ Frame {
+ msec: 1984
+ hash: "3a59c6851bc89eb31100092b1ceddbd9"
+ }
+ Frame {
+ msec: 2000
+ hash: "2949de19eacb9f35816aa7ba69614f2c"
+ }
+ Frame {
+ msec: 2016
+ hash: "f2c4c1f4429cbb6bd10f2318b2cb6904"
+ }
+ Frame {
+ msec: 2032
+ hash: "2c48af64162e7e028cd536dba03eab71"
+ }
+ Frame {
+ msec: 2048
+ hash: "7fe13b8f9253f720b6591b396cfba2d1"
+ }
+ Frame {
+ msec: 2064
+ hash: "559947a03e650575a764801366cc504b"
+ }
+ Frame {
+ msec: 2080
+ hash: "a8d09f6c862fd5ec2dcf34f06d1ef744"
+ }
+ Frame {
+ msec: 2096
+ hash: "e3bb4b62209631ff84134f2243bfdb42"
+ }
+ Frame {
+ msec: 2112
+ hash: "a1956a9d1939bc154ea0c88d596948cc"
+ }
+ Frame {
+ msec: 2128
+ hash: "c98a375727860da1e827d4dd74af8f63"
+ }
+ Frame {
+ msec: 2144
+ hash: "df4edcbb2ef5348341ff55c808609b6c"
+ }
+ Frame {
+ msec: 2160
+ hash: "6287564be85b7cbadc6bb6f0232bc837"
+ }
+ Frame {
+ msec: 2176
+ hash: "9826fdb48f7ea770fa5f198ec49d7cb7"
+ }
+ Frame {
+ msec: 2192
+ hash: "56f82641a5591df9bb929cc0d32eb95d"
+ }
+ Frame {
+ msec: 2208
+ hash: "526c55e555fb2e58796561efa3568c50"
+ }
+ Frame {
+ msec: 2224
+ hash: "6b4b74613421c1841a17c369cb316754"
+ }
+ Frame {
+ msec: 2240
+ hash: "37f785c30947d5eec113dcf6af649abf"
+ }
+ Frame {
+ msec: 2256
+ hash: "5ff2c975dd9e261c764537c836627c4d"
+ }
+ Frame {
+ msec: 2272
+ hash: "efe554981583749c3d09988bce7fed02"
+ }
+ Frame {
+ msec: 2288
+ hash: "0f7204b4afb0ea5d58e49650e8027c0c"
+ }
+ Frame {
+ msec: 2304
+ hash: "817291f91f4b309710ad3aed53a7d47a"
+ }
+ Frame {
+ msec: 2320
+ hash: "c15c9cd03089090cf8a777c1f0d88de7"
+ }
+ Frame {
+ msec: 2336
+ hash: "05f45cb8d0856dcc81091351615e35d6"
+ }
+ Frame {
+ msec: 2352
+ hash: "99785a16fed6d6409b4b47ec55afb56b"
+ }
+ Frame {
+ msec: 2368
+ hash: "39032cb4432ee9536af500673fccf526"
+ }
+ Frame {
+ msec: 2384
+ hash: "9057653e3cd6042831037d3590e7595b"
+ }
+ Frame {
+ msec: 2400
+ hash: "76c772eb2ab8f117c260c9c96bc99e1d"
+ }
+ Frame {
+ msec: 2416
+ hash: "b6474665b8f8bcdd76d1a38efecad889"
+ }
+ Frame {
+ msec: 2432
+ hash: "106c2d2efafad0181e3ded3a6805f2c6"
+ }
+ Frame {
+ msec: 2448
+ hash: "5275fa4ffef6c1909f9d03bb1e7b9cae"
+ }
+ Frame {
+ msec: 2464
+ hash: "0c1043c0087d60000dc7259d4ac03618"
+ }
+ Frame {
+ msec: 2480
+ hash: "645748569b4f5cb9b206b0808bb7d23d"
+ }
+ Frame {
+ msec: 2496
+ hash: "dd95dfa80e1b3ff511e7c75efd0d87ce"
+ }
+ Frame {
+ msec: 2512
+ hash: "86b3dd03b04d7610837cdc67cad07e0a"
+ }
+ Frame {
+ msec: 2528
+ hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2"
+ }
+ Frame {
+ msec: 2544
+ hash: "6bf52377d822b09eb28a1ec36d3a36a9"
+ }
+ Frame {
+ msec: 2560
+ hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa"
+ }
+ Frame {
+ msec: 2576
+ hash: "860f5ce9844c90cf9e6a6d383ff0972f"
+ }
+ Frame {
+ msec: 2592
+ hash: "5502229c038dfc59d966f69ae6ed8957"
+ }
+ Frame {
+ msec: 2608
+ hash: "21843c027bc1434ae60b3bb0fced2c54"
+ }
+ Frame {
+ msec: 2624
+ hash: "962df45680949c3eb6c968f98cd76b20"
+ }
+ Frame {
+ msec: 2640
+ hash: "f313c26fa76a0edce61244bdf92528e4"
+ }
+ Frame {
+ msec: 2656
+ hash: "b7bbde239e98cbd66b1e51b54b747f51"
+ }
+ Frame {
+ msec: 2672
+ hash: "62340707fbc832fcb805c8f80ab353d1"
+ }
+ Frame {
+ msec: 2688
+ hash: "d008a3f7af1810ff70b68b38a4cd0f0d"
+ }
+ Frame {
+ msec: 2704
+ hash: "e651dd628af24faf34d716beb392b052"
+ }
+ Frame {
+ msec: 2720
+ hash: "a97733963c7a7616b25741545b07ffba"
+ }
+ Frame {
+ msec: 2736
+ hash: "3e017cc1db720cf16521bd17308e4f44"
+ }
+ Frame {
+ msec: 2752
+ hash: "13652ebaa610cca71486517e2eed21a5"
+ }
+ Frame {
+ msec: 2768
+ hash: "09f0f500c6f7d11be39c31f9e589b38a"
+ }
+ Frame {
+ msec: 2784
+ hash: "b87968cbc60ddc6a5f5699e830410eab"
+ }
+ Frame {
+ msec: 2800
+ hash: "50e65b043d1f07a321a08ee4c25204f6"
+ }
+ Frame {
+ msec: 2816
+ hash: "122d1ffa1510468e8c4067e0f511588f"
+ }
+ Frame {
+ msec: 2832
+ hash: "585f6c25caaafb99a22a23d8a998d202"
+ }
+ Frame {
+ msec: 2848
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2864
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2880
+ image: "follow.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc"
+ }
+ Frame {
+ msec: 2912
+ hash: "31926d69c2309fdf13fbd7f0e9868c3d"
+ }
+ Frame {
+ msec: 2928
+ hash: "eb3acacce5dd31b0e94b59b9e546ccae"
+ }
+ Frame {
+ msec: 2944
+ hash: "9a51cff3276d75803a0a6e480f7ecb70"
+ }
+ Frame {
+ msec: 2960
+ hash: "fbbd8b9d519993a699815d935bcd2b9f"
+ }
+ Frame {
+ msec: 2976
+ hash: "0314190c6de73f9f374a4eaed0709645"
+ }
+ Frame {
+ msec: 2992
+ hash: "8ca1a203bdb5446094eb948aeb0a333e"
+ }
+ Frame {
+ msec: 3008
+ hash: "301e1b86ce38e11ad9d0d7aba0909985"
+ }
+ Frame {
+ msec: 3024
+ hash: "922095867d0a91b73ab7a63df2041279"
+ }
+ Frame {
+ msec: 3040
+ hash: "ba8275f3ba4633bf64a1f81f630c90f1"
+ }
+ Frame {
+ msec: 3056
+ hash: "efe39545279a7bd015d2de75d2b9d8b1"
+ }
+ Frame {
+ msec: 3072
+ hash: "78926c3c0c6fcf89b9291f9902710964"
+ }
+ Frame {
+ msec: 3088
+ hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc"
+ }
+ Frame {
+ msec: 3104
+ hash: "286ad493301b713a49e378f123482a53"
+ }
+ Frame {
+ msec: 3120
+ hash: "a4bbbb8bb88188d3e99996502e3eebd1"
+ }
+ Frame {
+ msec: 3136
+ hash: "a6100e79f3dc5af594e86ab6cd8dfb76"
+ }
+ Frame {
+ msec: 3152
+ hash: "d9e3f777dc89bcf1b7f712206db768e2"
+ }
+ Frame {
+ msec: 3168
+ hash: "768045c600c0aa0b1e9e6f012733c600"
+ }
+ Frame {
+ msec: 3184
+ hash: "d8b4caa641ddee786f7898359efe9d07"
+ }
+ Frame {
+ msec: 3200
+ hash: "f7c3b76d5bb7c263ac9447eaad685158"
+ }
+ Frame {
+ msec: 3216
+ hash: "f7f97db815d653ec29fa31b87f72af2a"
+ }
+ Frame {
+ msec: 3232
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3248
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3264
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3280
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3296
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3312
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3328
+ hash: "430995770b655054aaeda383df8e27f7"
+ }
+ Frame {
+ msec: 3344
+ hash: "16a3a00f2b89aed676f80d63c4933ec3"
+ }
+ Frame {
+ msec: 3360
+ hash: "6c55aa62079ec546522edbf69c37b270"
+ }
+ Frame {
+ msec: 3376
+ hash: "0d68ca3ccecdd831013950cc7405e46e"
+ }
+ Frame {
+ msec: 3392
+ hash: "9da2511bc8b434218695fa74ed543439"
+ }
+ Frame {
+ msec: 3408
+ hash: "05afdd0b99dab81a500cdc2b2f0786fe"
+ }
+ Frame {
+ msec: 3424
+ hash: "e6f8882d146ae60bcc6ea47ff41a637b"
+ }
+ Frame {
+ msec: 3440
+ hash: "154542ed0e88321294f382501819aefc"
+ }
+ Frame {
+ msec: 3456
+ hash: "8f47b6980c387c5020145bf04645fd2d"
+ }
+ Frame {
+ msec: 3472
+ hash: "b34b055c7602f1f4e1cde875b258120c"
+ }
+ Frame {
+ msec: 3488
+ hash: "5a697f675575f05e297d4877604b9a47"
+ }
+ Frame {
+ msec: 3504
+ hash: "729dff1d1b357d19fc81804ec8940d0e"
+ }
+ Frame {
+ msec: 3520
+ hash: "c6f3fee46baa94a6139d2ee40254b160"
+ }
+ Frame {
+ msec: 3536
+ hash: "af0e700bb8ae34834510830f8b44afdb"
+ }
+ Frame {
+ msec: 3552
+ hash: "9c87bb54c2dfe58c2da9194dae6f7502"
+ }
+ Frame {
+ msec: 3568
+ hash: "2132356a92c75d725f9feafb8201b142"
+ }
+ Frame {
+ msec: 3584
+ hash: "50d855d2595eeae2bfd6aaa8c2fa0454"
+ }
+ Frame {
+ msec: 3600
+ hash: "5fde3c62d6e53a9056e3586f9dcda59e"
+ }
+ Frame {
+ msec: 3616
+ hash: "8f04460254a1e9fb949d5165894cd92a"
+ }
+ Frame {
+ msec: 3632
+ hash: "2b514c5e3b20d30f9c7e71092c69f081"
+ }
+ Frame {
+ msec: 3648
+ hash: "2c1ba6224037790e15f5c0f2864ace4d"
+ }
+ Frame {
+ msec: 3664
+ hash: "0d5b8e7bd5f560888aacaf2b3c6827a8"
+ }
+ Frame {
+ msec: 3680
+ hash: "ae25004530e7df134414018e4a34780e"
+ }
+ Frame {
+ msec: 3696
+ hash: "1a8fd9eaf9a91f1b42924f8986fbed9a"
+ }
+ Frame {
+ msec: 3712
+ hash: "2ea6de2025d40ed5beeff12a5b70ccc9"
+ }
+ Frame {
+ msec: 3728
+ hash: "624e417718d3cac1e4b7e4ce258ce6ea"
+ }
+ Frame {
+ msec: 3744
+ hash: "8b56d29391257c7be8966af6be26ea9f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3760
+ hash: "5c0d977d8b446d9191bde57335cf1062"
+ }
+ Frame {
+ msec: 3776
+ hash: "100be2b21d069e3a5dbb694a90da4d4f"
+ }
+ Frame {
+ msec: 3792
+ hash: "caab03f6c81080dd8fdbedb4e94ae4a5"
+ }
+ Frame {
+ msec: 3808
+ hash: "3328a4d06f2f80a7e9ccf2ff21522fca"
+ }
+ Frame {
+ msec: 3824
+ hash: "a534e6cc28daf3eff6a9cf8379bd6375"
+ }
+ Frame {
+ msec: 3840
+ image: "follow.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "0aed83364cd59e3f7309c92593894d43"
+ }
+ Frame {
+ msec: 3872
+ hash: "d3f1c3593375ca5c022a1361a7ec70bd"
+ }
+ Frame {
+ msec: 3888
+ hash: "67843e6192e2ecaa3820c37dc2f93106"
+ }
+ Frame {
+ msec: 3904
+ hash: "19a022f678e5b8f4ebdff936162323dc"
+ }
+ Frame {
+ msec: 3920
+ hash: "34e55ae70c9e156db339ae15642359c3"
+ }
+ Frame {
+ msec: 3936
+ hash: "3784778c817f9d9bb73d990cfe12685a"
+ }
+ Frame {
+ msec: 3952
+ hash: "0403fdf79e3ba339c7e3786db0c9c0f0"
+ }
+ Frame {
+ msec: 3968
+ hash: "93e4a0d5645d1cfc916f1e8422655555"
+ }
+ Frame {
+ msec: 3984
+ hash: "29080bfabb87160b7c51385fb36b474b"
+ }
+ Frame {
+ msec: 4000
+ hash: "9da2d83edc9d35f00fb8a159e79de4d9"
+ }
+ Frame {
+ msec: 4016
+ hash: "5505a42d4788f00cfc7499fbfda851ce"
+ }
+ Frame {
+ msec: 4032
+ hash: "bdd3040ab16fa9ffdd2fbc66b06699f8"
+ }
+ Frame {
+ msec: 4048
+ hash: "2a347e30a20c693a9440caa60ade0a0f"
+ }
+ Frame {
+ msec: 4064
+ hash: "0307f1857c091a639d47f112ce1a2f5a"
+ }
+ Frame {
+ msec: 4080
+ hash: "778d18e539bbd562ebe39283a6315df1"
+ }
+ Frame {
+ msec: 4096
+ hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed"
+ }
+ Frame {
+ msec: 4112
+ hash: "9f7413587ab50f1abf776bf180ec2d6f"
+ }
+ Frame {
+ msec: 4128
+ hash: "7d04a27236485808e571e8a39f23ea17"
+ }
+ Frame {
+ msec: 4144
+ hash: "a1dff63b723473d5a4c9c59975a2fb81"
+ }
+ Frame {
+ msec: 4160
+ hash: "9795ea70a3b9d3b7805221a58c19e5da"
+ }
+ Frame {
+ msec: 4176
+ hash: "f1392c489e21107136eb8e0d1e8b427e"
+ }
+ Frame {
+ msec: 4192
+ hash: "95c225ef07171a96335e99078195b06a"
+ }
+ Frame {
+ msec: 4208
+ hash: "d46ef3e7f9cec06e8c18afc0d07be4f3"
+ }
+ Frame {
+ msec: 4224
+ hash: "b017f5b51d423bb0fca0d6df3aaded8b"
+ }
+ Frame {
+ msec: 4240
+ hash: "60584d085b0cd6fbc436773be678597e"
+ }
+ Frame {
+ msec: 4256
+ hash: "117951465dfd5c386826b295560d2dec"
+ }
+ Frame {
+ msec: 4272
+ hash: "1b70137da5f4e024593999e93121fe8b"
+ }
+ Frame {
+ msec: 4288
+ hash: "bd50dffd41941fef127f39b55c4748e0"
+ }
+ Frame {
+ msec: 4304
+ hash: "8eec34d8e1d2e22d11b85a671cd4d3aa"
+ }
+ Frame {
+ msec: 4320
+ hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0"
+ }
+ Frame {
+ msec: 4336
+ hash: "28e1cf1ee033915ea2ee39c9ab00a73d"
+ }
+ Frame {
+ msec: 4352
+ hash: "99101a156a553f441f00221f6facbf1f"
+ }
+ Frame {
+ msec: 4368
+ hash: "419023e5d59d16c26b35bee7d3cea559"
+ }
+ Frame {
+ msec: 4384
+ hash: "485d23519293975b04031fe4baa5c276"
+ }
+ Frame {
+ msec: 4400
+ hash: "c8bc60735e0ede26dbaf228294853f9a"
+ }
+ Frame {
+ msec: 4416
+ hash: "ada3680b807d59843e3adf6640704066"
+ }
+ Frame {
+ msec: 4432
+ hash: "3e28f3adf9241512cd0d6918d81ffffb"
+ }
+ Frame {
+ msec: 4448
+ hash: "8f339acc33cbc89ae1c62391ce021bb3"
+ }
+ Frame {
+ msec: 4464
+ hash: "d303960c0853a90557d64a04b8283c94"
+ }
+ Frame {
+ msec: 4480
+ hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4"
+ }
+ Frame {
+ msec: 4496
+ hash: "30c6e6f283f4a3f538cdda9c2e92de8c"
+ }
+ Frame {
+ msec: 4512
+ hash: "04d2ac55774b43107a43a7d33764199b"
+ }
+ Frame {
+ msec: 4528
+ hash: "cddf3e111cbc59e721725daa1d8a0c31"
+ }
+ Frame {
+ msec: 4544
+ hash: "15b1b63cd1695207ebf9f04387be0739"
+ }
+ Frame {
+ msec: 4560
+ hash: "690769b9bbe86a3c5b1fbdee39615fbd"
+ }
+ Frame {
+ msec: 4576
+ hash: "2bd640d8ddbf878d808f22656fef1ed9"
+ }
+ Frame {
+ msec: 4592
+ hash: "a654f1e4519bf883d554276ebbe96323"
+ }
+ Frame {
+ msec: 4608
+ hash: "68f0313cfc3f51a0bb9b47c5407c19b6"
+ }
+ Frame {
+ msec: 4624
+ hash: "77f29806b084de4cabf7ab9bf1a93d5e"
+ }
+ Frame {
+ msec: 4640
+ hash: "f9991189e3282d107b98fb0ae5f5ef00"
+ }
+ Frame {
+ msec: 4656
+ hash: "0cd1f2f6e347d48feea1b26a4968dec7"
+ }
+ Frame {
+ msec: 4672
+ hash: "e75a6f6a088e2289042572a161ffb0e9"
+ }
+ Frame {
+ msec: 4688
+ hash: "5a541081444c0a71128223a4c4c3144c"
+ }
+ Frame {
+ msec: 4704
+ hash: "6813d442cc610f346a5441ed0cd723e5"
+ }
+ Frame {
+ msec: 4720
+ hash: "24ec539bc57899819915f833f26deacd"
+ }
+ Frame {
+ msec: 4736
+ hash: "3a7ed1b4b533b817674aa141c420cd61"
+ }
+ Frame {
+ msec: 4752
+ hash: "d0a643fae97bb152e97ca60e96299003"
+ }
+ Frame {
+ msec: 4768
+ hash: "c84093931520f4661eff6645091a294b"
+ }
+ Frame {
+ msec: 4784
+ hash: "81e7ceaece82505a4a16ead195a66162"
+ }
+ Frame {
+ msec: 4800
+ image: "follow.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "a510d302d2441b9a07463aed8b592d32"
+ }
+ Frame {
+ msec: 4832
+ hash: "d1824ced8af34ad9edb36a58ae9aa7f5"
+ }
+ Frame {
+ msec: 4848
+ hash: "167b9a49fbb94908e09e7e9c9147cd8b"
+ }
+ Frame {
+ msec: 4864
+ hash: "442d5f0906840de526d59a80ada322c0"
+ }
+ Frame {
+ msec: 4880
+ hash: "78206c4d4d23c7c1ba888b9062b09432"
+ }
+ Frame {
+ msec: 4896
+ hash: "e898202cfebbff1952efc6e01254d855"
+ }
+ Frame {
+ msec: 4912
+ hash: "ab31dc7bbad2b0552359866bb8d92f0c"
+ }
+ Frame {
+ msec: 4928
+ hash: "f093304e88964376baf9721d53d4fb49"
+ }
+ Frame {
+ msec: 4944
+ hash: "3ef76f3e1c44d13c3a469bd192ff7b5d"
+ }
+ Frame {
+ msec: 4960
+ hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15"
+ }
+ Frame {
+ msec: 4976
+ hash: "3c73573f12f49b34e1d990a55ad913fa"
+ }
+ Frame {
+ msec: 4992
+ hash: "d1bac071b01a1c6fddab90cdc435fad4"
+ }
+ Frame {
+ msec: 5008
+ hash: "36a219aadec910f1dbef616c641e1d2b"
+ }
+ Frame {
+ msec: 5024
+ hash: "5871fc67d361cc988551592ee21dfb23"
+ }
+ Frame {
+ msec: 5040
+ hash: "6e65ee6c814b9a9da205c36925e663bf"
+ }
+ Frame {
+ msec: 5056
+ hash: "290b20fa8e91d34000d7c2d81745f6d2"
+ }
+ Frame {
+ msec: 5072
+ hash: "19e7405a9083a8143f7bb040f8837b29"
+ }
+ Frame {
+ msec: 5088
+ hash: "c0a0fa2b4c1ceb6c70594994a1ac8713"
+ }
+ Frame {
+ msec: 5104
+ hash: "c236224c16743fb606deb78bcb8afc8d"
+ }
+ Frame {
+ msec: 5120
+ hash: "7d44db15eb300b4338ffc26e9bcfce20"
+ }
+ Frame {
+ msec: 5136
+ hash: "067a79148a194c45c6f32d85316a1e11"
+ }
+ Frame {
+ msec: 5152
+ hash: "9075c379044476994a87f0fdcce8e332"
+ }
+ Frame {
+ msec: 5168
+ hash: "b2316988fbd51096a4f512e71fe7d0a2"
+ }
+ Frame {
+ msec: 5184
+ hash: "280f70877d93af5f84e178aad6a102d8"
+ }
+ Frame {
+ msec: 5200
+ hash: "3eef4ae7e43a8cf1cd9dd562237296f8"
+ }
+ Frame {
+ msec: 5216
+ hash: "e3184f77ce3a47ca4dca6386f42d7fec"
+ }
+ Frame {
+ msec: 5232
+ hash: "a2a5df66fe4808ea8d466cac84ba910c"
+ }
+ Frame {
+ msec: 5248
+ hash: "9f8a0e54788112d6c30482e840504f35"
+ }
+ Frame {
+ msec: 5264
+ hash: "ae69cf84798844f9f360c86790feaecd"
+ }
+ Frame {
+ msec: 5280
+ hash: "0244526572acb6266db5b7eb9d29c6fc"
+ }
+ Frame {
+ msec: 5296
+ hash: "8fb53d60b95ddb5aef27442934ea9983"
+ }
+ Frame {
+ msec: 5312
+ hash: "930fcfde491b4f5681e3861764003895"
+ }
+ Frame {
+ msec: 5328
+ hash: "bcdcd0a637112d113ebe11dc18823237"
+ }
+ Frame {
+ msec: 5344
+ hash: "65a564d5a5afbc14c0cdad4d52753507"
+ }
+ Frame {
+ msec: 5360
+ hash: "0c5056d438d2d54938f31ef5f996673a"
+ }
+ Frame {
+ msec: 5376
+ hash: "11c157ad2236fc390ffbdf339366cbc1"
+ }
+ Frame {
+ msec: 5392
+ hash: "6cb341b1f281a97a35c2e41bfd4c4d9d"
+ }
+ Frame {
+ msec: 5408
+ hash: "553a945f7f19f70ddae4ebe88e52a79b"
+ }
+ Frame {
+ msec: 5424
+ hash: "d10b42b4095a2474e66a5a322f72e936"
+ }
+ Frame {
+ msec: 5440
+ hash: "0f943d61e8072d70eddee8aa1ba0de5a"
+ }
+ Frame {
+ msec: 5456
+ hash: "3df18e237b666e78d57857739b759e6d"
+ }
+ Frame {
+ msec: 5472
+ hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e"
+ }
+ Frame {
+ msec: 5488
+ hash: "aaa397714528f41238059e3a88833abc"
+ }
+ Frame {
+ msec: 5504
+ hash: "c94bd69f925c782656afc5f9618180a6"
+ }
+ Frame {
+ msec: 5520
+ hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c"
+ }
+ Frame {
+ msec: 5536
+ hash: "6c440a0b2293811335bdbf2c4f25f47d"
+ }
+ Frame {
+ msec: 5552
+ hash: "bfc7936cdf833d5b720ec9baca740112"
+ }
+ Frame {
+ msec: 5568
+ hash: "375fa305dbae2872dc9b20e59381cc0c"
+ }
+ Frame {
+ msec: 5584
+ hash: "fffd6173aa49e74164dc17a238bcd830"
+ }
+ Frame {
+ msec: 5600
+ hash: "44d9007e00fab161fd393b653255d7f4"
+ }
+ Frame {
+ msec: 5616
+ hash: "f669ee25c58b4fa20a01705d334f0065"
+ }
+ Frame {
+ msec: 5632
+ hash: "2dbb7d57711b67d5d9e1b81f70e22d34"
+ }
+ Frame {
+ msec: 5648
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5664
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5680
+ hash: "3a24b99d048348a21f4e4bd69393de89"
+ }
+ Frame {
+ msec: 5696
+ hash: "35a6fe955a52950bbfa954a453e4008e"
+ }
+ Frame {
+ msec: 5712
+ hash: "896f4ec28c976237b34fb2725a44460e"
+ }
+ Frame {
+ msec: 5728
+ hash: "ed3008ea950ec84c57518e573ea36d15"
+ }
+ Frame {
+ msec: 5744
+ hash: "3447c7be992759f772c1db2033eead99"
+ }
+ Frame {
+ msec: 5760
+ image: "follow.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "6354ebe3aa919a52902b5a5346b473ae"
+ }
+ Frame {
+ msec: 5792
+ hash: "adc55f2fcf312a90b025a75fa80aa079"
+ }
+ Frame {
+ msec: 5808
+ hash: "3ac85cad400d2b8e4f33798f4f6b7b42"
+ }
+ Frame {
+ msec: 5824
+ hash: "1c115efd84ccbe489d24c3c521c4a61c"
+ }
+ Frame {
+ msec: 5840
+ hash: "39518f1bbc0c4aba6ff517bc3dc7c279"
+ }
+ Frame {
+ msec: 5856
+ hash: "7bd28d32996f4de61c415d3217da16d0"
+ }
+ Frame {
+ msec: 5872
+ hash: "f5d06e25d775bf8db07e95625a712733"
+ }
+ Frame {
+ msec: 5888
+ hash: "4820ea6ea3be88af2f86111c547a19d7"
+ }
+ Frame {
+ msec: 5904
+ hash: "fa6e681c368118b7f135a47ae8fc12ff"
+ }
+ Frame {
+ msec: 5920
+ hash: "f6b30e618aeeb837d2b3eca270b0a060"
+ }
+ Frame {
+ msec: 5936
+ hash: "ac8504bde8d3063a8bf02b9d4b69d755"
+ }
+ Frame {
+ msec: 5952
+ hash: "9670537bb77caa8e23fda7bbfa96ca60"
+ }
+ Frame {
+ msec: 5968
+ hash: "8cd292865ce5c1d240e9ddc93881a0ed"
+ }
+ Frame {
+ msec: 5984
+ hash: "de112013e526203d151c46e6cfba9f92"
+ }
+ Frame {
+ msec: 6000
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6016
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6032
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6048
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6064
+ hash: "1f61d857a8c26587fbda5895c603441a"
+ }
+ Frame {
+ msec: 6080
+ hash: "1e0dffdd02e05ade1ae444427d4aa345"
+ }
+ Frame {
+ msec: 6096
+ hash: "9a416ee7a1de9ac45ab2d609233c9520"
+ }
+ Frame {
+ msec: 6112
+ hash: "dfa35bf1cd908011c3214a506bcbdcb8"
+ }
+ Frame {
+ msec: 6128
+ hash: "bd502dc72dce4af3036f7af9ed7cf9e9"
+ }
+ Frame {
+ msec: 6144
+ hash: "8cd5edce652013a2ed4bf95693259538"
+ }
+ Frame {
+ msec: 6160
+ hash: "a38ed1532a40210ad7da4c0d4d1a7195"
+ }
+ Frame {
+ msec: 6176
+ hash: "8ac8a8df937da526bbffb9a3590d89ac"
+ }
+ Frame {
+ msec: 6192
+ hash: "07527cb9a4494e11f4c9f99eb72598b9"
+ }
+ Frame {
+ msec: 6208
+ hash: "655b0327ef0f8711810714ba50f2f8cc"
+ }
+ Frame {
+ msec: 6224
+ hash: "4c1ce8b4eb16c69614e2560c04ad48cf"
+ }
+ Frame {
+ msec: 6240
+ hash: "7a382ae4e6a48826eaa2c83ee7a73fb2"
+ }
+ Frame {
+ msec: 6256
+ hash: "5acd5f250c5b32d9006ed68dfecbfa1c"
+ }
+ Frame {
+ msec: 6272
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6288
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6304
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6320
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6336
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6352
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6368
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6384
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6400
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6416
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6432
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6448
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6464
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6480
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6496
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6512
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6528
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6544
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6560
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6576
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6592
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6608
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6624
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6640
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6656
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6672
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6688
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6704
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6720
+ image: "follow.6.png"
+ }
+ Frame {
+ msec: 6736
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6752
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6768
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6784
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6800
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6816
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6832
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6848
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6864
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6880
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6896
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6912
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6928
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml
index 0097449cab..0097449cab 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
deleted file mode 100644
index baf1d45a21..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
deleted file mode 100644
index 932f63f4d7..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
deleted file mode 100644
index a5cb437fad..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
deleted file mode 100644
index 62e895c730..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml
deleted file mode 100644
index 5da471e04c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml
+++ /dev/null
@@ -1,1135 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "d17c9cd015b065adf7e36ad0d4f6c00c"
- }
- Frame {
- msec: 32
- hash: "e759f652c69a06d01837302cc0369a58"
- }
- Frame {
- msec: 48
- hash: "392855ef490903121fb894858961dfb0"
- }
- Frame {
- msec: 64
- hash: "5ba4248f606a3a35d840cb98eff30b46"
- }
- Frame {
- msec: 80
- hash: "3b97e1ab4054c20d19c1d05f795b71de"
- }
- Frame {
- msec: 96
- hash: "81904d248125cf35249f79da7e94d8d7"
- }
- Frame {
- msec: 112
- hash: "474179152aad4b64904c8b7c63581a89"
- }
- Frame {
- msec: 128
- hash: "583a7906d1dc41d8ce8d0c8f28c9b8c5"
- }
- Frame {
- msec: 144
- hash: "341437083f858e2dca36a8bb39559a1e"
- }
- Frame {
- msec: 160
- hash: "ed75a933c176ed6ac3fa5b2986cbfade"
- }
- Frame {
- msec: 176
- hash: "5494c10d3984a9be607b8b5ee659ebfc"
- }
- Frame {
- msec: 192
- hash: "7af8dfca43036ee69012cbb100d110ad"
- }
- Frame {
- msec: 208
- hash: "356b8185889e560b5a1a2d6436dac834"
- }
- Frame {
- msec: 224
- hash: "f601a66de5dc1a388e515ba4ff14be6e"
- }
- Frame {
- msec: 240
- hash: "4cfb9f3a72070533288b2e50820cbbbd"
- }
- Frame {
- msec: 256
- hash: "ddcb670af0806dadf5897bcd3fd65cd7"
- }
- Frame {
- msec: 272
- hash: "3fedf4aa340d7632359273b1eb71c5a3"
- }
- Frame {
- msec: 288
- hash: "3dab7e1eaccb68b14e30741775db6ff7"
- }
- Frame {
- msec: 304
- hash: "015ab6c080c2ffab8ac763681bf3f95c"
- }
- Frame {
- msec: 320
- hash: "74f438510f0d8f64120cc45bca7f4f5d"
- }
- Frame {
- msec: 336
- hash: "e57666fb224cdbf869e5be4ef3391be9"
- }
- Frame {
- msec: 352
- hash: "ff8b3dddd4d10b111b38801470fcbfd0"
- }
- Frame {
- msec: 368
- hash: "e547ee9f1e509d5db980cb91fce5f6ee"
- }
- Frame {
- msec: 384
- hash: "aaa9fb71bd47ad3a1c753d7ac918e399"
- }
- Frame {
- msec: 400
- hash: "54a335aac86669138730c0735ea99c8b"
- }
- Frame {
- msec: 416
- hash: "ff8f30aaa7afd8abfdd147b830e9d6c4"
- }
- Frame {
- msec: 432
- hash: "07f8fca270953cf815cb0e77534da824"
- }
- Frame {
- msec: 448
- hash: "30799c12182b2c3eb2f28b05d81ed6fc"
- }
- Frame {
- msec: 464
- hash: "6244e3b740218aec56c81c92dc57abcb"
- }
- Frame {
- msec: 480
- hash: "cb10a34e3d234043704e633b49184607"
- }
- Frame {
- msec: 496
- hash: "66de73779b5f86a6a1692eb74be24201"
- }
- Frame {
- msec: 512
- hash: "4c4c0b5e75f0f587ace8002720d78309"
- }
- Frame {
- msec: 528
- hash: "88c774ec272c72457b35b60306c2bc21"
- }
- Frame {
- msec: 544
- hash: "28ce64adc1d35d6bc34174765beda553"
- }
- Frame {
- msec: 560
- hash: "37238c3d6dc0c34bf4e00ba2a82ce3aa"
- }
- Frame {
- msec: 576
- hash: "d14dd306fec80f1a1ff9a85aa51b9a57"
- }
- Frame {
- msec: 592
- hash: "bfa2ec6fa546c75ee85e2ebeb3af8e3c"
- }
- Frame {
- msec: 608
- hash: "d1ec3faab47065f34e9397fd73f9edce"
- }
- Frame {
- msec: 624
- hash: "0b59b5dba365fff38872b520afc84edb"
- }
- Frame {
- msec: 640
- hash: "3c4ae01b5e878b85a2eea403f3ad478a"
- }
- Frame {
- msec: 656
- hash: "329111f7079230e8b3cfda1217e8fcdf"
- }
- Frame {
- msec: 672
- hash: "97761329ac9ba03ec41e3d5b35f245df"
- }
- Frame {
- msec: 688
- hash: "9d26e3a3357530e903ee89f7bf439357"
- }
- Frame {
- msec: 704
- hash: "1cf4c130ea3565547ff74280211f10c9"
- }
- Frame {
- msec: 720
- hash: "d60284711cb557b1dab4d27072c95597"
- }
- Frame {
- msec: 736
- hash: "98195e02405ee26c0a6a3177cebe9eaa"
- }
- Frame {
- msec: 752
- hash: "f0a776c39363e340ebfb7736f368f609"
- }
- Frame {
- msec: 768
- hash: "5a146b4b76f93e3064d5dfa13107b1c3"
- }
- Frame {
- msec: 784
- hash: "7f7fef3a7ff2047f598bfca0fc7d5935"
- }
- Frame {
- msec: 800
- hash: "85a2fd48605f8a77764bf96542db14c3"
- }
- Frame {
- msec: 816
- hash: "89bdc99d16e6605e2106dfa5f53d7c8e"
- }
- Frame {
- msec: 832
- hash: "d03754d56d85508b7c77959d1ab7b34a"
- }
- Frame {
- msec: 848
- hash: "8d330472a376b47d65cec0b8e3df25cb"
- }
- Frame {
- msec: 864
- hash: "401adaeecfd2c0a5598194e9ead4dd5d"
- }
- Frame {
- msec: 880
- hash: "5c600e940e0a01fec15505fba595df3d"
- }
- Frame {
- msec: 896
- hash: "b7940b041fbd3df5e6969130bf97da10"
- }
- Frame {
- msec: 912
- hash: "62314bb115c307eeff4c4c7c91ee74a2"
- }
- Frame {
- msec: 928
- hash: "54745a8a7ed96a4d5e2d4ec2de605882"
- }
- Frame {
- msec: 944
- hash: "a4145b63f59d060ac0e0dc32dd22c815"
- }
- Frame {
- msec: 960
- image: "clock.0.png"
- }
- Frame {
- msec: 976
- hash: "c420b1298329c7eb0d3ec6a90a7eb802"
- }
- Frame {
- msec: 992
- hash: "e63a5384cde6287c3cd8bdb823f35dca"
- }
- Frame {
- msec: 1008
- hash: "af708b5e4a2a706385afd43896eeff16"
- }
- Frame {
- msec: 1024
- hash: "32011e16d4b1c14619820ade020f6416"
- }
- Frame {
- msec: 1040
- hash: "fbf9f8f075b15922f7306e469075d3cf"
- }
- Frame {
- msec: 1056
- hash: "bf0fab116eae6e7fb5b3209220a3a52a"
- }
- Frame {
- msec: 1072
- hash: "7a21aee4bcb99feb12a2a2c6bb3fd893"
- }
- Frame {
- msec: 1088
- hash: "d721462af9c94e13f12374b2590dad1e"
- }
- Frame {
- msec: 1104
- hash: "70385b585c2cbf1b2d64f1b9ebb5fb56"
- }
- Frame {
- msec: 1120
- hash: "fc7adc3dd2f42bfe6cd74c2ee1ea9aa8"
- }
- Frame {
- msec: 1136
- hash: "232884da74c9843d1349e82a7300cc19"
- }
- Frame {
- msec: 1152
- hash: "c6790d9c8cbea7bf97cbedf443da330c"
- }
- Frame {
- msec: 1168
- hash: "1847875f98555ef46a103c107bd5bc37"
- }
- Frame {
- msec: 1184
- hash: "d7b35992b44a0220bd83a00b7f75dcdd"
- }
- Frame {
- msec: 1200
- hash: "fc9e1db602c34863088d82ed8f601364"
- }
- Frame {
- msec: 1216
- hash: "404e2d071f8a6409ba6c6bfd8450693c"
- }
- Frame {
- msec: 1232
- hash: "dc2b6be9bc4c32460797e94ec617406c"
- }
- Frame {
- msec: 1248
- hash: "5077b6afd808f7a2c319e66f0aef3002"
- }
- Frame {
- msec: 1264
- hash: "07f07a04ec7c864196faeb44eff65b4c"
- }
- Frame {
- msec: 1280
- hash: "5d9089a68ef0b8b78b68c33d3082b597"
- }
- Frame {
- msec: 1296
- hash: "d955c9f66eaf123351a19947240e8847"
- }
- Frame {
- msec: 1312
- hash: "f1821cbcb3883a041f22a114f7158532"
- }
- Frame {
- msec: 1328
- hash: "77f17db09c5a7125c42359c304f274de"
- }
- Frame {
- msec: 1344
- hash: "bc38a4c859f596f6cf3c399d3a04b1cd"
- }
- Frame {
- msec: 1360
- hash: "982c43a4a1c9fae8bf3980b5885cee2f"
- }
- Frame {
- msec: 1376
- hash: "c15bb9b7dd77d505ee9918eb36b75c31"
- }
- Frame {
- msec: 1392
- hash: "bda534fd941a6f8289bfbec9b8dde717"
- }
- Frame {
- msec: 1408
- hash: "7ad5c54b481525ace42ae8926a5c0556"
- }
- Frame {
- msec: 1424
- hash: "2399778158f63481eb8514245277b917"
- }
- Frame {
- msec: 1440
- hash: "6c200d090b34a0152c7eb233c97c3886"
- }
- Frame {
- msec: 1456
- hash: "7ba4500e81df31e3e2c5d165bacf771a"
- }
- Frame {
- msec: 1472
- hash: "c7e13f3d9bdfe35eb905c1d4ed6b73ac"
- }
- Frame {
- msec: 1488
- hash: "808b72766f5dce71fc983ffa01945665"
- }
- Frame {
- msec: 1504
- hash: "899ac513755476db1e1304317524a755"
- }
- Frame {
- msec: 1520
- hash: "27190dce033171966981672e52f07107"
- }
- Frame {
- msec: 1536
- hash: "5d9ef583b6b3cb5257cb044cf376eff2"
- }
- Frame {
- msec: 1552
- hash: "77b648fe26a942b246eec0fa018ad86f"
- }
- Frame {
- msec: 1568
- hash: "744a61493816338113ba4ba7c05f76de"
- }
- Frame {
- msec: 1584
- hash: "2eb0da64d5937c1a38754fd55ca684d0"
- }
- Frame {
- msec: 1600
- hash: "6f799c2c0c0e1ed419af03f8bbb9fae1"
- }
- Frame {
- msec: 1616
- hash: "5b84344f31d5e4d15be6b53ad3bf9c84"
- }
- Frame {
- msec: 1632
- hash: "997b5967e3e3a35d02f10e1eae417dbf"
- }
- Frame {
- msec: 1648
- hash: "c522369c836e8d08c56e2e332dd005ac"
- }
- Frame {
- msec: 1664
- hash: "22f4072da05d261cfcca232ea54d2cb4"
- }
- Frame {
- msec: 1680
- hash: "7081a90c33785306800b7a57a4a9a75c"
- }
- Frame {
- msec: 1696
- hash: "32a8bea14c92ce61ede89182765f0759"
- }
- Frame {
- msec: 1712
- hash: "4bafe476d5301974c616311073763ab4"
- }
- Frame {
- msec: 1728
- hash: "291188ca795d455ae293437c2fb2303d"
- }
- Frame {
- msec: 1744
- hash: "99d2658f863c82dd71fde0f0b93b4d62"
- }
- Frame {
- msec: 1760
- hash: "8a7183e11fde2846d5435847ad9add45"
- }
- Frame {
- msec: 1776
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1792
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1808
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1824
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1840
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1856
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1872
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1888
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1904
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1920
- image: "clock.1.png"
- }
- Frame {
- msec: 1936
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1952
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1968
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1984
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2000
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2016
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2032
- hash: "150f511972394d8485979a6d9badcee5"
- }
- Frame {
- msec: 2048
- hash: "50b420f72479ec613fd443b5faa3cb94"
- }
- Frame {
- msec: 2064
- hash: "a51cbeea7ad5407b2784a3a3c8ca1ecf"
- }
- Frame {
- msec: 2080
- hash: "0f658f4c91f890cd252d0f9d9bbe064d"
- }
- Frame {
- msec: 2096
- hash: "c814c99815a91547eff01dc899c275f2"
- }
- Frame {
- msec: 2112
- hash: "f9dac59029008e52efe4225cf919f013"
- }
- Frame {
- msec: 2128
- hash: "b87bdcf09b425f2b2d6aed65f96ae8a3"
- }
- Frame {
- msec: 2144
- hash: "f353bf64e664166a542aa027dc625529"
- }
- Frame {
- msec: 2160
- hash: "12492b26c2f1c018e034c0fa936fa7b5"
- }
- Frame {
- msec: 2176
- hash: "33f04d25bced580f15590f12ddafef62"
- }
- Frame {
- msec: 2192
- hash: "cdd8ee656e4fec3ac6e72b6f7626de3b"
- }
- Frame {
- msec: 2208
- hash: "22a94ea46fb9ee78830eab79e4adc5c5"
- }
- Frame {
- msec: 2224
- hash: "64a10c9d4738c004c7f08f95b48a7a4d"
- }
- Frame {
- msec: 2240
- hash: "ff3300fb49a735e0a958362aead1905f"
- }
- Frame {
- msec: 2256
- hash: "8289dfdad12a8c13513175e5aad6a2d9"
- }
- Frame {
- msec: 2272
- hash: "49e5cbb94f7d8bc853ca3c9366d737c9"
- }
- Frame {
- msec: 2288
- hash: "76d2d8df4ad0359bb8ae102b225b3a68"
- }
- Frame {
- msec: 2304
- hash: "98d925b3306aa7dd1b1fb9e066cd8a02"
- }
- Frame {
- msec: 2320
- hash: "3911b53eb0346af1773ad991232e61ee"
- }
- Frame {
- msec: 2336
- hash: "8991c10234f9f286ebab39d72729525d"
- }
- Frame {
- msec: 2352
- hash: "ca2c8c6f23b30957a5cc20d9750a3ffe"
- }
- Frame {
- msec: 2368
- hash: "80abe9b146b31dbedf1fe2357d922dda"
- }
- Frame {
- msec: 2384
- hash: "0e34091d6bceab00bdabcec78e99e265"
- }
- Frame {
- msec: 2400
- hash: "ba04053c25e53b3dc790feac9a33e221"
- }
- Frame {
- msec: 2416
- hash: "cb6f7f2cce4f68ef1d35f765e00bbf7b"
- }
- Frame {
- msec: 2432
- hash: "1e63fb94f5fbf3b600ec9298cbb97c8a"
- }
- Frame {
- msec: 2448
- hash: "8991c10234f9f286ebab39d72729525d"
- }
- Frame {
- msec: 2464
- hash: "00531d4a5fe98bbb487ad835414e7d07"
- }
- Frame {
- msec: 2480
- hash: "7af9f861cb57c937c87b24eee9fbb558"
- }
- Frame {
- msec: 2496
- hash: "7ecd1a4a75753e70ad5937e5bc897e03"
- }
- Frame {
- msec: 2512
- hash: "557766fe964033f6a488574af7306cac"
- }
- Frame {
- msec: 2528
- hash: "bd0f7164dd0a84ce1a1b2a6acbc2157b"
- }
- Frame {
- msec: 2544
- hash: "d24ef664cf13519b99d6193bf98fcfd1"
- }
- Frame {
- msec: 2560
- hash: "6c3626248bbb41cab85ec2a908b7874b"
- }
- Frame {
- msec: 2576
- hash: "0f9bea8d474690164a09dfd3b13ff80b"
- }
- Frame {
- msec: 2592
- hash: "e5197674c91de893a970614e650547e5"
- }
- Frame {
- msec: 2608
- hash: "ce6861e9a7e75b809df026f078c8516b"
- }
- Frame {
- msec: 2624
- hash: "eb0539e30fd53fb905d7b28ff0bc6cfd"
- }
- Frame {
- msec: 2640
- hash: "45f70dda0d647119175457fb4d451e85"
- }
- Frame {
- msec: 2656
- hash: "ca6b75fa4ee612bf6bb1776ef4115b16"
- }
- Frame {
- msec: 2672
- hash: "c7d6bd687be6d5476300539411b97fc5"
- }
- Frame {
- msec: 2688
- hash: "27da9137b936d813d3c79a873053ed38"
- }
- Frame {
- msec: 2704
- hash: "4389a5758bf9df9553300c074aa7bb36"
- }
- Frame {
- msec: 2720
- hash: "30476b70a29716b359a046f99b6387e5"
- }
- Frame {
- msec: 2736
- hash: "b91c6f1e57d718e95ab05d1f386aedb9"
- }
- Frame {
- msec: 2752
- hash: "578b022173dcac39d227ffeb043e53d0"
- }
- Frame {
- msec: 2768
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2784
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2800
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2816
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2832
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2848
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2864
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2880
- image: "clock.2.png"
- }
- Frame {
- msec: 2896
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2912
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2928
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2944
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2960
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2976
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2992
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3008
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3024
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3040
- hash: "294d542f880356b4cbb171170c28dcd7"
- }
- Frame {
- msec: 3056
- hash: "946b5937974e28ffd996ce132c8fad15"
- }
- Frame {
- msec: 3072
- hash: "bb61994ff1dc36d3933084b874073832"
- }
- Frame {
- msec: 3088
- hash: "ec337c7ae77deeb41f38adb1851720e5"
- }
- Frame {
- msec: 3104
- hash: "7691c6c048b78e1551b46a37b6e95b16"
- }
- Frame {
- msec: 3120
- hash: "b3116620d319ae4b681f4ca76c068b32"
- }
- Frame {
- msec: 3136
- hash: "ed5a27e5be3dbde3867715f877da41db"
- }
- Frame {
- msec: 3152
- hash: "8dcc220cc652f57aa8ac33364edc96a3"
- }
- Frame {
- msec: 3168
- hash: "a7832d86283e27ee1523c4808b42fc43"
- }
- Frame {
- msec: 3184
- hash: "fc90d18b072638f2df1bacee12fe1743"
- }
- Frame {
- msec: 3200
- hash: "cdd7b5598155eba57783ebe1872db818"
- }
- Frame {
- msec: 3216
- hash: "b45e32d12bbc2e56f4a3e7e473528d3e"
- }
- Frame {
- msec: 3232
- hash: "5762a693ea6287e8987c604ef9fac361"
- }
- Frame {
- msec: 3248
- hash: "2e46a8df5ec0c7070a374186a313f2c6"
- }
- Frame {
- msec: 3264
- hash: "e612134417f3f901661b658801a72848"
- }
- Frame {
- msec: 3280
- hash: "5de468fac915894ef34f3fee1c637e01"
- }
- Frame {
- msec: 3296
- hash: "e29c8713573e49fc98387311d80c7510"
- }
- Frame {
- msec: 3312
- hash: "6fce67b704f613e6fd9181ccb9ee237f"
- }
- Frame {
- msec: 3328
- hash: "bf499add3d91d751ffa1cce28bece380"
- }
- Frame {
- msec: 3344
- hash: "7d50cad7b18a4a37be6aac7796014195"
- }
- Frame {
- msec: 3360
- hash: "6695208c8d39373ff0846c821c819cb2"
- }
- Frame {
- msec: 3376
- hash: "0140ec2286b0fb94340d2dd6d418f539"
- }
- Frame {
- msec: 3392
- hash: "9f92a99737aa6a7da48af7e7a4ed7a6a"
- }
- Frame {
- msec: 3408
- hash: "8e593e8192d17d07c2265d6fa840f281"
- }
- Frame {
- msec: 3424
- hash: "ea70e72eb12d5595d9bf0d9cc77efd4d"
- }
- Frame {
- msec: 3440
- hash: "faeeb9e6e6a260a266ac8965f204b542"
- }
- Frame {
- msec: 3456
- hash: "d50987082d056997a8e7fe5940cb7968"
- }
- Frame {
- msec: 3472
- hash: "44089138e01bfee916306ae66ba43e9f"
- }
- Frame {
- msec: 3488
- hash: "60256356ca6fe8bd323ef36bc149a3ea"
- }
- Frame {
- msec: 3504
- hash: "6caae71d6bd897d755aeb22f10862171"
- }
- Frame {
- msec: 3520
- hash: "8ba18bf5df010718f83d6bb25aa1858b"
- }
- Frame {
- msec: 3536
- hash: "a903996370fb7efcaf295f00b9b4c4b6"
- }
- Frame {
- msec: 3552
- hash: "cc0b736c8b4d46d3d809dcfe82068c88"
- }
- Frame {
- msec: 3568
- hash: "037b2f65d162d44c39706d322cd6b6e5"
- }
- Frame {
- msec: 3584
- hash: "92c2b4f346329ffbcae07db74332ebbe"
- }
- Frame {
- msec: 3600
- hash: "3f9b2b5aade31333568a7cccf89e3176"
- }
- Frame {
- msec: 3616
- hash: "b40f9cce4cddf9fa5245276a105a3e0d"
- }
- Frame {
- msec: 3632
- hash: "74eb3e8a282693bd6bc92f381e380d61"
- }
- Frame {
- msec: 3648
- hash: "43d85dd9e0de49c639db0d91047c88bb"
- }
- Frame {
- msec: 3664
- hash: "563a07f4aa618252933e0356cc300bba"
- }
- Frame {
- msec: 3680
- hash: "73d1e5745154996fd245a91a831d5462"
- }
- Frame {
- msec: 3696
- hash: "7b2785b605c64135ea6914ad8388eb8f"
- }
- Frame {
- msec: 3712
- hash: "b2d989af972715a86ca374753d32f757"
- }
- Frame {
- msec: 3728
- hash: "96311aac52bc9167a7350af29741f3dc"
- }
- Frame {
- msec: 3744
- hash: "56e4b98816896f7353dddeac090f70d1"
- }
- Frame {
- msec: 3760
- hash: "7bd8ac36107e9e5db39e1aa37f2c5ca8"
- }
- Frame {
- msec: 3776
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3792
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3808
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3824
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3840
- image: "clock.3.png"
- }
- Frame {
- msec: 3856
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3872
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3888
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3904
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3920
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3936
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3952
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3968
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3984
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4000
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4016
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4032
- hash: "df3a1204f6243673d567724d27d07a9e"
- }
- Frame {
- msec: 4048
- hash: "7d0d3e92cb61d868d062bdf173924a4d"
- }
- Frame {
- msec: 4064
- hash: "29948b5d7807a6ed0076a9637ec3eb79"
- }
- Frame {
- msec: 4080
- hash: "2986b5e0a4a49bbe9f4ffada30433a48"
- }
- Frame {
- msec: 4096
- hash: "0d9e3813141a1ee15474380902d87815"
- }
- Frame {
- msec: 4112
- hash: "c5197a932430d498b7344c1f37454320"
- }
- Frame {
- msec: 4128
- hash: "c8ef8acf314486c157e74bdd2695ddb2"
- }
- Frame {
- msec: 4144
- hash: "adeb73de4b967912a9f2b04ba2b6fe4c"
- }
- Frame {
- msec: 4160
- hash: "da5fddd1e4ab8c096af0acc62114d69f"
- }
- Frame {
- msec: 4176
- hash: "5ef0784315603da196e66b4628524c5c"
- }
- Frame {
- msec: 4192
- hash: "1ff2a89c510953d71198056f5ac5b1a6"
- }
- Frame {
- msec: 4208
- hash: "f63d409e134e59b875099ab11b469d21"
- }
- Frame {
- msec: 4224
- hash: "e353748e0b0c49a217d6e2d06a9bfeb6"
- }
- Frame {
- msec: 4240
- hash: "a9d7470902a232d815bd2580e24fdc22"
- }
- Frame {
- msec: 4256
- hash: "eecbad718aa4eaf5bef7cd921b2ce9f9"
- }
- Frame {
- msec: 4272
- hash: "7a51cadbfb93eb4a66acc9cb150002ed"
- }
- Frame {
- msec: 4288
- hash: "2aa511fb96a51a50e3a45b784e349c15"
- }
- Frame {
- msec: 4304
- hash: "a1ad19593dc6b9f4c027f388e802dcbe"
- }
- Frame {
- msec: 4320
- hash: "ef6787f03bc1e33ea5f2a54aa1ba3a41"
- }
- Frame {
- msec: 4336
- hash: "3386337bbc1ab82374d9965b7b0ffdef"
- }
- Frame {
- msec: 4352
- hash: "c76afb4f412b4d5dd8eca74db6c54fb8"
- }
- Frame {
- msec: 4368
- hash: "f91ac74ec153152670d43f42b1e2a2db"
- }
- Frame {
- msec: 4384
- hash: "58f22723fa0c67379972238e0e7ed5e2"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 4400
- hash: "a4730b0a8d6e0dd9e7eb58b51fb631ec"
- }
- Frame {
- msec: 4416
- hash: "193bf624efefcad70af29f41eeab128e"
- }
- Frame {
- msec: 4432
- hash: "d692f262facf26c2be2b0f747903d476"
- }
- Frame {
- msec: 4448
- hash: "e59e43b5d4abebea0a55b1d072d148bc"
- }
- Frame {
- msec: 4464
- hash: "134ff829e91161146b5f048a50c7eef7"
- }
- Frame {
- msec: 4480
- hash: "07a80e45e70cb13f45e3858404c5f8dd"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png
deleted file mode 100644
index 3f42e75259..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
deleted file mode 100644
index d661df6745..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
deleted file mode 100644
index e8c96e174c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
deleted file mode 100644
index 35bfa4382c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
deleted file mode 100644
index 74141cf876..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
deleted file mode 100644
index 9544054841..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
deleted file mode 100644
index 4b02c797cf..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
deleted file mode 100644
index 8ea83459d1..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
deleted file mode 100644
index 76a73e8ae5..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
deleted file mode 100644
index 88249403ee..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
deleted file mode 100644
index f954cc58ee..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml
deleted file mode 100644
index e7e5b3c48b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml
+++ /dev/null
@@ -1,1763 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "3561ebf22b19c7bd5a70947d36b50b63"
- }
- Frame {
- msec: 32
- hash: "3561ebf22b19c7bd5a70947d36b50b63"
- }
- Frame {
- msec: 48
- hash: "bd0006fc34f58ec1ea6aa4c4acbb0070"
- }
- Frame {
- msec: 64
- hash: "c25f9fb6aea93413bfef5eb176c02476"
- }
- Frame {
- msec: 80
- hash: "4ce0eb12fb41960e60e208dffb09ed3a"
- }
- Frame {
- msec: 96
- hash: "75b3375881969710b6eb21f2a93c36cc"
- }
- Frame {
- msec: 112
- hash: "91e9b13e332959e41a29c0b225675a05"
- }
- Frame {
- msec: 128
- hash: "8e04a31a953b42903dffe86b37b3f59f"
- }
- Frame {
- msec: 144
- hash: "837e0e646a2853d3fde571f9dd966fc7"
- }
- Frame {
- msec: 160
- hash: "7367e25ae1e3a3731d83da76d5795f8c"
- }
- Frame {
- msec: 176
- hash: "3621846fb85b286a886a02de442e76c4"
- }
- Frame {
- msec: 192
- hash: "ed20a4c3476b8bb5545d5343747c39c8"
- }
- Frame {
- msec: 208
- hash: "1fc73efb410e9beb3f791cbff8e814b3"
- }
- Frame {
- msec: 224
- hash: "199c99a4e3aa14fbc8c8a0d8baacf998"
- }
- Frame {
- msec: 240
- hash: "513ce5a2f57e40002a26b7722c8a10db"
- }
- Frame {
- msec: 256
- hash: "b80b51cd4e75bdc799bbe79e66b7d02b"
- }
- Frame {
- msec: 272
- hash: "e1531b6c5b3ac872563fdfaf49d32a27"
- }
- Frame {
- msec: 288
- hash: "6d7cfd78ebd56ae6adfc97aad5d11b13"
- }
- Frame {
- msec: 304
- hash: "4252ebb2fba165e39f025f631e0a676a"
- }
- Frame {
- msec: 320
- hash: "04d6ae51415b083bbb0eabd1b0304ca4"
- }
- Frame {
- msec: 336
- hash: "750df1f1626c8b84dd72a35bf081fe00"
- }
- Frame {
- msec: 352
- hash: "003d7a846e09ba23ee8a7ae6d473be9f"
- }
- Frame {
- msec: 368
- hash: "5cf3abdbb9a5b8cba6a8afe8abb60ced"
- }
- Frame {
- msec: 384
- hash: "0669f86043a0c84d0b4672cc5c1136b4"
- }
- Frame {
- msec: 400
- hash: "94f59435fe4f3ca06699c996b537ae8c"
- }
- Frame {
- msec: 416
- hash: "211c8ec42a6d6949253af71c6eeffa53"
- }
- Frame {
- msec: 432
- hash: "6de6c6d1b4a37a864b96c0293be8ebf5"
- }
- Frame {
- msec: 448
- hash: "468d67d069eaac1968a6ad52e56f3ab5"
- }
- Frame {
- msec: 464
- hash: "18d8de7a5c73d8c8188e6ae00a701820"
- }
- Frame {
- msec: 480
- hash: "4387c724ed49bfbbca238bf57a704a14"
- }
- Frame {
- msec: 496
- hash: "f317c59f65c7266765333048d8545748"
- }
- Frame {
- msec: 512
- hash: "6575d40c2f27f110443a2ede8a873c77"
- }
- Frame {
- msec: 528
- hash: "3e65cb675124dbd9db5116fa7584e223"
- }
- Frame {
- msec: 544
- hash: "df80612a74b33eca81db6f43aa33e411"
- }
- Frame {
- msec: 560
- hash: "6b2bc20397f3fb452ea14d81e9efd61d"
- }
- Frame {
- msec: 576
- hash: "e5b8a2476487f6cd9fd37e3b3f54f88d"
- }
- Frame {
- msec: 592
- hash: "e93f8156e2dc278a5e20d9e28b48d9fa"
- }
- Frame {
- msec: 608
- hash: "e524d5117888b0b68781ffaf1a3e7303"
- }
- Frame {
- msec: 624
- hash: "f3b777409534d87c59e60499fd6a3808"
- }
- Frame {
- msec: 640
- hash: "09d1fa8f1306eb6f51db97d04c2d7ad3"
- }
- Frame {
- msec: 656
- hash: "acebdcebe6880c8b3b94ad7606181b72"
- }
- Frame {
- msec: 672
- hash: "347945a94002cd44d7a2df47f82940a1"
- }
- Frame {
- msec: 688
- hash: "c716014d63ff2a22cab04dadc18b10c1"
- }
- Frame {
- msec: 704
- hash: "ced019e3f8b5ca079582d01f1f585a8e"
- }
- Frame {
- msec: 720
- hash: "d61d31de835ea8d1ffa56fd04c873ac1"
- }
- Frame {
- msec: 736
- hash: "2eec542c5af4c6eecc153cc0fcae7dd3"
- }
- Frame {
- msec: 752
- hash: "c13b9443e1c000a2877e4586428da308"
- }
- Frame {
- msec: 768
- hash: "c5c2e30b3dc3298afc201f6045e79e59"
- }
- Frame {
- msec: 784
- hash: "308f2ca66133d37c2fcb222e68698d25"
- }
- Frame {
- msec: 800
- hash: "bf820215986a35b56daf07c164fd2a79"
- }
- Frame {
- msec: 816
- hash: "a0bb21475100fb25b767d055d70b062f"
- }
- Frame {
- msec: 832
- hash: "bfb0927bcb23689820b0f96ea56426fc"
- }
- Frame {
- msec: 848
- hash: "8f294742ca9dd6ab10689f1f4ec2ed96"
- }
- Frame {
- msec: 864
- hash: "f60c232307570fb4ec6e74f18e243553"
- }
- Frame {
- msec: 880
- hash: "7411970ab72d8b2dbf48ee8d4e6503b3"
- }
- Frame {
- msec: 896
- hash: "d4d766038daeae2fbec290204ca3983b"
- }
- Frame {
- msec: 912
- hash: "f85525c3fd784ee7f9a3d9465e37d6f3"
- }
- Frame {
- msec: 928
- hash: "c5e63da86ddbd2a54c7cd3d03e5428a2"
- }
- Frame {
- msec: 944
- hash: "369a7405b1717ddf06c99ab1dd6d4cb0"
- }
- Frame {
- msec: 960
- image: "follow.0.png"
- }
- Frame {
- msec: 976
- hash: "18d5c4378f9daf63bf4cb76d76374548"
- }
- Frame {
- msec: 992
- hash: "f36e649db2e1ec9fbe15e7711ea13ab5"
- }
- Frame {
- msec: 1008
- hash: "f68515607dca1bda14b6afa6e05ebb6b"
- }
- Frame {
- msec: 1024
- hash: "bc5cc4c9050a5bd4c64debd12643fd73"
- }
- Frame {
- msec: 1040
- hash: "f053a18bca4d8c47a0f181fad8118e9a"
- }
- Frame {
- msec: 1056
- hash: "9a2218f51faed4fa891c507fe6828d2c"
- }
- Frame {
- msec: 1072
- hash: "ce671ff4dd1f343243f2fcc263d137f4"
- }
- Frame {
- msec: 1088
- hash: "8624f8d814094ad25a1482a11f424990"
- }
- Frame {
- msec: 1104
- hash: "324dad940b3adb54491d6cdd4e7d8aa7"
- }
- Frame {
- msec: 1120
- hash: "0cd7c53ec5b591053de6769967b8bad5"
- }
- Frame {
- msec: 1136
- hash: "e9e8f5e9c2dc179498943d0b5912af09"
- }
- Frame {
- msec: 1152
- hash: "5f1552ccd61f09335a88658ee1c4e97e"
- }
- Frame {
- msec: 1168
- hash: "866e01eed7e26dd1bd9af8aaddf4d7c0"
- }
- Frame {
- msec: 1184
- hash: "2efba3c33c4c7b6d89ce7efca2dc516a"
- }
- Frame {
- msec: 1200
- hash: "2de9d8a2ad64d2491b3444712be032dc"
- }
- Frame {
- msec: 1216
- hash: "84206972322eae033d05f71b178180c9"
- }
- Frame {
- msec: 1232
- hash: "8571d11da1a893edcbe5add1a9399d7a"
- }
- Frame {
- msec: 1248
- hash: "c0d65ecefa77ee7cb1c08a560e3ad572"
- }
- Frame {
- msec: 1264
- hash: "0f8a8523969713771a6c7984069b15e4"
- }
- Frame {
- msec: 1280
- hash: "2e80e4b54538b7b586f4a3be55eb6da3"
- }
- Frame {
- msec: 1296
- hash: "ae028381f311a60946ecd26eab95bb42"
- }
- Frame {
- msec: 1312
- hash: "ac5902d58bc116a002c093f55cf20278"
- }
- Frame {
- msec: 1328
- hash: "242f8617718048cfab9950b812eb1b26"
- }
- Frame {
- msec: 1344
- hash: "b642f2f0d3161f80a702b09a910c589b"
- }
- Frame {
- msec: 1360
- hash: "d1508034ecd908120c6f58cf08360c3c"
- }
- Frame {
- msec: 1376
- hash: "ad10a5ea8598616f2ffa633eecfbd43a"
- }
- Frame {
- msec: 1392
- hash: "1d2c3cfaac1cca868f31872bf4248de8"
- }
- Frame {
- msec: 1408
- hash: "28da57a6aec84318ff6aa029ac17f1dd"
- }
- Frame {
- msec: 1424
- hash: "6f9bf89843d5e40f6c282e69337e7d25"
- }
- Frame {
- msec: 1440
- hash: "1c5733ad9620805127372fb76f5b0228"
- }
- Frame {
- msec: 1456
- hash: "16f21041e9e475a37c478cf38cdc353b"
- }
- Frame {
- msec: 1472
- hash: "b39ea2e8a1991b3ea5be818a284ff69f"
- }
- Frame {
- msec: 1488
- hash: "4f5bdc935080707525a2b74936b41b2e"
- }
- Frame {
- msec: 1504
- hash: "a39426dc761df1d2ba398aa17d220ded"
- }
- Frame {
- msec: 1520
- hash: "2e965042273b377958b04190250d273e"
- }
- Frame {
- msec: 1536
- hash: "51f021c1d50291b425c98dee4894b330"
- }
- Frame {
- msec: 1552
- hash: "88fea2e6d6898084acb5897833adb182"
- }
- Frame {
- msec: 1568
- hash: "12f55e64c8ec9825bf6c5cfd5d50d2bb"
- }
- Frame {
- msec: 1584
- hash: "365b358eb7a678e1076774c36a82f452"
- }
- Frame {
- msec: 1600
- hash: "a992b326739bff87bf042c711a7fa65c"
- }
- Frame {
- msec: 1616
- hash: "083aa3c766a3b50492e51aab3ee128d0"
- }
- Frame {
- msec: 1632
- hash: "16a2db3b3a773e2612bc57f7a7d7fbbe"
- }
- Frame {
- msec: 1648
- hash: "32a28101a53d308b107d26a30ae7cdd9"
- }
- Frame {
- msec: 1664
- hash: "da3908e584542ff2f73cb22369f49c1c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 195; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1680
- hash: "8ad535bb0c5decd8c970aa36286d57e7"
- }
- Frame {
- msec: 1696
- hash: "5bfbcab7607622486c350a9117ab0884"
- }
- Frame {
- msec: 1712
- hash: "17e13c8bfd81081f6400d3e71daecb4c"
- }
- Frame {
- msec: 1728
- hash: "9411a66b6c3ef9a98bc62dea282d6a51"
- }
- Frame {
- msec: 1744
- hash: "423cded80165ee13f903460e5396526b"
- }
- Frame {
- msec: 1760
- hash: "709cc55316e6702c1359b66c06676603"
- }
- Frame {
- msec: 1776
- hash: "27232931c000a2edb5c3d480a6692e6b"
- }
- Frame {
- msec: 1792
- hash: "22311fd0903b53f50df824ba345ca350"
- }
- Frame {
- msec: 1808
- hash: "9bb066e60e7e5b3eaa0a221b8ba1a431"
- }
- Frame {
- msec: 1824
- hash: "517000255d372d384773dff8c80f5a65"
- }
- Frame {
- msec: 1840
- hash: "329dbd77ae53ea8e4beb669a976033a8"
- }
- Frame {
- msec: 1856
- hash: "2acd5d3e878e1db5413270c1a50ffc83"
- }
- Frame {
- msec: 1872
- hash: "8eb5946ac5d53dfc2813d1f1c6a2b6c5"
- }
- Frame {
- msec: 1888
- hash: "375299e5b1067e02d5de3238a37659f2"
- }
- Frame {
- msec: 1904
- hash: "f385c90e585db5555e873996165f55af"
- }
- Frame {
- msec: 1920
- image: "follow.1.png"
- }
- Frame {
- msec: 1936
- hash: "6c13bb69b6483c72463437e102a9dabb"
- }
- Frame {
- msec: 1952
- hash: "c1b5d10688681c3b2363bb6d4173deca"
- }
- Frame {
- msec: 1968
- hash: "b434649e4c9b2c184d2f9036f9d041bf"
- }
- Frame {
- msec: 1984
- hash: "ca32e9f9080983803bb37b7231ed1c84"
- }
- Frame {
- msec: 2000
- hash: "976eab47b2d6445fdd8293f2c73564c1"
- }
- Frame {
- msec: 2016
- hash: "e63daea8f3bc79cea7a6b8dcfd31a094"
- }
- Frame {
- msec: 2032
- hash: "626cbe5e6b79f2fd0ef57c943666b571"
- }
- Frame {
- msec: 2048
- hash: "4e07255ce12a21966eec33c0cc623d96"
- }
- Frame {
- msec: 2064
- hash: "94045005de77725c63c62575a6b06852"
- }
- Frame {
- msec: 2080
- hash: "3b6dcf783c5e9fe99ce3d9ca02bceff6"
- }
- Frame {
- msec: 2096
- hash: "e901ed7e831e2d012b97b98b3ab6fa1b"
- }
- Frame {
- msec: 2112
- hash: "74ef03f72d032daaff13114fde02b824"
- }
- Frame {
- msec: 2128
- hash: "9eb334d7dda3801c1fe292844040e014"
- }
- Frame {
- msec: 2144
- hash: "82bf8fb5e3a9bf167f3f00b1f6ab3c06"
- }
- Frame {
- msec: 2160
- hash: "df3a2bc7758d00d595347e62c7e53c4a"
- }
- Frame {
- msec: 2176
- hash: "e77ac04a6ad9f97226b45d202a0d5196"
- }
- Frame {
- msec: 2192
- hash: "37411333a28ea840c59cabd96fd1deba"
- }
- Frame {
- msec: 2208
- hash: "8d1eb90ffd080bcd078b69c9635108d1"
- }
- Frame {
- msec: 2224
- hash: "68ee5d58b2edeb6b5a64a714115e4499"
- }
- Frame {
- msec: 2240
- hash: "003ddf0a5dd3d4bb947a34bdd22ad8c1"
- }
- Frame {
- msec: 2256
- hash: "bf3c89d0a09ed2159a78f10124f5d7bb"
- }
- Frame {
- msec: 2272
- hash: "6ec994f41d4540db988846416c2f7b4f"
- }
- Frame {
- msec: 2288
- hash: "9ca7e3ca6ea26e8259d34a8c0f80f7a9"
- }
- Frame {
- msec: 2304
- hash: "edf5cea581d46400914610213c8503ea"
- }
- Frame {
- msec: 2320
- hash: "9b96aac3f98cd37a361788be8b81e308"
- }
- Frame {
- msec: 2336
- hash: "5d304a8398512ebc85bebf973ed6a4f4"
- }
- Frame {
- msec: 2352
- hash: "cf2a27a395f23f7976a48d69f5e8e120"
- }
- Frame {
- msec: 2368
- hash: "458323a37208ea14972d8f84cebc66a5"
- }
- Frame {
- msec: 2384
- hash: "da9c8e4d168b9cd32d5ec3f5857d2942"
- }
- Frame {
- msec: 2400
- hash: "5d6663be8e02b0a7a4701595c9c26663"
- }
- Frame {
- msec: 2416
- hash: "4190712a39ca07f810a6d84e15488393"
- }
- Frame {
- msec: 2432
- hash: "26b22be0a1c2fecec1e25a6513b19484"
- }
- Frame {
- msec: 2448
- hash: "3e623bc2b9e8cec49671571291cf6afb"
- }
- Frame {
- msec: 2464
- hash: "3e623bc2b9e8cec49671571291cf6afb"
- }
- Frame {
- msec: 2480
- hash: "2cb2968d16323af4659b3197d391bb91"
- }
- Frame {
- msec: 2496
- hash: "5376b1285647950428b29e75f2e27c4f"
- }
- Frame {
- msec: 2512
- hash: "baaacc3940c8d36f715d90e046346bed"
- }
- Frame {
- msec: 2528
- hash: "277719afea4c119f17c34c59ef0b7984"
- }
- Frame {
- msec: 2544
- hash: "00a172ff8afd1e8444fb84249a3af0fd"
- }
- Frame {
- msec: 2560
- hash: "bf8a0f939a5602a0a9f5a3bc7c8d0d86"
- }
- Frame {
- msec: 2576
- hash: "b22860751790b3113b2cb299c9f628b8"
- }
- Frame {
- msec: 2592
- hash: "fdda1e520457974443720bd44f21d929"
- }
- Frame {
- msec: 2608
- hash: "538af31f9463cd07163d54adc2721345"
- }
- Frame {
- msec: 2624
- hash: "2ca50398746c8fb1c936fd412c7556b4"
- }
- Frame {
- msec: 2640
- hash: "63cd898c3e22a29846489e5c47f455a1"
- }
- Frame {
- msec: 2656
- hash: "1e69cc765c3f2c27c2b6e7f3e47f515a"
- }
- Frame {
- msec: 2672
- hash: "9d7ce0df7bee9a387917ef228fd50652"
- }
- Frame {
- msec: 2688
- hash: "afa0b735a9dd0734362b3f3f7d7177c3"
- }
- Frame {
- msec: 2704
- hash: "91bee07133319a0adbf9a31c430e58ad"
- }
- Frame {
- msec: 2720
- hash: "6aee88b6391e524bafc15524825ada74"
- }
- Frame {
- msec: 2736
- hash: "655ce421faa628b3389f084fe675ad53"
- }
- Frame {
- msec: 2752
- hash: "367fd34b54f12e896839b0ef4fb06925"
- }
- Frame {
- msec: 2768
- hash: "0b3ac04504bfe876c4338a4dc3721280"
- }
- Frame {
- msec: 2784
- hash: "c6cdb77888f1a3cbfe4cfec28bfad12d"
- }
- Frame {
- msec: 2800
- hash: "ef01302544f4da4575035d3e4f2443c9"
- }
- Frame {
- msec: 2816
- hash: "53f01d26a75f7e91d14b8975c81638d5"
- }
- Frame {
- msec: 2832
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2848
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2864
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2880
- image: "follow.2.png"
- }
- Frame {
- msec: 2896
- hash: "143970d31598c017d7f24e8b09fd0f0a"
- }
- Frame {
- msec: 2912
- hash: "fc6c38bfdcd2df7a928e83d57dc0b18d"
- }
- Frame {
- msec: 2928
- hash: "647c09aae23ea5ec7979775d3022cacf"
- }
- Frame {
- msec: 2944
- hash: "f1ed5cd564be1eed3242997c14a99887"
- }
- Frame {
- msec: 2960
- hash: "aec3d7f18d6c4002229ef1d36727c4b0"
- }
- Frame {
- msec: 2976
- hash: "3552e5a3923593a2c66ecd5e2cb2ee25"
- }
- Frame {
- msec: 2992
- hash: "55a72327b726a3c75383cc5a28ba9503"
- }
- Frame {
- msec: 3008
- hash: "c25ff06944f8c92006245452e07215ef"
- }
- Frame {
- msec: 3024
- hash: "cc0187a10a7ccf087838a481f667af6e"
- }
- Frame {
- msec: 3040
- hash: "ae9d7ff04066eb998d052c2e21b58327"
- }
- Frame {
- msec: 3056
- hash: "91707fa1aaa267e6d1d56d173a063bde"
- }
- Frame {
- msec: 3072
- hash: "c076a33b8afcaf915387375f065e49df"
- }
- Frame {
- msec: 3088
- hash: "c24390ec788b5f34356e7a6507507a93"
- }
- Frame {
- msec: 3104
- hash: "e42c9800379de3076d00802c68cc99e8"
- }
- Frame {
- msec: 3120
- hash: "a2d3ba5353b1c967da93d96b61f7927f"
- }
- Frame {
- msec: 3136
- hash: "fe719953aa3468d373801bb80ae93eff"
- }
- Frame {
- msec: 3152
- hash: "e89b9bed1ebc7ebdd37d6975ecb0601c"
- }
- Frame {
- msec: 3168
- hash: "7f3d84f49a7dd4fe39a1ba0ed7f5da3e"
- }
- Frame {
- msec: 3184
- hash: "b16c9e05f72e7c8fa59f80422b987600"
- }
- Frame {
- msec: 3200
- hash: "bd0606da0f7bc6c47a361462b3b2dede"
- }
- Frame {
- msec: 3216
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3232
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3248
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3264
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3280
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3296
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3312
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3328
- hash: "1f112ff43280a208e967e373db8e3f34"
- }
- Frame {
- msec: 3344
- hash: "6d966dafdfd2cf1927c14f749e24a99c"
- }
- Frame {
- msec: 3360
- hash: "8ab4ce88e52d7cd2ec9059cdb973590d"
- }
- Frame {
- msec: 3376
- hash: "62d877f18b8d3fcf6b076946f2ce05f7"
- }
- Frame {
- msec: 3392
- hash: "efe3729cdeddc4bcee105b27e4062dcd"
- }
- Frame {
- msec: 3408
- hash: "a2eb63f12d434925d0780f4992155556"
- }
- Frame {
- msec: 3424
- hash: "5eee7ec87bb399e1395a8d337ede021b"
- }
- Frame {
- msec: 3440
- hash: "59769ae407be01b016df8d7fbf484243"
- }
- Frame {
- msec: 3456
- hash: "bbadb689ec5b76f76340905252b2376a"
- }
- Frame {
- msec: 3472
- hash: "97cd4f34259ac8370e8557ef3ecf5a96"
- }
- Frame {
- msec: 3488
- hash: "17c1513fe4c0132e15355378c6a6ee11"
- }
- Frame {
- msec: 3504
- hash: "7b19041638fc7d1cf60512f579f388dd"
- }
- Frame {
- msec: 3520
- hash: "4d23bbf68cb8b32638b73ac20551ee50"
- }
- Frame {
- msec: 3536
- hash: "3f0326db5a851887a534e80cc29dc21d"
- }
- Frame {
- msec: 3552
- hash: "df5902d22a31c4deac1428d2758a0ffa"
- }
- Frame {
- msec: 3568
- hash: "21badb1464775fa935c2619b91aa6e6e"
- }
- Frame {
- msec: 3584
- hash: "e8cf87f4a65f6915addc16de29c90108"
- }
- Frame {
- msec: 3600
- hash: "d3d4487b887695b7bba8e0af7756a0f8"
- }
- Frame {
- msec: 3616
- hash: "d7f52590e4f51621ad2d62c975a5d1ef"
- }
- Frame {
- msec: 3632
- hash: "9ebdc2b3ef05748e2cc8988f968f7a37"
- }
- Frame {
- msec: 3648
- hash: "74bb7974f9315e70e976c21955390b9e"
- }
- Frame {
- msec: 3664
- hash: "59e16a89e523160f2a482c22f003f87f"
- }
- Frame {
- msec: 3680
- hash: "d8284c216df0fdd37525f26b88707572"
- }
- Frame {
- msec: 3696
- hash: "d8711b4444eea59acc544652cea3c4ce"
- }
- Frame {
- msec: 3712
- hash: "12148c3f2b5f41a4ac4801e990b20114"
- }
- Frame {
- msec: 3728
- hash: "34429cbdfe581a524b1f9072cc404539"
- }
- Frame {
- msec: 3744
- hash: "1f6a17b91d73e10bcbdd166d97546822"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 195; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 3760
- hash: "bccd4f135f27199b3a710576e0013c53"
- }
- Frame {
- msec: 3776
- hash: "6aa4db9ecb8fa4ad4d4f81434c369759"
- }
- Frame {
- msec: 3792
- hash: "a7f2951411d8f5322ce91b3da7e86d64"
- }
- Frame {
- msec: 3808
- hash: "25fe19f3398d3d1a74ad8ed4114149d7"
- }
- Frame {
- msec: 3824
- hash: "05c3dae68897a461de2923824bef9390"
- }
- Frame {
- msec: 3840
- image: "follow.3.png"
- }
- Frame {
- msec: 3856
- hash: "db6265c30dd614720d1532ffc411a28f"
- }
- Frame {
- msec: 3872
- hash: "f5de8e4ba755bc0a1e4c3f36ed3e6a93"
- }
- Frame {
- msec: 3888
- hash: "ad68229e5fe9a2570074648005c5e5df"
- }
- Frame {
- msec: 3904
- hash: "02d894680766289fe659a86b02d6c9ca"
- }
- Frame {
- msec: 3920
- hash: "4f228534dd909207e8d149c74bd8fd90"
- }
- Frame {
- msec: 3936
- hash: "f0b5c64f6a50e156452caf6a352c11e1"
- }
- Frame {
- msec: 3952
- hash: "64d46ff443534dbdb3cca88b7fc3e758"
- }
- Frame {
- msec: 3968
- hash: "717ad4b8012a21c6ed38dee5ea978f36"
- }
- Frame {
- msec: 3984
- hash: "ed38c7b528bcbb3e291761104bf1e86e"
- }
- Frame {
- msec: 4000
- hash: "8cc8674d325a2c72c41654ffbe5bce1f"
- }
- Frame {
- msec: 4016
- hash: "ab66dd60cc0e58d23bef5c709fe901ad"
- }
- Frame {
- msec: 4032
- hash: "b3b824cae4ddaac4a224e84f0e282fa4"
- }
- Frame {
- msec: 4048
- hash: "ead7fe4bec7987c24c305e114797284c"
- }
- Frame {
- msec: 4064
- hash: "e5e9501f1ca61ea9f99aadfc5ca02214"
- }
- Frame {
- msec: 4080
- hash: "f74a00eb31e1604f13a6ffb29fbd91b7"
- }
- Frame {
- msec: 4096
- hash: "539aca62492408ccc1815c67b55cb399"
- }
- Frame {
- msec: 4112
- hash: "4f548ad0eb7c4ce88a777e3b7ce2d3a8"
- }
- Frame {
- msec: 4128
- hash: "b0190c5ed53ff812988dd7a2152ffa61"
- }
- Frame {
- msec: 4144
- hash: "48214bdfbdcba256043e2cec7f5e321b"
- }
- Frame {
- msec: 4160
- hash: "952614329111d1d83b0304aa919af177"
- }
- Frame {
- msec: 4176
- hash: "fd874a73062dedfe7b904ad4c9fbcbc9"
- }
- Frame {
- msec: 4192
- hash: "365b9a18cf37521718ef98589ac23933"
- }
- Frame {
- msec: 4208
- hash: "32bbbf93d78925ef12f830386f0dbe2b"
- }
- Frame {
- msec: 4224
- hash: "835d391a498b7d470b317e91453ba2f9"
- }
- Frame {
- msec: 4240
- hash: "07d0cd82a39bfea2567587745f1e330d"
- }
- Frame {
- msec: 4256
- hash: "9560a63581007038e1c463b906a4b346"
- }
- Frame {
- msec: 4272
- hash: "076d25daafe8b582aeff39e247653285"
- }
- Frame {
- msec: 4288
- hash: "f2e66dad3231250b951388396705c839"
- }
- Frame {
- msec: 4304
- hash: "f168773343e928b60aad5430b9ca739d"
- }
- Frame {
- msec: 4320
- hash: "99ed4dc4be1a0e8d98e1a54d51208da3"
- }
- Frame {
- msec: 4336
- hash: "23b3e73a966f52ce6166bc91955570a1"
- }
- Frame {
- msec: 4352
- hash: "00cdb999f3d2c6fcad708c37c3059c3d"
- }
- Frame {
- msec: 4368
- hash: "96f1bef93ba1768afcc42924145d49ff"
- }
- Frame {
- msec: 4384
- hash: "0a76f6d5ec710e4046f32f76be8e0d68"
- }
- Frame {
- msec: 4400
- hash: "98f97a6c7eac1a493e81e79956177668"
- }
- Frame {
- msec: 4416
- hash: "9424ca6ba64d0d0c0bd1ee9da1b5085a"
- }
- Frame {
- msec: 4432
- hash: "2049a22079ac590aad3c9f6496879bcb"
- }
- Frame {
- msec: 4448
- hash: "f70f9f6bd3abf3bdcb70038cda5ed311"
- }
- Frame {
- msec: 4464
- hash: "48d6d01e1d80fea8eb05572ca26b692c"
- }
- Frame {
- msec: 4480
- hash: "af152dc6de929a8231687611cc301f28"
- }
- Frame {
- msec: 4496
- hash: "2ec869cd61570b570586870f80ba3832"
- }
- Frame {
- msec: 4512
- hash: "42be0431c015dcd0f5f6dd59ba7c2d7d"
- }
- Frame {
- msec: 4528
- hash: "abc112f396c5e504a19dce255437720c"
- }
- Frame {
- msec: 4544
- hash: "a371c4f49af16bdacc5ab5abbfc99e99"
- }
- Frame {
- msec: 4560
- hash: "1ebfd139bfabbbaf522acd63e3f47462"
- }
- Frame {
- msec: 4576
- hash: "b36086718a3dd89500adbf67aa7b0f1d"
- }
- Frame {
- msec: 4592
- hash: "e3ea2ad4955cb2ab8d503b331b3594c3"
- }
- Frame {
- msec: 4608
- hash: "4214c9f474d7f11bed74e32f5b3a0e9f"
- }
- Frame {
- msec: 4624
- hash: "f290e1dbf13ae399a2644eea3715804a"
- }
- Frame {
- msec: 4640
- hash: "6538c60446e3303dc1126c3c9c47ae42"
- }
- Frame {
- msec: 4656
- hash: "5319667f181eb5647710ccc6eddf43c9"
- }
- Frame {
- msec: 4672
- hash: "b98b68ea99d5a107115b50c32aa45c35"
- }
- Frame {
- msec: 4688
- hash: "2cc38e2915f77a46082c32c9393ae0c5"
- }
- Frame {
- msec: 4704
- hash: "40c695b17834cbba86d4dde0729f620b"
- }
- Frame {
- msec: 4720
- hash: "e8d5a95cfc726ce2626951ef1c68a948"
- }
- Frame {
- msec: 4736
- hash: "ab96c1668890ceffba74219d83e15e99"
- }
- Frame {
- msec: 4752
- hash: "4d69a73b3940911940b419028dabd223"
- }
- Frame {
- msec: 4768
- hash: "281043e3c045df177cbfae1abf51a8d1"
- }
- Frame {
- msec: 4784
- hash: "8adf6d8154d7950efe6b5bd7e2b760b6"
- }
- Frame {
- msec: 4800
- image: "follow.4.png"
- }
- Frame {
- msec: 4816
- hash: "7fba4249c76b7f81c2b88cf906ce8ce6"
- }
- Frame {
- msec: 4832
- hash: "50b3c89d4d783469843b3acacb9690dd"
- }
- Frame {
- msec: 4848
- hash: "29f950ab7e6299036e78c8f37d114990"
- }
- Frame {
- msec: 4864
- hash: "3f8aecc5453406c9d8160eeb9691ed91"
- }
- Frame {
- msec: 4880
- hash: "ad7ff48fed4ca9e236271d169c3bf696"
- }
- Frame {
- msec: 4896
- hash: "2a2f872e4ef5c062a61fb59238df8794"
- }
- Frame {
- msec: 4912
- hash: "87cf2e21d7e56a82437a8ff3fa2bdc8c"
- }
- Frame {
- msec: 4928
- hash: "c3b04bb24d86d2aebd8fde7845f114cf"
- }
- Frame {
- msec: 4944
- hash: "3ad95d59a1f1841e3ff2324055ca23c0"
- }
- Frame {
- msec: 4960
- hash: "b91068fdce1fb2be9a64902a3dfa6b0d"
- }
- Frame {
- msec: 4976
- hash: "30f0118eb0bba40927a8038da03b652b"
- }
- Frame {
- msec: 4992
- hash: "ce5f3d15d3536be16b960f02a7335b99"
- }
- Frame {
- msec: 5008
- hash: "85b853c3f48b915ed6e80815709e8ac2"
- }
- Frame {
- msec: 5024
- hash: "c3511a76aa6dc2f1422a473ca4d80d0f"
- }
- Frame {
- msec: 5040
- hash: "deb1df70b4e1801c635356c65c0a5a46"
- }
- Frame {
- msec: 5056
- hash: "d04983df9b0ffc45e629af55a8e5cc95"
- }
- Frame {
- msec: 5072
- hash: "2a55c97509819657f5f8604d4789d9d4"
- }
- Frame {
- msec: 5088
- hash: "94589d594fa2e5ed621459ec2c8bd7e8"
- }
- Frame {
- msec: 5104
- hash: "a8a1bd7c15a5bdfe15d6580d719bdba6"
- }
- Frame {
- msec: 5120
- hash: "b4e1a4b1b649820be217c46b5086c8a4"
- }
- Frame {
- msec: 5136
- hash: "4de7d7ce85717eb9a67c61745ea26c0a"
- }
- Frame {
- msec: 5152
- hash: "c8ee53b7e659e10c7dbcf44e1a45f794"
- }
- Frame {
- msec: 5168
- hash: "f46ce03bc5a932c39862577c5a5cd24c"
- }
- Frame {
- msec: 5184
- hash: "d417370ed6fb99ccfa443eb97e6de331"
- }
- Frame {
- msec: 5200
- hash: "336af06572992960c829d4a209048263"
- }
- Frame {
- msec: 5216
- hash: "4066e8eef292abf9b58bc89b4b5f3ce9"
- }
- Frame {
- msec: 5232
- hash: "360f037a02bf4a337b278886266ff2f1"
- }
- Frame {
- msec: 5248
- hash: "79e9f387b0ce164057640c0caab8d10d"
- }
- Frame {
- msec: 5264
- hash: "ee8741d1810303cfe5ecff39c7d52fdd"
- }
- Frame {
- msec: 5280
- hash: "4cba1c857f0af49d7fe68584f99c89d7"
- }
- Frame {
- msec: 5296
- hash: "c0ae482a2fbb9f15a2c2ff631cc85c2c"
- }
- Frame {
- msec: 5312
- hash: "3b6bf6d6a0aeebdc92eff4e336fd3b6e"
- }
- Frame {
- msec: 5328
- hash: "43033eb8aeba6b49c135a1702f6b8f47"
- }
- Frame {
- msec: 5344
- hash: "1319c7e3a84484723891ee43a80bc765"
- }
- Frame {
- msec: 5360
- hash: "838ec693c923565d77b060f262beb1e8"
- }
- Frame {
- msec: 5376
- hash: "74306669836425de03cec617d4ed849a"
- }
- Frame {
- msec: 5392
- hash: "c063f4951755c8939399d0d560a0f762"
- }
- Frame {
- msec: 5408
- hash: "512c739e0ff25f7d6b983a193f7fc2c3"
- }
- Frame {
- msec: 5424
- hash: "6c5f69cc2ce2992fd2ecb0ea3691e2b8"
- }
- Frame {
- msec: 5440
- hash: "f5dbc5ce0ba00eafb9379ee86de67150"
- }
- Frame {
- msec: 5456
- hash: "f62bb7d8d9749272ca3e2bd1931598fb"
- }
- Frame {
- msec: 5472
- hash: "052fdac05286edcdd7fcd4d6d9582f39"
- }
- Frame {
- msec: 5488
- hash: "ac4702306e5be156fe7b069cb90e1038"
- }
- Frame {
- msec: 5504
- hash: "127e94c79f4d33e5f223a0853629245f"
- }
- Frame {
- msec: 5520
- hash: "dd77216b0a90c46dd5c264d38ab0fd74"
- }
- Frame {
- msec: 5536
- hash: "a4e50b39aa367d4cd7650d088d186856"
- }
- Frame {
- msec: 5552
- hash: "6e14946b9b23f0fc137bd61c02af1ca5"
- }
- Frame {
- msec: 5568
- hash: "8c550d5e4cfbcee2c7bd6c20dba53f41"
- }
- Frame {
- msec: 5584
- hash: "9f2385fb614bdaafe022712148f786d2"
- }
- Frame {
- msec: 5600
- hash: "c87903c96ae5a4b91c5bda524bfd4a4f"
- }
- Frame {
- msec: 5616
- hash: "9a98de9b4237b7c0ccb4468344d410bc"
- }
- Frame {
- msec: 5632
- hash: "7ff448f395ff50cde1f6e6cfaf0c1541"
- }
- Frame {
- msec: 5648
- hash: "ab7a6998a5b26e3d58bd1d0a949f3709"
- }
- Frame {
- msec: 5664
- hash: "ab7a6998a5b26e3d58bd1d0a949f3709"
- }
- Frame {
- msec: 5680
- hash: "2e1b5636ab75af91bd5b0d48c04828f5"
- }
- Frame {
- msec: 5696
- hash: "0976b605c78f6f8512acdfb61b9d123a"
- }
- Frame {
- msec: 5712
- hash: "bb816bfd8bd3972c80c3a76c9ddf785e"
- }
- Frame {
- msec: 5728
- hash: "c3518990fc7aa5660a9e86034cf4c46f"
- }
- Frame {
- msec: 5744
- hash: "b27230d8aeb214e18b43de167213ef7b"
- }
- Frame {
- msec: 5760
- image: "follow.5.png"
- }
- Frame {
- msec: 5776
- hash: "fc55f00ae456c2687ed05ab4b6906a33"
- }
- Frame {
- msec: 5792
- hash: "50051a48d1fae3bc9c9d1f0a964d9561"
- }
- Frame {
- msec: 5808
- hash: "279a38d7261241c744c2317ea9843567"
- }
- Frame {
- msec: 5824
- hash: "0b3ed3960713dbda36326b7de492c42e"
- }
- Frame {
- msec: 5840
- hash: "fff5737541317406c4a0ef06f1cdc041"
- }
- Frame {
- msec: 5856
- hash: "47aef0d79da45139a3981a75290cc9b8"
- }
- Frame {
- msec: 5872
- hash: "d79f9f9371c76a855ea4f2cdeed97acd"
- }
- Frame {
- msec: 5888
- hash: "66610a0d5b926d419da26e20b04b55a5"
- }
- Frame {
- msec: 5904
- hash: "9891ad954da8535b44cc234bb2588f30"
- }
- Frame {
- msec: 5920
- hash: "b53056146701fae1598ab49e6399db01"
- }
- Frame {
- msec: 5936
- hash: "064799027a3f60458a3797c6c87d3e29"
- }
- Frame {
- msec: 5952
- hash: "81ad252f10e6f8f2a08e7df1d25e8a47"
- }
- Frame {
- msec: 5968
- hash: "09fbd923da02844f50ad25059f82560c"
- }
- Frame {
- msec: 5984
- hash: "f41d8370afdce8a154ab42204ca8d92d"
- }
- Frame {
- msec: 6000
- hash: "748b2d020c28b3ac36b08377b4a2544b"
- }
- Frame {
- msec: 6016
- hash: "748b2d020c28b3ac36b08377b4a2544b"
- }
- Frame {
- msec: 6032
- hash: "d8c02a54c0d1df20127025d547c741af"
- }
- Frame {
- msec: 6048
- hash: "d8c02a54c0d1df20127025d547c741af"
- }
- Frame {
- msec: 6064
- hash: "d7fd0dab22fec0f68ed01cfd6d32e7f5"
- }
- Frame {
- msec: 6080
- hash: "f0b035eda10c07f5c3c825784ad96437"
- }
- Frame {
- msec: 6096
- hash: "54b83800f8a01e1a4d57b8b1d371fb09"
- }
- Frame {
- msec: 6112
- hash: "19ad51c31e9cfdb314c76f323574806c"
- }
- Frame {
- msec: 6128
- hash: "dcf269a115781eb4df232a527de87a87"
- }
- Frame {
- msec: 6144
- hash: "95053206702a6118c23b541ff7fbef0d"
- }
- Frame {
- msec: 6160
- hash: "933a158398ee746c0465c2e7af9b6b4d"
- }
- Frame {
- msec: 6176
- hash: "ade4a4aa03f5787dce1331ed27ff9c6e"
- }
- Frame {
- msec: 6192
- hash: "9ecc7d4cb5cf0dd815e208e13e2c932a"
- }
- Frame {
- msec: 6208
- hash: "98e40cba2e717e57a5dcd3413e166f65"
- }
- Frame {
- msec: 6224
- hash: "f68f45b71f6d596eaa76fa2bc46cfe1b"
- }
- Frame {
- msec: 6240
- hash: "9230c9b1013b83b073ccb90d2633043f"
- }
- Frame {
- msec: 6256
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6272
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6288
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6304
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6320
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6336
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6352
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6368
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6384
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6400
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6416
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6432
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6448
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6464
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6480
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6496
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6512
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6528
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6544
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6560
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6576
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6592
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6608
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6624
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6640
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6656
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6672
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6688
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6704
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6720
- image: "follow.6.png"
- }
- Frame {
- msec: 6736
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6752
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6768
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6784
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6800
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6816
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6832
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 6848
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6864
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6880
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6896
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6912
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6928
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png
new file mode 100644
index 0000000000..8b6329d95f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
new file mode 100644
index 0000000000..85c0cce795
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 32
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 48
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 64
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 80
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 96
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 112
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 128
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 144
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 160
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 176
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 192
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 208
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 224
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 240
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 256
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 272
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 288
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 304
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 320
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 336
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 352
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 368
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 384
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 400
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 416
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 432
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 448
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 464
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 480
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 496
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 512
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 528
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 544
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 560
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 576
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 592
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 608
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 624
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 640
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 656
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 672
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 688
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 704
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 720
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 736
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 752
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 768
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 784
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 800
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 816
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 832
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 848
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 864
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 880
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 896
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 912
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 928
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 944
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 960
+ image: "multilineAlign.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png
new file mode 100644
index 0000000000..e6b2b3cc01
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml
new file mode 100644
index 0000000000..1b43aa36cc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 32
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 48
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 64
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 80
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 96
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 112
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 128
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 144
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 160
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 176
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 192
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 208
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 224
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 240
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 256
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 272
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 288
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 304
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 320
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 336
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 352
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 368
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 384
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 400
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 416
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 432
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 448
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 464
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 480
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 496
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 512
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 528
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 544
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 560
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 576
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 592
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 608
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 624
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 640
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 656
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 672
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 688
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 704
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 720
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 736
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 752
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 768
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 784
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 800
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 816
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 832
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 848
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 864
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 880
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 896
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 912
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 928
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 944
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 960
+ image: "multilineAlign.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png
new file mode 100644
index 0000000000..e6b2b3cc01
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml
new file mode 100644
index 0000000000..1b43aa36cc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 32
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 48
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 64
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 80
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 96
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 112
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 128
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 144
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 160
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 176
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 192
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 208
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 224
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 240
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 256
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 272
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 288
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 304
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 320
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 336
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 352
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 368
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 384
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 400
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 416
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 432
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 448
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 464
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 480
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 496
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 512
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 528
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 544
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 560
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 576
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 592
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 608
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 624
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 640
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 656
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 672
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 688
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 704
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 720
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 736
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 752
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 768
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 784
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 800
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 816
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 832
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 848
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 864
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 880
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 896
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 912
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 928
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 944
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 960
+ image: "multilineAlign.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
new file mode 100644
index 0000000000..a427719202
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
@@ -0,0 +1,25 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+/*Tests both the alignments of multiline text, and that
+ it can deal with changing them properly
+*/
+Item{
+ width: 100
+ height: 80
+ property int stage: 0
+ onStageChanged: if(stage == 6) Qt.quit();
+ TestText{
+ text: "I am the very model of a modern major general."
+ anchors.fill: parent;
+ wrapMode: Text.WordWrap
+ horizontalAlignment: (stage<1 ? Text.AlignRight : (stage<3 ? Text.AlignHCenter : Text.AlignLeft))
+ verticalAlignment: (stage<2 ? Text.AlignBottom : (stage<4 ? Text.AlignVCenter : Text.AlignTop))
+ }
+ Timer{
+ interval: 160
+ running: true
+ repeat: true
+ onTriggered: stage += 1
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml
new file mode 100644
index 0000000000..d7428dd31b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml
@@ -0,0 +1,131 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 32
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 48
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 64
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 80
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 96
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 112
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 128
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 144
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 160
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 176
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 192
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 208
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 224
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 240
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 256
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 272
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 288
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 304
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 320
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 336
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 352
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 368
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 384
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 400
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 416
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 432
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 448
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 464
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 480
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 496
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
index 880609b674..c526f47eb2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
@@ -6,126 +6,126 @@ VisualTest {
}
Frame {
msec: 16
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 32
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 48
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 64
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 80
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 96
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 112
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 128
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 144
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 160
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 176
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 192
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 208
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 224
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 240
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 256
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 272
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 288
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 304
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 320
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 336
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 352
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 368
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 384
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 400
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 416
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 432
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 448
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 464
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 480
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
Frame {
msec: 496
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "e38b59f2c271def037213e57a966bd95"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
index ec1f8b34da..618a65f063 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
- id: s; width: 600; height: 100; color: "lightsteelblue"
+ id: s; width: 600; height: 100;
property string text: "The quick brown fox jumps over the lazy dog."
- Text {
+ TestText {
text: s.text
anchors.verticalCenter: s.verticalCenter
}
- Text {
+ TestText {
text: s.text
anchors.baseline: s.verticalCenter
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
new file mode 100644
index 0000000000..aca7c2dd66
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
@@ -0,0 +1,23 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+/* The bug was that if text was set to "" or the size didn't increase, the text didn't repaint
+ ended up only repainting for 1, 10, 11, 12.
+ Test passes if it goes from "" to 13 back to "" with all numbers being painted (and the text disappearing at 0)
+ */
+
+Item{
+ width: 80
+ height: 80
+ property int val: 0
+ Text{
+ id: txt;
+ text: val == 0 ? "" : val
+ }
+ Timer{
+ interval: 100
+ running: true
+ repeat: true;
+ onTriggered: {val = (val + 1) % 14;}
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png
new file mode 100644
index 0000000000..b8cc1c70be
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml
new file mode 100644
index 0000000000..6201c72fc0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml
@@ -0,0 +1,475 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 32
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 48
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 64
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 80
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 96
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 112
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 128
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 144
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 160
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 176
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 192
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 208
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 224
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 240
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 256
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 272
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 288
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 304
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 320
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 336
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 352
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 368
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 384
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 400
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 416
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 432
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 448
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 464
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 480
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 496
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 512
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 528
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 544
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 560
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 576
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 592
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 608
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 624
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 640
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 656
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 672
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 688
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 704
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 720
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 736
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 752
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 768
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 784
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 800
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 816
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 832
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 848
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 864
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 880
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 896
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 912
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 928
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 944
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 960
+ image: "QTBUG-14469.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 992
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1008
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1024
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1040
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1056
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1072
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1088
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1104
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1120
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1136
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1152
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1168
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1184
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1200
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1216
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1232
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1248
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1264
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1280
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1296
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1312
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1328
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1344
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1360
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1376
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1392
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1408
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1424
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1456
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1472
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1488
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1504
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1520
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1536
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1552
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1568
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1584
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1600
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1616
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1632
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1648
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1664
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1680
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1696
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1712
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1728
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1744
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1760
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1776
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1792
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1808
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1824
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1840
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1856
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1872
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png
new file mode 100644
index 0000000000..b8cc1c70be
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml
new file mode 100644
index 0000000000..6201c72fc0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml
@@ -0,0 +1,475 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 32
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 48
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 64
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 80
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 96
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 112
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 128
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 144
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 160
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 176
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 192
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 208
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 224
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 240
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 256
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 272
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 288
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 304
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 320
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 336
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 352
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 368
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 384
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 400
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 416
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 432
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 448
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 464
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 480
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 496
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 512
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 528
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 544
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 560
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 576
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 592
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 608
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 624
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 640
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 656
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 672
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 688
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 704
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 720
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 736
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 752
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 768
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 784
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 800
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 816
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 832
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 848
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 864
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 880
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 896
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 912
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 928
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 944
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 960
+ image: "QTBUG-14469.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 992
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1008
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1024
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1040
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1056
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1072
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1088
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1104
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1120
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1136
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1152
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1168
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1184
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1200
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1216
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1232
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1248
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1264
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1280
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1296
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1312
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1328
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1344
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1360
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1376
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1392
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1408
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1424
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1456
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1472
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1488
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1504
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1520
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1536
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1552
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1568
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1584
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1600
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1616
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1632
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1648
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1664
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1680
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1696
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1712
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1728
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1744
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1760
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1776
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1792
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1808
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1824
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1840
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1856
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1872
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png
new file mode 100644
index 0000000000..75478566ad
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png
new file mode 100644
index 0000000000..84430bb7ac
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml
new file mode 100644
index 0000000000..6b9986f019
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 32
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 48
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 64
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 80
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 96
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 112
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 128
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 144
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 160
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 176
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 192
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 208
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 224
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 240
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 256
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 272
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 288
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 304
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 320
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 336
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 352
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 368
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 384
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 400
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 416
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 432
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 448
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 464
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 480
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 496
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 512
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 528
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 544
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 560
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 576
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 592
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 608
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 624
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 640
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 656
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 672
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 688
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 704
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 720
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 736
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 752
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 768
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 784
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 800
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 816
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 832
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 848
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 864
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 880
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 896
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 912
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 928
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 944
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 992
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1008
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png
new file mode 100644
index 0000000000..a4bae3a20a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml
new file mode 100644
index 0000000000..a470a66dd4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 32
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 48
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 64
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 80
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 96
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 112
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 128
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 144
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 160
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 176
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 192
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 208
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 224
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 240
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 256
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 272
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 288
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 304
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 320
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 336
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 352
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 368
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 384
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 400
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 416
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 432
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 448
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 464
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 480
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 496
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 512
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 528
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 544
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 560
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 576
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 592
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 608
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 624
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 640
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 656
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 672
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 688
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 704
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 720
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 736
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 752
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 768
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 784
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 800
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 816
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 832
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 848
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 864
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 880
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 896
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 912
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 928
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 944
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 992
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1008
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png
new file mode 100644
index 0000000000..a4bae3a20a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml
new file mode 100644
index 0000000000..a470a66dd4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 32
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 48
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 64
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 80
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 96
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 112
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 128
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 144
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 160
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 176
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 192
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 208
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 224
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 240
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 256
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 272
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 288
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 304
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 320
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 336
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 352
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 368
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 384
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 400
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 416
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 432
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 448
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 464
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 480
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 496
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 512
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 528
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 544
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 560
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 576
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 592
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 608
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 624
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 640
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 656
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 672
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 688
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 704
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 720
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 736
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 752
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 768
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 784
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 800
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 816
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 832
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 848
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 864
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 880
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 896
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 912
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 928
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 944
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 992
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1008
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
index eea336298b..88e065b8b4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
index 9439f73210..96144e114e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 32
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 48
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 64
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 80
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 96
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 112
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 128
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 144
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 160
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 176
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 192
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 208
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 224
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 240
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 256
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 272
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 288
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 304
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 320
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 336
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 352
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 368
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 384
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 400
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 416
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 432
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 448
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 464
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 480
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 496
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 512
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 528
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 544
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 560
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 576
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 592
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 608
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 624
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 640
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 656
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 672
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 688
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 704
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 720
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 736
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 752
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 768
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 784
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 800
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 816
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 832
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 848
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 864
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 880
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 896
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 912
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 928
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 944
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 960
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Key {
type: 6
@@ -258,22 +258,22 @@ VisualTest {
}
Frame {
msec: 992
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1008
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1024
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1040
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1056
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
index 3dfade5c72..4df514af97 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
index 1ee2076add..e752fec6fa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
index ae680bebbe..d2f8633295 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
index c2859bef87..016232161d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
index 3e34f04ef0..b5319428e6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 32
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 48
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 64
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 80
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 96
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 112
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 128
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 144
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 160
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 176
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 192
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 208
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 224
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 240
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 256
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 272
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 288
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 304
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 320
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 336
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 352
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 368
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 384
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 400
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 416
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 432
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 448
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 464
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 480
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 496
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 512
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 528
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 544
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 560
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 576
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 592
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 608
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 624
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 640
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 656
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 672
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 688
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 704
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 720
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 736
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 752
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 768
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 784
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 800
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 816
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 832
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 848
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 864
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 880
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 896
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 912
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 928
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 944
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 960
@@ -246,199 +246,199 @@ VisualTest {
}
Frame {
msec: 976
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 992
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1008
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1024
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1040
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1056
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1072
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1088
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1104
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1120
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1136
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1152
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1168
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1184
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1200
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1216
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1232
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1248
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1264
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1280
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1296
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1312
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1328
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1344
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1360
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1376
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1392
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1408
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1424
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1440
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1456
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1472
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1488
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1504
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1520
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1536
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1552
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1568
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1584
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1600
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1616
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1632
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1648
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1664
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1680
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1696
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1712
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1728
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Frame {
msec: 1744
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Key {
type: 6
@@ -450,43 +450,43 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1776
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1792
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1808
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1824
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1840
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1856
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1872
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1888
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1904
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1920
@@ -494,239 +494,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1952
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1968
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 1984
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2000
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2016
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2032
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2048
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2064
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2080
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2096
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2112
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2128
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2144
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2160
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2176
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2192
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2208
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2224
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2240
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2256
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2272
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2288
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2304
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2320
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2336
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2352
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2368
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2384
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2400
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2416
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2432
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2448
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2464
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2480
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2496
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2512
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2528
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2544
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2560
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2576
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2592
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2608
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2624
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2640
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2656
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2672
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2688
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2704
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2720
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2736
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2752
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2768
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2784
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2800
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2816
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2832
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2848
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2864
- hash: "a093510751799f3466156f9775988044"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2880
@@ -734,239 +734,239 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "a093510751799f3466156f9775988044"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2912
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2928
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2944
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2960
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2976
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2992
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 3008
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3024
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3040
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3056
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3072
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3088
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3104
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3120
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3136
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3152
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3168
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3184
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3200
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3216
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3232
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3248
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3264
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3280
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3296
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3312
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3328
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3344
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3360
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3376
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3392
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3408
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3424
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3440
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3456
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3472
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3488
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3504
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3520
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3536
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3552
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3568
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3584
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3600
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3616
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3632
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3648
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3664
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3680
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3696
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3712
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3728
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3744
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3760
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3776
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3792
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3808
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3824
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3840
@@ -974,18 +974,18 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3872
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3888
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
Frame {
msec: 3904
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
index 80549b4609..8caaf5f19a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
index 76c2ee1d87..30df3facf5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "17f39c541a0b5bf958c3fdaa51b72fec"
+ hash: "2e258ad7cb0a2cd7c6c47a0b0a9563c1"
}
Frame {
msec: 32
- hash: "da61bb1afef532688045116bcce1da40"
+ hash: "d818e0f4f1011a2a8f1d0d803fa18bc0"
}
Frame {
msec: 48
- hash: "04ddcb158ce8ade4ea9ad16405c7d81a"
+ hash: "44b37be97bbd1f0e26d81f76d9643e51"
}
Frame {
msec: 64
- hash: "7ca43ec7a6e630c9bc07478abf5c2686"
+ hash: "3079a5cf6b8277ae3e1b29ae09d04adc"
}
Frame {
msec: 80
- hash: "ae2c4e73395cf4a5663110ba1b9996b2"
+ hash: "ba899e6f18abb7105f915cef4e60f1e1"
}
Frame {
msec: 96
- hash: "5059426cced6ff6f92102100416b34d8"
+ hash: "6d2d2b3dc8afa60e32a39449ba90f78d"
}
Frame {
msec: 112
- hash: "e816cb366ba9498d0ae194b789c25f12"
+ hash: "965af350a8fc20c7bcffb370802bc9d9"
}
Frame {
msec: 128
- hash: "fd8cd9b2916b7045086df92d19e8b436"
+ hash: "8e088db1ff0eb9f5c28268dee929928c"
}
Frame {
msec: 144
- hash: "965dfe4cad0a3d07c0b086d6351a43a1"
+ hash: "a0ba6c6bd1e491778294346eeabd8138"
}
Frame {
msec: 160
- hash: "56759a670c864d5f2ae392fa8545f3a4"
+ hash: "068a018a5c017cb76ebf3721e0acdb35"
}
Frame {
msec: 176
- hash: "8d3c2be4fcef526650cc84b5c2d29170"
+ hash: "efa65cae0a4d027c2ec508deecef8aa5"
}
Frame {
msec: 192
- hash: "6d9f995bef186a69b259b8d18470f0e7"
+ hash: "9c224e97aa56c6b203a48fb689d72c9a"
}
Frame {
msec: 208
- hash: "670c68a0943c5f037f8bf4c9ca0df501"
+ hash: "4f78af1e82a2dd46bab2d237d4f574e5"
}
Frame {
msec: 224
- hash: "6218cf02cb762aa6c33985fe1b2e47bb"
+ hash: "7d022c13e3ef07ca0b6618ae8865dbf1"
}
Frame {
msec: 240
- hash: "6e3424f2b72d6582ceb5a6c1bfe3dba4"
+ hash: "1dc2ecf6cb92cd7d9e467de0049a8598"
}
Frame {
msec: 256
- hash: "fb819344ab1d2966b043be790831e680"
+ hash: "262174926ac657c3cd788e2383b5842b"
}
Frame {
msec: 272
- hash: "a729845b780cc708ddd578eab3bc0ab1"
+ hash: "984c40aaa927f9e9e73ad228f057d3d9"
}
Frame {
msec: 288
- hash: "543f6566c4dfaecb70007848cc4f8525"
+ hash: "0c74101beaeb0a59c1e6b1bf751ca71d"
}
Frame {
msec: 304
- hash: "5497699414bd8a428ead9703dc7273d5"
+ hash: "1c2dd6a6675014255e83c2ae734d717b"
}
Frame {
msec: 320
- hash: "e9230e525bb0ce33fe4bf3a2c948357d"
+ hash: "f6ac3e9e82a9a710f500f8053b6030ac"
}
Frame {
msec: 336
- hash: "ef6a6989f013d444547c0b98a65a34bf"
+ hash: "9676fdc060e5784e96534a962992c024"
}
Frame {
msec: 352
- hash: "ee89f5163fe269884d59acac7fc23336"
+ hash: "c46634183e4bde82419bf757bd674a72"
}
Frame {
msec: 368
- hash: "0ffb11ceccdc607c1a072dde4aa40f93"
+ hash: "d04d082f4a1602a308da7f373cbb4094"
}
Frame {
msec: 384
- hash: "97a51d7916e04815724506e289040e2a"
+ hash: "a4178c9ffbb74f3f221fc63bee26ca35"
}
Frame {
msec: 400
- hash: "a63d6d73827e1b40a7fec76e6555d7ab"
+ hash: "0667b13789a501995b2846f7d93fb973"
}
Frame {
msec: 416
- hash: "d3eaf72442852317a48dc2b638ad48be"
+ hash: "fda46bf0beecbb4326b2fc6f6926f0a7"
}
Frame {
msec: 432
- hash: "fa867a486d51089ddfeb60b9d44b329e"
+ hash: "85cbdea027d76dee1dad376679a40a22"
}
Frame {
msec: 448
- hash: "834ee944cfc63209bcba94153ccd2c4e"
+ hash: "0fd56200749ea5882e1bd714e9803d44"
}
Frame {
msec: 464
- hash: "6d637d4763ae457233ab669f9f124bc1"
+ hash: "10bf5c477f64f442990716b7eec8fd70"
}
Frame {
msec: 480
- hash: "66c60bd9de1870f46b726c404ab924d5"
+ hash: "7cbd8ba3f09c3d00051cd33006381afb"
}
Frame {
msec: 496
- hash: "088499b53390e3a2c3ca7f42cac101a4"
+ hash: "dca10161836025808cddce9fd93f2412"
}
Frame {
msec: 512
- hash: "19d41f7696c86120460c4db7a0f9be1a"
+ hash: "b949ec6303ccaafc203066c7f9b33ef2"
}
Frame {
msec: 528
- hash: "cd3ae14964e174db94e3e6c8609f366a"
+ hash: "853c521bad75c08c0dfe3a00bed01136"
}
Frame {
msec: 544
- hash: "0c2172e091c2fb42d7c016779fa543d7"
+ hash: "dd76c440dc8cfcb7305409483d21d65d"
}
Frame {
msec: 560
- hash: "7534175e24b2cbab08518de8fc691003"
+ hash: "c9b70db4b94e4b0cc855102f43b8e731"
}
Frame {
msec: 576
- hash: "a9ef64d20b4f93e60f25753e2d7dd2e0"
+ hash: "d196057b8aa1e11ec9cf11032b57ca03"
}
Frame {
msec: 592
- hash: "d8e62a9fec27bfc892b0f3034bc73c3f"
+ hash: "0fae715746a8a340a8f3c4428cf96783"
}
Frame {
msec: 608
- hash: "f8eee41f72e17693074a2ac250bb850e"
+ hash: "dd2e89d00ce85b167fbc822fedbfb449"
}
Frame {
msec: 624
- hash: "3a08b62a8aa1f410415afbd7b8ee8728"
+ hash: "a5228adf745f580364eafcbbdd994178"
}
Frame {
msec: 640
- hash: "0c4fba2bc8b7e440736f4a23d048c23c"
+ hash: "f750f588ee00805bc3757940f95de9ae"
}
Frame {
msec: 656
- hash: "521264dbeec0fbe3a467739f0c3f7b85"
+ hash: "55a79fefc2bf6d42b442e68150e3a9bc"
}
Frame {
msec: 672
- hash: "2c455560a624acfb7f316eae8926d765"
+ hash: "7b932e7585e66cc7cd31f858ce78a6e1"
}
Frame {
msec: 688
- hash: "c9fa632a0998cfae39d434b623b3060d"
+ hash: "10f204c59a5bff0c49dfc7691c35cef8"
}
Frame {
msec: 704
- hash: "506ea16572fa0ee72cddcedfe5b4b9ea"
+ hash: "cf901c80729eb0b83b46777e727d43e2"
}
Frame {
msec: 720
- hash: "83ae06a3ad24d2a6d49c71df2a287716"
+ hash: "f6bf6e11ef6a71d7e746fae1d0a44531"
}
Frame {
msec: 736
- hash: "d4b11b45b4f97de0c0b878b97b804f09"
+ hash: "4a8795196ece8c0ef18319008dbc0f2f"
}
Frame {
msec: 752
- hash: "868aac6c273b7cc90c31c14298ab9a3b"
+ hash: "44d32f0b5377ad3b08928413f20e95e1"
}
Frame {
msec: 768
- hash: "03d4222586194bb6513305d1837d3467"
+ hash: "9e0dd160a465573cbac831a14e36ba6d"
}
Frame {
msec: 784
- hash: "21e6cd89f06077bd5d346c7ccb8fa1e9"
+ hash: "fb2e2522cee569632d9682aa04e7ca08"
}
Frame {
msec: 800
- hash: "326092c4c29217f5afb5730ab3984353"
+ hash: "71b0e8d7671cee10f4f71a80abcde7ec"
}
Frame {
msec: 816
- hash: "4963d64093e65fe1973ffab5b7a15abc"
+ hash: "4affee92d320d6eca9995ddd8989627f"
}
Frame {
msec: 832
- hash: "3125e6e553bbf3f2fcf8fbf797a0c1f8"
+ hash: "b3e5e26a34cd491d3cd23f4e611266e2"
}
Frame {
msec: 848
- hash: "879b24c994d4a9854d08bda2bbf2ceda"
+ hash: "aa185efe8d0c4c61d4df55266830cfd8"
}
Frame {
msec: 864
- hash: "03c4320dc2aa030c341d54899869b561"
+ hash: "19c01ead1135f84b4b3a32583815fd10"
}
Frame {
msec: 880
- hash: "ae0e91975aecc6a416b4a23504fced32"
+ hash: "a231a722225c26ff764f16570d1e6beb"
}
Frame {
msec: 896
- hash: "e4150bdf0d4bab9bddc4605a9bde5b69"
+ hash: "466fce12d10bd4b714d4ead14d1c5839"
}
Frame {
msec: 912
- hash: "dc961cb82a0e58603b3914f16f0a3f52"
+ hash: "158650554c8467ed7d93c3c11177e041"
}
Frame {
msec: 928
- hash: "5339507c303e42ecab853ca1688881f3"
+ hash: "ac16910bc816ca6c76a78160dda8380d"
}
Frame {
msec: 944
- hash: "a7c616c57f98eb03c1501747ea1a8b45"
+ hash: "23ac6eeb0c9bd48dbc844b1263a18cbb"
}
Frame {
msec: 960
@@ -246,58 +246,58 @@ VisualTest {
}
Frame {
msec: 976
- hash: "773ad6bc56f80bd5f6ce346ae0bc79c9"
+ hash: "3da0b9d963113cfb58152bac1c757065"
}
Frame {
msec: 992
- hash: "18b9ebfb9e5beac337143cc625fdfad7"
+ hash: "e1a33345ee1372069d9282406f1e5605"
}
Frame {
msec: 1008
- hash: "efb9f12a98ea137e2b50d344c21c4a89"
+ hash: "da872c570bccf17e88ac7db1d6d076ae"
}
Frame {
msec: 1024
- hash: "5b880958b3d20c09a10189cfc5f7b671"
+ hash: "6feea54c6a7f9895001efeff177f9be9"
}
Frame {
msec: 1040
- hash: "edf2d8c174ac6e2e3a887336dc04df8c"
+ hash: "09049b33ca46a2fc2d06855e29ae66bf"
}
Frame {
msec: 1056
- hash: "ad04b9e0e88695a13032abae8fef6f32"
+ hash: "cd96d789f57ac1d425942416337174f1"
}
Frame {
msec: 1072
- hash: "e4ad91c9da3e954cac33ce98832fee1c"
+ hash: "0a763dd626e27ad14963aecfb8d7673c"
}
Frame {
msec: 1088
- hash: "a853212cf0ddc17cb0eb9be7f2ac5475"
+ hash: "3d81f68bb7aac95b66b0cd0defbb3657"
}
Frame {
msec: 1104
- hash: "a03f7ac2553fe114c4591ed98dab3ceb"
+ hash: "469b862006f99dfefcca803bc49287e3"
}
Frame {
msec: 1120
- hash: "5de7491803582e0d13d2ff3e2eb3df82"
+ hash: "c3f698102bd46231430ab9e8029b8192"
}
Frame {
msec: 1136
- hash: "0685263ac468ce39b468d37a20f7e5f8"
+ hash: "421a9b4848a59281aea73c08a7219a33"
}
Frame {
msec: 1152
- hash: "14d4ab3f40dc6a0835c56c0f84256182"
+ hash: "0066eaa302678a4be35dca0c3ed33b1c"
}
Frame {
msec: 1168
- hash: "6a8c61c31c3d00592863ad356c45b354"
+ hash: "4cceb05bfeb231189b66f1fbdfaeccd3"
}
Frame {
msec: 1184
- hash: "08b3e3388469b1a62d3fc7f7a94f85a2"
+ hash: "ccf229cdd6fde7ef663791d27a008bee"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
index 5631a46d3a..de216bad9a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
index d46051422c..fcaeed57da 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 32
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 48
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 64
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 80
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 96
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 112
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 128
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 144
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 160
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 176
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 192
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 208
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 224
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 240
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 256
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 272
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 288
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 304
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 320
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 336
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 352
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 368
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 384
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 400
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 416
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 432
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 448
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 464
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 480
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 496
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 512
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 528
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 544
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 560
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 576
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 592
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 608
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 624
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 640
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 656
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 672
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 688
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 704
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 720
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 736
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 752
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 768
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 784
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 800
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 816
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 832
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 848
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 864
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 880
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 896
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 912
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 928
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 944
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 960
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Key {
type: 6
@@ -258,22 +258,22 @@ VisualTest {
}
Frame {
msec: 992
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1008
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1024
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1040
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1056
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png
new file mode 100644
index 0000000000..03b6e5d2cb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png
new file mode 100644
index 0000000000..43565b62ac
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png
new file mode 100644
index 0000000000..f2df9b29bc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png
new file mode 100644
index 0000000000..11cf86c16e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml
new file mode 100644
index 0000000000..1c1d5ebe32
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml
@@ -0,0 +1,991 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 32
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 48
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 64
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 80
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 96
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 112
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 128
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 144
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 160
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 176
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 192
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 208
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 224
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 240
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 256
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 272
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 288
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 304
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 320
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 336
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 352
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 368
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 384
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 400
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 416
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 432
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 448
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 464
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 480
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 496
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 512
+ hash: "26a468619443250a160845a894643eb9"
+ }
+ Frame {
+ msec: 528
+ hash: "250d6cd632ad176aacbb09fa50f6c099"
+ }
+ Frame {
+ msec: 544
+ hash: "250d6cd632ad176aacbb09fa50f6c099"
+ }
+ Frame {
+ msec: 560
+ hash: "250d6cd632ad176aacbb09fa50f6c099"
+ }
+ Frame {
+ msec: 576
+ hash: "92cfcc9ee96124c5a3848f68228b286b"
+ }
+ Frame {
+ msec: 592
+ hash: "92cfcc9ee96124c5a3848f68228b286b"
+ }
+ Frame {
+ msec: 608
+ hash: "92cfcc9ee96124c5a3848f68228b286b"
+ }
+ Frame {
+ msec: 624
+ hash: "92cfcc9ee96124c5a3848f68228b286b"
+ }
+ Frame {
+ msec: 640
+ hash: "92cfcc9ee96124c5a3848f68228b286b"
+ }
+ Frame {
+ msec: 656
+ hash: "235f581c767dc4a4f6133e570126a813"
+ }
+ Frame {
+ msec: 672
+ hash: "235f581c767dc4a4f6133e570126a813"
+ }
+ Frame {
+ msec: 688
+ hash: "235f581c767dc4a4f6133e570126a813"
+ }
+ Frame {
+ msec: 704
+ hash: "235f581c767dc4a4f6133e570126a813"
+ }
+ Frame {
+ msec: 720
+ hash: "235f581c767dc4a4f6133e570126a813"
+ }
+ Frame {
+ msec: 736
+ hash: "c7d6b690224ae554f6200a5d2520ae25"
+ }
+ Frame {
+ msec: 752
+ hash: "c7d6b690224ae554f6200a5d2520ae25"
+ }
+ Frame {
+ msec: 768
+ hash: "23f5fb2275945e89bf856877b82f99de"
+ }
+ Frame {
+ msec: 784
+ hash: "23f5fb2275945e89bf856877b82f99de"
+ }
+ Frame {
+ msec: 800
+ hash: "23f5fb2275945e89bf856877b82f99de"
+ }
+ Frame {
+ msec: 816
+ hash: "23f5fb2275945e89bf856877b82f99de"
+ }
+ Frame {
+ msec: 832
+ hash: "23f5fb2275945e89bf856877b82f99de"
+ }
+ Frame {
+ msec: 848
+ hash: "99e6e3d94bb90939dacadf20f791d415"
+ }
+ Frame {
+ msec: 864
+ hash: "99e6e3d94bb90939dacadf20f791d415"
+ }
+ Frame {
+ msec: 880
+ hash: "99e6e3d94bb90939dacadf20f791d415"
+ }
+ Frame {
+ msec: 896
+ hash: "186db3738dc443d66b5b0352d7753b26"
+ }
+ Frame {
+ msec: 912
+ hash: "186db3738dc443d66b5b0352d7753b26"
+ }
+ Frame {
+ msec: 928
+ hash: "186db3738dc443d66b5b0352d7753b26"
+ }
+ Frame {
+ msec: 944
+ hash: "186db3738dc443d66b5b0352d7753b26"
+ }
+ Frame {
+ msec: 960
+ image: "elide2.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "88be0433f060832e8345a43eb681998e"
+ }
+ Frame {
+ msec: 992
+ hash: "88be0433f060832e8345a43eb681998e"
+ }
+ Frame {
+ msec: 1008
+ hash: "88be0433f060832e8345a43eb681998e"
+ }
+ Frame {
+ msec: 1024
+ hash: "88be0433f060832e8345a43eb681998e"
+ }
+ Frame {
+ msec: 1040
+ hash: "88be0433f060832e8345a43eb681998e"
+ }
+ Frame {
+ msec: 1056
+ hash: "89e8da94c1e4e1c031d58f1dd593104a"
+ }
+ Frame {
+ msec: 1072
+ hash: "89e8da94c1e4e1c031d58f1dd593104a"
+ }
+ Frame {
+ msec: 1088
+ hash: "786b7ea2e267ee6d593f18caa95be45d"
+ }
+ Frame {
+ msec: 1104
+ hash: "786b7ea2e267ee6d593f18caa95be45d"
+ }
+ Frame {
+ msec: 1120
+ hash: "786b7ea2e267ee6d593f18caa95be45d"
+ }
+ Frame {
+ msec: 1136
+ hash: "830afd40f8ee9d0c969fbd61eb68ae94"
+ }
+ Frame {
+ msec: 1152
+ hash: "830afd40f8ee9d0c969fbd61eb68ae94"
+ }
+ Frame {
+ msec: 1168
+ hash: "d00b74868c2dbddc2d5ae5ec0469f9a1"
+ }
+ Frame {
+ msec: 1184
+ hash: "d00b74868c2dbddc2d5ae5ec0469f9a1"
+ }
+ Frame {
+ msec: 1200
+ hash: "d00b74868c2dbddc2d5ae5ec0469f9a1"
+ }
+ Frame {
+ msec: 1216
+ hash: "d00b74868c2dbddc2d5ae5ec0469f9a1"
+ }
+ Frame {
+ msec: 1232
+ hash: "1508cbb70b1221ccf169ff6376df4cc9"
+ }
+ Frame {
+ msec: 1248
+ hash: "1508cbb70b1221ccf169ff6376df4cc9"
+ }
+ Frame {
+ msec: 1264
+ hash: "1508cbb70b1221ccf169ff6376df4cc9"
+ }
+ Frame {
+ msec: 1280
+ hash: "490d7425d117ebe23e3e3637fd3e7b09"
+ }
+ Frame {
+ msec: 1296
+ hash: "490d7425d117ebe23e3e3637fd3e7b09"
+ }
+ Frame {
+ msec: 1312
+ hash: "490d7425d117ebe23e3e3637fd3e7b09"
+ }
+ Frame {
+ msec: 1328
+ hash: "490d7425d117ebe23e3e3637fd3e7b09"
+ }
+ Frame {
+ msec: 1344
+ hash: "490d7425d117ebe23e3e3637fd3e7b09"
+ }
+ Frame {
+ msec: 1360
+ hash: "048b3223ca262f5f3271f4ad81fbe41f"
+ }
+ Frame {
+ msec: 1376
+ hash: "048b3223ca262f5f3271f4ad81fbe41f"
+ }
+ Frame {
+ msec: 1392
+ hash: "048b3223ca262f5f3271f4ad81fbe41f"
+ }
+ Frame {
+ msec: 1408
+ hash: "048b3223ca262f5f3271f4ad81fbe41f"
+ }
+ Frame {
+ msec: 1424
+ hash: "048b3223ca262f5f3271f4ad81fbe41f"
+ }
+ Frame {
+ msec: 1440
+ hash: "4e91391c852167a04c6224ef5426b17c"
+ }
+ Frame {
+ msec: 1456
+ hash: "4e91391c852167a04c6224ef5426b17c"
+ }
+ Frame {
+ msec: 1472
+ hash: "4e91391c852167a04c6224ef5426b17c"
+ }
+ Frame {
+ msec: 1488
+ hash: "4e91391c852167a04c6224ef5426b17c"
+ }
+ Frame {
+ msec: 1504
+ hash: "4e91391c852167a04c6224ef5426b17c"
+ }
+ Frame {
+ msec: 1520
+ hash: "08e969be0cd428140cd079f5f6338b4f"
+ }
+ Frame {
+ msec: 1536
+ hash: "08e969be0cd428140cd079f5f6338b4f"
+ }
+ Frame {
+ msec: 1552
+ hash: "08e969be0cd428140cd079f5f6338b4f"
+ }
+ Frame {
+ msec: 1568
+ hash: "08e969be0cd428140cd079f5f6338b4f"
+ }
+ Frame {
+ msec: 1584
+ hash: "08e969be0cd428140cd079f5f6338b4f"
+ }
+ Frame {
+ msec: 1600
+ hash: "458e10bb1d38ef8f1248be959a3ac8bc"
+ }
+ Frame {
+ msec: 1616
+ hash: "458e10bb1d38ef8f1248be959a3ac8bc"
+ }
+ Frame {
+ msec: 1632
+ hash: "458e10bb1d38ef8f1248be959a3ac8bc"
+ }
+ Frame {
+ msec: 1648
+ hash: "fde9eccf9fa722d4321bd26ead3d6c5e"
+ }
+ Frame {
+ msec: 1664
+ hash: "fde9eccf9fa722d4321bd26ead3d6c5e"
+ }
+ Frame {
+ msec: 1680
+ hash: "fde9eccf9fa722d4321bd26ead3d6c5e"
+ }
+ Frame {
+ msec: 1696
+ hash: "fde9eccf9fa722d4321bd26ead3d6c5e"
+ }
+ Frame {
+ msec: 1712
+ hash: "fde9eccf9fa722d4321bd26ead3d6c5e"
+ }
+ Frame {
+ msec: 1728
+ hash: "68ac9747d1b36351ac6677336d4e0bfd"
+ }
+ Frame {
+ msec: 1744
+ hash: "68ac9747d1b36351ac6677336d4e0bfd"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1760
+ hash: "68ac9747d1b36351ac6677336d4e0bfd"
+ }
+ Frame {
+ msec: 1776
+ hash: "015658eeb53ce6937d0a0b3941cea138"
+ }
+ Frame {
+ msec: 1792
+ hash: "015658eeb53ce6937d0a0b3941cea138"
+ }
+ Frame {
+ msec: 1808
+ hash: "015658eeb53ce6937d0a0b3941cea138"
+ }
+ Frame {
+ msec: 1824
+ hash: "015658eeb53ce6937d0a0b3941cea138"
+ }
+ Frame {
+ msec: 1840
+ hash: "015658eeb53ce6937d0a0b3941cea138"
+ }
+ Frame {
+ msec: 1856
+ hash: "4720bcf54fce0c680a983113dc009104"
+ }
+ Frame {
+ msec: 1872
+ hash: "4720bcf54fce0c680a983113dc009104"
+ }
+ Frame {
+ msec: 1888
+ hash: "4720bcf54fce0c680a983113dc009104"
+ }
+ Frame {
+ msec: 1904
+ hash: "4720bcf54fce0c680a983113dc009104"
+ }
+ Frame {
+ msec: 1920
+ image: "elide2.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "03123bcb0f4ff032257415f713a5873c"
+ }
+ Frame {
+ msec: 1952
+ hash: "03123bcb0f4ff032257415f713a5873c"
+ }
+ Frame {
+ msec: 1968
+ hash: "03123bcb0f4ff032257415f713a5873c"
+ }
+ Frame {
+ msec: 1984
+ hash: "03123bcb0f4ff032257415f713a5873c"
+ }
+ Frame {
+ msec: 2000
+ hash: "e93d314c5a19e771282bf09ff0983917"
+ }
+ Frame {
+ msec: 2016
+ hash: "e93d314c5a19e771282bf09ff0983917"
+ }
+ Frame {
+ msec: 2032
+ hash: "e93d314c5a19e771282bf09ff0983917"
+ }
+ Frame {
+ msec: 2048
+ hash: "e93d314c5a19e771282bf09ff0983917"
+ }
+ Frame {
+ msec: 2064
+ hash: "e93d314c5a19e771282bf09ff0983917"
+ }
+ Frame {
+ msec: 2080
+ hash: "877e76006891001e574b39f60249ec8a"
+ }
+ Frame {
+ msec: 2096
+ hash: "877e76006891001e574b39f60249ec8a"
+ }
+ Frame {
+ msec: 2112
+ hash: "877e76006891001e574b39f60249ec8a"
+ }
+ Frame {
+ msec: 2128
+ hash: "04213ba6fc23600c62c49bdd63725b3d"
+ }
+ Frame {
+ msec: 2144
+ hash: "04213ba6fc23600c62c49bdd63725b3d"
+ }
+ Frame {
+ msec: 2160
+ hash: "04213ba6fc23600c62c49bdd63725b3d"
+ }
+ Frame {
+ msec: 2176
+ hash: "04213ba6fc23600c62c49bdd63725b3d"
+ }
+ Frame {
+ msec: 2192
+ hash: "605fbd44c23d135d809e987fde15caf0"
+ }
+ Frame {
+ msec: 2208
+ hash: "605fbd44c23d135d809e987fde15caf0"
+ }
+ Frame {
+ msec: 2224
+ hash: "138d9fe345628797df8af84b71e76717"
+ }
+ Frame {
+ msec: 2240
+ hash: "138d9fe345628797df8af84b71e76717"
+ }
+ Frame {
+ msec: 2256
+ hash: "138d9fe345628797df8af84b71e76717"
+ }
+ Frame {
+ msec: 2272
+ hash: "138d9fe345628797df8af84b71e76717"
+ }
+ Frame {
+ msec: 2288
+ hash: "138d9fe345628797df8af84b71e76717"
+ }
+ Frame {
+ msec: 2304
+ hash: "1a160138dbed69dd2fc6cdc335c39332"
+ }
+ Frame {
+ msec: 2320
+ hash: "1a160138dbed69dd2fc6cdc335c39332"
+ }
+ Frame {
+ msec: 2336
+ hash: "a40edd45d19a09b7b5b6601c2e4789ba"
+ }
+ Frame {
+ msec: 2352
+ hash: "a40edd45d19a09b7b5b6601c2e4789ba"
+ }
+ Frame {
+ msec: 2368
+ hash: "a40edd45d19a09b7b5b6601c2e4789ba"
+ }
+ Frame {
+ msec: 2384
+ hash: "a40edd45d19a09b7b5b6601c2e4789ba"
+ }
+ Frame {
+ msec: 2400
+ hash: "a40edd45d19a09b7b5b6601c2e4789ba"
+ }
+ Frame {
+ msec: 2416
+ hash: "f8c24070f98d456925ce5fb5519ef20e"
+ }
+ Frame {
+ msec: 2432
+ hash: "f8c24070f98d456925ce5fb5519ef20e"
+ }
+ Frame {
+ msec: 2448
+ hash: "f8c24070f98d456925ce5fb5519ef20e"
+ }
+ Frame {
+ msec: 2464
+ hash: "f8c24070f98d456925ce5fb5519ef20e"
+ }
+ Frame {
+ msec: 2480
+ hash: "f8c24070f98d456925ce5fb5519ef20e"
+ }
+ Frame {
+ msec: 2496
+ hash: "f383c8fc8764f8615937fcbe18a881cb"
+ }
+ Frame {
+ msec: 2512
+ hash: "f383c8fc8764f8615937fcbe18a881cb"
+ }
+ Frame {
+ msec: 2528
+ hash: "f383c8fc8764f8615937fcbe18a881cb"
+ }
+ Frame {
+ msec: 2544
+ hash: "f383c8fc8764f8615937fcbe18a881cb"
+ }
+ Frame {
+ msec: 2560
+ hash: "f383c8fc8764f8615937fcbe18a881cb"
+ }
+ Frame {
+ msec: 2576
+ hash: "98355e4087b07e4bf85bd9dd6b2594e2"
+ }
+ Frame {
+ msec: 2592
+ hash: "98355e4087b07e4bf85bd9dd6b2594e2"
+ }
+ Frame {
+ msec: 2608
+ hash: "98355e4087b07e4bf85bd9dd6b2594e2"
+ }
+ Frame {
+ msec: 2624
+ hash: "98355e4087b07e4bf85bd9dd6b2594e2"
+ }
+ Frame {
+ msec: 2640
+ hash: "098f7051d2bc8b159a3c358c99ade1e5"
+ }
+ Frame {
+ msec: 2656
+ hash: "098f7051d2bc8b159a3c358c99ade1e5"
+ }
+ Frame {
+ msec: 2672
+ hash: "098f7051d2bc8b159a3c358c99ade1e5"
+ }
+ Frame {
+ msec: 2688
+ hash: "fa588455c73bfd3d14ee322580d95015"
+ }
+ Frame {
+ msec: 2704
+ hash: "fa588455c73bfd3d14ee322580d95015"
+ }
+ Frame {
+ msec: 2720
+ hash: "fa588455c73bfd3d14ee322580d95015"
+ }
+ Frame {
+ msec: 2736
+ hash: "fa588455c73bfd3d14ee322580d95015"
+ }
+ Frame {
+ msec: 2752
+ hash: "fa588455c73bfd3d14ee322580d95015"
+ }
+ Frame {
+ msec: 2768
+ hash: "ed69a2ab8e66fa397190b35cb942ec2d"
+ }
+ Frame {
+ msec: 2784
+ hash: "ed69a2ab8e66fa397190b35cb942ec2d"
+ }
+ Frame {
+ msec: 2800
+ hash: "ed69a2ab8e66fa397190b35cb942ec2d"
+ }
+ Frame {
+ msec: 2816
+ hash: "ed69a2ab8e66fa397190b35cb942ec2d"
+ }
+ Frame {
+ msec: 2832
+ hash: "ed69a2ab8e66fa397190b35cb942ec2d"
+ }
+ Frame {
+ msec: 2848
+ hash: "905d42c34198abdc68a3c6f69bfbd293"
+ }
+ Frame {
+ msec: 2864
+ hash: "905d42c34198abdc68a3c6f69bfbd293"
+ }
+ Frame {
+ msec: 2880
+ image: "elide2.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "2e796a963fee85d51be536a00baa0c45"
+ }
+ Frame {
+ msec: 2912
+ hash: "2e796a963fee85d51be536a00baa0c45"
+ }
+ Frame {
+ msec: 2928
+ hash: "2e796a963fee85d51be536a00baa0c45"
+ }
+ Frame {
+ msec: 2944
+ hash: "b73b94832ede92794187b9ed452f96e0"
+ }
+ Frame {
+ msec: 2960
+ hash: "b73b94832ede92794187b9ed452f96e0"
+ }
+ Frame {
+ msec: 2976
+ hash: "b73b94832ede92794187b9ed452f96e0"
+ }
+ Frame {
+ msec: 2992
+ hash: "b73b94832ede92794187b9ed452f96e0"
+ }
+ Frame {
+ msec: 3008
+ hash: "b73b94832ede92794187b9ed452f96e0"
+ }
+ Frame {
+ msec: 3024
+ hash: "4f000e957cd4c7ef4845855088801c2d"
+ }
+ Frame {
+ msec: 3040
+ hash: "4f000e957cd4c7ef4845855088801c2d"
+ }
+ Frame {
+ msec: 3056
+ hash: "4f000e957cd4c7ef4845855088801c2d"
+ }
+ Frame {
+ msec: 3072
+ hash: "4f000e957cd4c7ef4845855088801c2d"
+ }
+ Frame {
+ msec: 3088
+ hash: "4f000e957cd4c7ef4845855088801c2d"
+ }
+ Frame {
+ msec: 3104
+ hash: "a432c8b664352e585f732813df2e861f"
+ }
+ Frame {
+ msec: 3120
+ hash: "a432c8b664352e585f732813df2e861f"
+ }
+ Frame {
+ msec: 3136
+ hash: "a432c8b664352e585f732813df2e861f"
+ }
+ Frame {
+ msec: 3152
+ hash: "e06abd91449d3b5d18582b9da2d20c97"
+ }
+ Frame {
+ msec: 3168
+ hash: "e06abd91449d3b5d18582b9da2d20c97"
+ }
+ Frame {
+ msec: 3184
+ hash: "e06abd91449d3b5d18582b9da2d20c97"
+ }
+ Frame {
+ msec: 3200
+ hash: "c4cecc3832935d59d9808ea70385632d"
+ }
+ Frame {
+ msec: 3216
+ hash: "c4cecc3832935d59d9808ea70385632d"
+ }
+ Frame {
+ msec: 3232
+ hash: "c4cecc3832935d59d9808ea70385632d"
+ }
+ Frame {
+ msec: 3248
+ hash: "56942f99b8b2a6c491b8635ae5619a4f"
+ }
+ Frame {
+ msec: 3264
+ hash: "56942f99b8b2a6c491b8635ae5619a4f"
+ }
+ Frame {
+ msec: 3280
+ hash: "56942f99b8b2a6c491b8635ae5619a4f"
+ }
+ Frame {
+ msec: 3296
+ hash: "56942f99b8b2a6c491b8635ae5619a4f"
+ }
+ Frame {
+ msec: 3312
+ hash: "a3bf780a2ae09fb3fee6215a24b8bb53"
+ }
+ Frame {
+ msec: 3328
+ hash: "a3bf780a2ae09fb3fee6215a24b8bb53"
+ }
+ Frame {
+ msec: 3344
+ hash: "a3bf780a2ae09fb3fee6215a24b8bb53"
+ }
+ Frame {
+ msec: 3360
+ hash: "a3bf780a2ae09fb3fee6215a24b8bb53"
+ }
+ Frame {
+ msec: 3376
+ hash: "822cff91269181ddb5a3b24ca0227583"
+ }
+ Frame {
+ msec: 3392
+ hash: "822cff91269181ddb5a3b24ca0227583"
+ }
+ Frame {
+ msec: 3408
+ hash: "822cff91269181ddb5a3b24ca0227583"
+ }
+ Frame {
+ msec: 3424
+ hash: "822cff91269181ddb5a3b24ca0227583"
+ }
+ Frame {
+ msec: 3440
+ hash: "20f06bbb130e81d6eb2612aa79bb7968"
+ }
+ Frame {
+ msec: 3456
+ hash: "20f06bbb130e81d6eb2612aa79bb7968"
+ }
+ Frame {
+ msec: 3472
+ hash: "fcb03904d0e628f95c9b665c65b10266"
+ }
+ Frame {
+ msec: 3488
+ hash: "fcb03904d0e628f95c9b665c65b10266"
+ }
+ Frame {
+ msec: 3504
+ hash: "fcb03904d0e628f95c9b665c65b10266"
+ }
+ Frame {
+ msec: 3520
+ hash: "fcb03904d0e628f95c9b665c65b10266"
+ }
+ Frame {
+ msec: 3536
+ hash: "fcb03904d0e628f95c9b665c65b10266"
+ }
+ Frame {
+ msec: 3552
+ hash: "1c17eaf20f5c16fea97a263d2aad1918"
+ }
+ Frame {
+ msec: 3568
+ hash: "1c17eaf20f5c16fea97a263d2aad1918"
+ }
+ Frame {
+ msec: 3584
+ hash: "1c17eaf20f5c16fea97a263d2aad1918"
+ }
+ Frame {
+ msec: 3600
+ hash: "1c17eaf20f5c16fea97a263d2aad1918"
+ }
+ Frame {
+ msec: 3616
+ hash: "1c17eaf20f5c16fea97a263d2aad1918"
+ }
+ Frame {
+ msec: 3632
+ hash: "3c91d205312aefc4af746cea413c9344"
+ }
+ Frame {
+ msec: 3648
+ hash: "3c91d205312aefc4af746cea413c9344"
+ }
+ Frame {
+ msec: 3664
+ hash: "3c91d205312aefc4af746cea413c9344"
+ }
+ Frame {
+ msec: 3680
+ hash: "3c91d205312aefc4af746cea413c9344"
+ }
+ Frame {
+ msec: 3696
+ hash: "3c91d205312aefc4af746cea413c9344"
+ }
+ Frame {
+ msec: 3712
+ hash: "6cb467aa12d6ae76edbfa324c0ad26d1"
+ }
+ Frame {
+ msec: 3728
+ hash: "6cb467aa12d6ae76edbfa324c0ad26d1"
+ }
+ Frame {
+ msec: 3744
+ hash: "c8ec3da9c651eadf4aa8a4051d326f91"
+ }
+ Frame {
+ msec: 3760
+ hash: "c8ec3da9c651eadf4aa8a4051d326f91"
+ }
+ Frame {
+ msec: 3776
+ hash: "c8ec3da9c651eadf4aa8a4051d326f91"
+ }
+ Frame {
+ msec: 3792
+ hash: "6cea311c6007463480b71ffd66074557"
+ }
+ Frame {
+ msec: 3808
+ hash: "6cea311c6007463480b71ffd66074557"
+ }
+ Frame {
+ msec: 3824
+ hash: "6cea311c6007463480b71ffd66074557"
+ }
+ Frame {
+ msec: 3840
+ image: "elide2.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "6e800f4aacf0096f34acdf13678cab25"
+ }
+ Frame {
+ msec: 3872
+ hash: "6e800f4aacf0096f34acdf13678cab25"
+ }
+ Frame {
+ msec: 3888
+ hash: "fc336a43eaf9974cd6ad82bfee128ead"
+ }
+ Frame {
+ msec: 3904
+ hash: "fc336a43eaf9974cd6ad82bfee128ead"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
index 6e2b625daa..7980f23c01 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png
new file mode 100644
index 0000000000..cbfae6e27f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png
new file mode 100644
index 0000000000..5e2527ee7f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png
new file mode 100644
index 0000000000..901551eca4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png
new file mode 100644
index 0000000000..32a5ba2eff
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
index ee06b1a998..3871f9104d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "873e914454b7a040b05649ebd1a2f8c5"
+ hash: "51e3a7214bf2fd98108de683ae650b05"
}
Frame {
msec: 32
- hash: "7682a4f1e361ca252da9713734a598e8"
+ hash: "72bd0f47e179c5356d4a0575939b6c05"
}
Frame {
msec: 48
- hash: "fa8884b550c8df872f96b61557163bcf"
+ hash: "9229869bf23fe10394ffb6bacc38d2b5"
}
Frame {
msec: 64
- hash: "b84ecf9e38f126c3e32defee831d9462"
+ hash: "4f75c0a0b7a04c8abdf2768a819b6c14"
}
Frame {
msec: 80
- hash: "21cc08f22d1f1fcb38b27a3a4259debe"
+ hash: "514a9a762cd0356cbcecb93e73c81534"
}
Frame {
msec: 96
- hash: "93bdfeab813e25e85917f49c0d5f1314"
+ hash: "68436451f6f3ee981bf8851944b82dda"
}
Frame {
msec: 112
- hash: "5f03c252602e60fe19879945fa77c203"
+ hash: "fa33b582c0890bc9852f3a6c80864988"
}
Frame {
msec: 128
- hash: "f0b2079f6c512bf80989ebfdbec4cfd8"
+ hash: "f65928b270f12f2917193ba70d9388ee"
}
Frame {
msec: 144
- hash: "9e7bb12d5b7605fc1d78ed9b2a549527"
+ hash: "755d1421a9b2bf3be9d665f5f8d6f767"
}
Frame {
msec: 160
- hash: "242bbbe6da87708c92fd47607ecb789d"
+ hash: "dbec63b93f3617440317f7ddc2fbd6fa"
}
Frame {
msec: 176
- hash: "f1db5c3a230b4d3e2e1dfefe6bf032a1"
+ hash: "1ec885da7efc3d71904c79a4a4768f27"
}
Frame {
msec: 192
- hash: "a416e820efd8e173cc52372218513e33"
+ hash: "a20981af2ce8e82a6c1825e438dfd815"
}
Frame {
msec: 208
- hash: "df711ab70c6087f8138fded16167f069"
+ hash: "3c951028229d8d6a3a0faa18f21afbe6"
}
Frame {
msec: 224
- hash: "fb28eb2eeccfab28299640ef996c1115"
+ hash: "8354d4c9bd5ccb2eae46cdaf3fd337bb"
}
Frame {
msec: 240
- hash: "c72c6d79a50dd7147f6b33784880eb36"
+ hash: "05880d6d76fa8dc421af4d06cbdd4448"
}
Frame {
msec: 256
- hash: "4421027e65e95f98499ca53c57220ede"
+ hash: "370e33f141d0a8396b5c2bb279f9bb67"
}
Frame {
msec: 272
- hash: "b7fbfb90d8cc167809e8e846d9021b4b"
+ hash: "663b162ce447eee0f2194a92b463d6fe"
}
Frame {
msec: 288
- hash: "004614b1bf18e9aa78e78509c4f289aa"
+ hash: "618c53edf13177d433fdcca5b0cedfaa"
}
Frame {
msec: 304
- hash: "1792bbd8b69bae1d92fed2a6bcfe0187"
+ hash: "ce96d70a89f7701ce069e93c192196ed"
}
Frame {
msec: 320
- hash: "957a8b95d6e85885d854b8eb1db10b04"
+ hash: "5826b56af5a4670d479c5f8e649d29d4"
}
Frame {
msec: 336
- hash: "d00c3e4d6d8e8d04b949840c28d73a33"
+ hash: "5aaf7fc6295d4ab6377bd77e91f73ae8"
}
Frame {
msec: 352
- hash: "2b79feaa62d773d92d8a684685b2004c"
+ hash: "26cb0b5e60de63d582b4c4d1c4120746"
}
Frame {
msec: 368
- hash: "ef2f11b187028de0c56b23db3168fbc8"
+ hash: "41b6c379d7fb678abbcccde7bca7f243"
}
Frame {
msec: 384
- hash: "3a489a96aaeca80355313198b935691d"
+ hash: "46668408674d3e94048375152f991427"
}
Frame {
msec: 400
- hash: "389f1798f900795a8686c38ace755974"
+ hash: "c966370fbbdd8b32cafc06cdc551e020"
}
Frame {
msec: 416
- hash: "34fc20be52fe3843420819b9adb90b22"
+ hash: "025aab500846dab22713ccada8f93a51"
}
Frame {
msec: 432
- hash: "fa715c5b6640eafe204bf3b8095c74b9"
+ hash: "a6a68f04ea34fba46025a1415dc46bbb"
}
Frame {
msec: 448
- hash: "8e8315edcf23167ac58228b8c28b43e6"
+ hash: "1afc5b8b094056695b09088d13ab1612"
}
Frame {
msec: 464
- hash: "c18e82038f57dd869112cb1be14e4cfe"
+ hash: "efff72e37e0c23e0cd51169d0c06c065"
}
Frame {
msec: 480
- hash: "3f07e95b09e39f2e5d93216850f4a4d9"
+ hash: "ed425b23ea5340ac5b176b4fbb377fe3"
}
Frame {
msec: 496
- hash: "20f0e6eaeac04d6f93565adfab485218"
+ hash: "9df20063ec67aa06e44bf292f05469a6"
}
Frame {
msec: 512
- hash: "e3f66d1dfe88dd868a54a8493828ef5f"
+ hash: "d3400c655403d00df7e202a42b75476d"
}
Frame {
msec: 528
- hash: "d39d34f63e1b29c187249cb388552b38"
+ hash: "336fd54ae209ba7c28a69939a021341b"
}
Frame {
msec: 544
- hash: "5d2e8df5003732f3b53fff4aaddea06c"
+ hash: "621c3b64fc6214b8a48c216d46d5615d"
}
Frame {
msec: 560
- hash: "35c3aa2dae481a8f817d849b3f3151f2"
+ hash: "5f9ac0b6830dbfa4cba83adc0cce232f"
}
Frame {
msec: 576
- hash: "966b78018879224948b4d85fe73d7985"
+ hash: "2b829253ed85f5ffe5e3867accadd218"
}
Frame {
msec: 592
- hash: "0db067bf9debc3f36dd539cf83652fb8"
+ hash: "61325a770fb501d88f6bb2700294ca44"
}
Frame {
msec: 608
- hash: "ea1c3249ffd2439533907ceaeaafbc56"
+ hash: "807dea2954afa902694b1ef98ef5f2c1"
}
Frame {
msec: 624
- hash: "da85c0e14b95ca9a729984b67ebd52ad"
+ hash: "43edc754d8155c198dd1db6d55d25abf"
}
Frame {
msec: 640
- hash: "5c26ae844ac52dbe131fed0638787aac"
+ hash: "4c800c2b8ab7b1500e80f50ee925b73b"
}
Frame {
msec: 656
- hash: "4b09c23ad624db80afcb2a6c1d5ddb96"
+ hash: "17b60d375c02b55923b94b147015bc7d"
}
Frame {
msec: 672
- hash: "9995deb3d22b418a19093b4b988b3fcc"
+ hash: "591e79b034700b514c84894e0fc27e27"
}
Frame {
msec: 688
- hash: "77e53358f2d4392d0ba988187e7e272c"
+ hash: "61624e674a0994cedae75b2e56958612"
}
Frame {
msec: 704
- hash: "3fbbb73e790cf4a0583531fe1580f761"
+ hash: "7f662b3978191ef5812ccad4d1d687b8"
}
Frame {
msec: 720
- hash: "9d562e141095a258ee61463e644d9889"
+ hash: "d07560950476d08ce51661356ea53753"
}
Frame {
msec: 736
- hash: "d05633ca49f96bf327bed5c9c0f6ac98"
+ hash: "1cbbf48c54d373bbb3fdfe42fe8396b7"
}
Frame {
msec: 752
- hash: "34c38e40e831dbede8fa83de31ed76aa"
+ hash: "f95205fb90069a13ab395d7a3e1775ad"
}
Frame {
msec: 768
- hash: "288e52c8be54f4914f687cef4ce1f24a"
+ hash: "f40a57afb29c1cc161f71a1b134a5d0d"
}
Frame {
msec: 784
- hash: "0b8b744aaf67e8b17fa459bb0ffb6db5"
+ hash: "3311a6a6197df79e5fcf2a1729368618"
}
Frame {
msec: 800
- hash: "273dbe3e8c21bfeafa516d07778928c8"
+ hash: "597ae977e27d0cac57b1fc8b0564a15b"
}
Frame {
msec: 816
- hash: "ef94ee1885287c72fa78038547d98b96"
+ hash: "aca451b1a1e8f727315f8d13d4b21aec"
}
Frame {
msec: 832
- hash: "965e6387672319ac04fdc42768e581f1"
+ hash: "c0437b88a05a7aa1b7b645b5151773d7"
}
Frame {
msec: 848
- hash: "95553d8aaece94c7017e57b03cd46c9a"
+ hash: "be8659747f0b6e76acaf17851b599b7b"
}
Frame {
msec: 864
- hash: "bdaf35b920e5b08b8639d452afd2d51e"
+ hash: "2b0033b95e853368cff2d6032ff707f6"
}
Frame {
msec: 880
- hash: "0ed16f00e89327dc8679bec42179c4ce"
+ hash: "12a747305311ea86ce681a3ff56f394f"
}
Frame {
msec: 896
- hash: "8c93e0ac399e09e98e34b90654e0e42a"
+ hash: "00b041e67e3ac3e1678eae72580107f7"
}
Frame {
msec: 912
- hash: "93798fbb33adb6c813018757cfa34017"
+ hash: "09f69db7a724401388e4b7fefeb3df89"
}
Frame {
msec: 928
- hash: "db4d7581e9a1f082a2c29ef7482a7893"
+ hash: "15e96d009e101d6869d1cc69e0a9092a"
}
Frame {
msec: 944
- hash: "67e074c1e083334de84a3549f4ee9ca4"
+ hash: "b1a900f6ca81bf556ef126211afb8b0c"
}
Frame {
msec: 960
@@ -246,58 +246,1078 @@ VisualTest {
}
Frame {
msec: 976
- hash: "b1122c815a755c9988bcf03a3f7d7d6d"
+ hash: "87ea64b511b6d990f66cd4e3a141caf2"
}
Frame {
msec: 992
- hash: "31148bae6653bdc3f1827d06de845663"
+ hash: "cc5281bca844570d36ab193ba074dfcb"
}
Frame {
msec: 1008
- hash: "812428a944086ca46e102891964dac69"
+ hash: "cf430f604050734c455206b974587d76"
}
Frame {
msec: 1024
- hash: "ee7bb66bd7e8623325200ac994f8b41a"
+ hash: "b10b053a551dda58e626062b6721009f"
}
Frame {
msec: 1040
- hash: "6bd21a98e5c373a2c78334a0255e7750"
+ hash: "0ab24cb42bf4db645c779a48a060919d"
}
Frame {
msec: 1056
- hash: "2e8e1eea14068b0e82464ed52ec1ab7a"
+ hash: "0cba8d41e70c3ab23c55d02328954fd3"
}
Frame {
msec: 1072
- hash: "6dca5756e20eeb778e31d7b602ce77d7"
+ hash: "1f25027c81418c8f511d3d866948ea97"
}
Frame {
msec: 1088
- hash: "3cbb6700b9e30864a2b1e3d4d71d2a78"
+ hash: "d4ef5c5de73e515ea3eb841d87d3916c"
}
Frame {
msec: 1104
- hash: "c4d0230d2c4f73191a514e5df4c0b083"
+ hash: "bbdb93e72c966b3801cbc27a42f0e29f"
}
Frame {
msec: 1120
- hash: "a33df967fe43151dfc503d2ac78f8ca8"
+ hash: "f2b12153d449e6b2476af44272b6d54f"
}
Frame {
msec: 1136
- hash: "0c7ff101efe60b600cacaf8d04d79053"
+ hash: "5605809550a9c5151d3f6eb04de76587"
}
Frame {
msec: 1152
- hash: "d246cfb75d89b9666877860aaf45ba60"
+ hash: "c887e88030c58144e6bb253e369b3bac"
}
Frame {
msec: 1168
- hash: "1130998aa2618a29ec6bc4b9219eedfa"
+ hash: "9d9f4aaea9d55118fac9cf78e6785ef7"
}
Frame {
msec: 1184
- hash: "741dd83003633bbf8d28c2d4ddd8a2d0"
+ hash: "08dcb6457d8556aec27fdd38095f9058"
+ }
+ Frame {
+ msec: 1200
+ hash: "45052b296f95976b22d5933ced4e259c"
+ }
+ Frame {
+ msec: 1216
+ hash: "3bae979929efc4e3e315f3b00eb8da49"
+ }
+ Frame {
+ msec: 1232
+ hash: "af52455d0e2d8e30a4c27aaa58d61702"
+ }
+ Frame {
+ msec: 1248
+ hash: "760a6b74a31adb04f220e4bb7457bc2b"
+ }
+ Frame {
+ msec: 1264
+ hash: "bfb0d7dab25007c20a45f98f69fa97ff"
+ }
+ Frame {
+ msec: 1280
+ hash: "eac34dc1254c606a7b866e25967796dd"
+ }
+ Frame {
+ msec: 1296
+ hash: "f2577d86f3b90ff49339e9eb208b2b55"
+ }
+ Frame {
+ msec: 1312
+ hash: "11beecfe87619f1c90ab1aa79e5cc0d9"
+ }
+ Frame {
+ msec: 1328
+ hash: "8f721400a444750f11a9f6a5b1f9b1f1"
+ }
+ Frame {
+ msec: 1344
+ hash: "be5082d93788b91f251a174b2889b58f"
+ }
+ Frame {
+ msec: 1360
+ hash: "22527c1c29923577e90f506745230573"
+ }
+ Frame {
+ msec: 1376
+ hash: "a6ab98f02be95359a939a7841123ef17"
+ }
+ Frame {
+ msec: 1392
+ hash: "c23c3352261f3c94e5f329b6a872dda2"
+ }
+ Frame {
+ msec: 1408
+ hash: "0b4987678b416bafd922c47d2b540fe1"
+ }
+ Frame {
+ msec: 1424
+ hash: "8e3335e136e7ff01df146dcba4ae49c2"
+ }
+ Frame {
+ msec: 1440
+ hash: "28d20b81feb20325613d5a5d16238eb3"
+ }
+ Frame {
+ msec: 1456
+ hash: "04405979c68d1354f8b3fff03ad5ff5f"
+ }
+ Frame {
+ msec: 1472
+ hash: "51929671bccb25ec5fd9d6d6df29483b"
+ }
+ Frame {
+ msec: 1488
+ hash: "4bc938a8620242ca07e73adcd0219934"
+ }
+ Frame {
+ msec: 1504
+ hash: "73f5ddd56c836813a2754cefcddcecaa"
+ }
+ Frame {
+ msec: 1520
+ hash: "08ab374f2911207dddddf4cf18d26769"
+ }
+ Frame {
+ msec: 1536
+ hash: "0a91b4c009079159340040067dfc0cc8"
+ }
+ Frame {
+ msec: 1552
+ hash: "bdd54a222ba5bc0deb97e26071732e68"
+ }
+ Frame {
+ msec: 1568
+ hash: "1b75d3b34f7fd74451d22d03dd7e4e65"
+ }
+ Frame {
+ msec: 1584
+ hash: "a34ad1878b0bd1316d4ceb0c22709c6f"
+ }
+ Frame {
+ msec: 1600
+ hash: "8a25b513f0c6371e81065f3f0594ddfe"
+ }
+ Frame {
+ msec: 1616
+ hash: "09063acfe8bf1cbc521cd84ecd718930"
+ }
+ Frame {
+ msec: 1632
+ hash: "6607cab8e4b4b6a1671cdf63582b625b"
+ }
+ Frame {
+ msec: 1648
+ hash: "5662b3252b5dd640ce9055ff11c11e47"
+ }
+ Frame {
+ msec: 1664
+ hash: "2267ff61b2af23a15d6d5263d52c3ecb"
+ }
+ Frame {
+ msec: 1680
+ hash: "99d86069a3ea0c49a8f37f5124f2850b"
+ }
+ Frame {
+ msec: 1696
+ hash: "acfa238bcb12c6197acb990aa4ddc03f"
+ }
+ Frame {
+ msec: 1712
+ hash: "6c4c804f6e0e46fcfe25b04836db80f7"
+ }
+ Frame {
+ msec: 1728
+ hash: "5c1868d36ad767cd9923fab8605220dd"
+ }
+ Frame {
+ msec: 1744
+ hash: "a1279c79d3be6a62b5aebff4c66971e5"
+ }
+ Frame {
+ msec: 1760
+ hash: "f1d9f03f77b224ec355d4b5ae1ef8551"
+ }
+ Frame {
+ msec: 1776
+ hash: "3ad06495838986ef570f1c0f9d9f4a52"
+ }
+ Frame {
+ msec: 1792
+ hash: "e4122ccbc4da03797738a949654fb555"
+ }
+ Frame {
+ msec: 1808
+ hash: "0178b04a0c2e91b5a409c28a2b3c4cca"
+ }
+ Frame {
+ msec: 1824
+ hash: "04b3fdd361985d1f108551dafca851f6"
+ }
+ Frame {
+ msec: 1840
+ hash: "f7e8e73dcb009fc160122b64f2e4857e"
+ }
+ Frame {
+ msec: 1856
+ hash: "e8575db453082b6601107b20ec15fb86"
+ }
+ Frame {
+ msec: 1872
+ hash: "18b8bc3993275a0a1e096084ada871f0"
+ }
+ Frame {
+ msec: 1888
+ hash: "1a1229d6c945cc1a0df7ca4ac61dfff0"
+ }
+ Frame {
+ msec: 1904
+ hash: "bf43232fccfedfca1cac48206cacfaf2"
+ }
+ Frame {
+ msec: 1920
+ image: "multilength.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "c0c2396b5e5dc36853a28d6c5a6274f3"
+ }
+ Frame {
+ msec: 1952
+ hash: "9b49951115444bf17e96ded2837e5eff"
+ }
+ Frame {
+ msec: 1968
+ hash: "422d01a547ce612233bfa5e85bf73c7f"
+ }
+ Frame {
+ msec: 1984
+ hash: "fe2cb2fb4aefb5da1cf27e709a0acd5f"
+ }
+ Frame {
+ msec: 2000
+ hash: "e106fbd81f7a057e3bf5d8a42c92e4f1"
+ }
+ Frame {
+ msec: 2016
+ hash: "b1b60361a929ccb109a9e9e8a10065d0"
+ }
+ Frame {
+ msec: 2032
+ hash: "35858a35e56a48804d3cedda908ca2eb"
+ }
+ Frame {
+ msec: 2048
+ hash: "a8fb42ed2c55d3396133acf28064283c"
+ }
+ Frame {
+ msec: 2064
+ hash: "479291530784175abc7d564ac2319d2a"
+ }
+ Frame {
+ msec: 2080
+ hash: "75e7b2930143d610659cf42a3604374e"
+ }
+ Frame {
+ msec: 2096
+ hash: "3d9438b11c89d76353943e5d2f656e7d"
+ }
+ Frame {
+ msec: 2112
+ hash: "cb23d7c508c8e3169bab39aaa4de01fd"
+ }
+ Frame {
+ msec: 2128
+ hash: "bc7805e391bc272a837c9b1df9cf8f77"
+ }
+ Frame {
+ msec: 2144
+ hash: "020d270f6a93e05dacd70a2b41a3ea8a"
+ }
+ Frame {
+ msec: 2160
+ hash: "8f23f9ea2fa630111f0481b6a6ec09a6"
+ }
+ Frame {
+ msec: 2176
+ hash: "6b42c823da044ae69d9600260d7437e6"
+ }
+ Frame {
+ msec: 2192
+ hash: "d31e1a434a9fcd12e439640776f8c8be"
+ }
+ Frame {
+ msec: 2208
+ hash: "48bb7782d57e195d3f0f3dfb25fed571"
+ }
+ Frame {
+ msec: 2224
+ hash: "76922f380f3c6c83edb5ff2a4208a4d0"
+ }
+ Frame {
+ msec: 2240
+ hash: "9027d61a3b91a9f56230f4ee740b6db8"
+ }
+ Frame {
+ msec: 2256
+ hash: "043455a71c91e3d65f1eed632b152fea"
+ }
+ Frame {
+ msec: 2272
+ hash: "6bfc058bd9f8986d306606f8c7b06ae2"
+ }
+ Frame {
+ msec: 2288
+ hash: "49f1e17d33f1ac690bcac7e85668cb3b"
+ }
+ Frame {
+ msec: 2304
+ hash: "2090befb760a16d73bea960a6e835405"
+ }
+ Frame {
+ msec: 2320
+ hash: "e99382309c4419f38642333386595211"
+ }
+ Frame {
+ msec: 2336
+ hash: "2c7a49bcb6eca031984d7a96b607d402"
+ }
+ Frame {
+ msec: 2352
+ hash: "b55be701b19739713d532f3d6cbd5393"
+ }
+ Frame {
+ msec: 2368
+ hash: "fdad916849eeae7b9b276f57bb022321"
+ }
+ Frame {
+ msec: 2384
+ hash: "e3a8dd9da5c767a60dab121fb3a2811b"
+ }
+ Frame {
+ msec: 2400
+ hash: "73262e2250337b8f02d8e672b66ae273"
+ }
+ Frame {
+ msec: 2416
+ hash: "84dca99c97f837ecfb9b3195db556687"
+ }
+ Frame {
+ msec: 2432
+ hash: "4f82d7a5f3b286a2d8ccc0a07c35a1a0"
+ }
+ Frame {
+ msec: 2448
+ hash: "63f6eec01262783a421040dd44740577"
+ }
+ Frame {
+ msec: 2464
+ hash: "e98f39a3a9379155081014cdf761c055"
+ }
+ Frame {
+ msec: 2480
+ hash: "c084db070c74596551190dd49dfc2ed2"
+ }
+ Frame {
+ msec: 2496
+ hash: "f6866290d95f0d85fcf05de39bcadcc7"
+ }
+ Frame {
+ msec: 2512
+ hash: "d919eb26a2d8874ed1e4051769b525c6"
+ }
+ Frame {
+ msec: 2528
+ hash: "1967d42c7a23b8d11e6accf27de24ce7"
+ }
+ Frame {
+ msec: 2544
+ hash: "2fe4f7fe66f820b2738598e85da9f0b9"
+ }
+ Frame {
+ msec: 2560
+ hash: "4fa2b66d2d4beaa56ed8c387b62f4817"
+ }
+ Frame {
+ msec: 2576
+ hash: "eef73ebb85223a5f99b5f5ec7dfaae94"
+ }
+ Frame {
+ msec: 2592
+ hash: "acb7a8c1939633f16e8b7989b2d598c2"
+ }
+ Frame {
+ msec: 2608
+ hash: "b5e67eb3ace1d1d7f9fa1f1c907bd442"
+ }
+ Frame {
+ msec: 2624
+ hash: "552035a9d76f4dd65d86533535c00a5d"
+ }
+ Frame {
+ msec: 2640
+ hash: "d2e25e33232ec8ddd326818fabf15a65"
+ }
+ Frame {
+ msec: 2656
+ hash: "65c4dfbb48c1c9115c37ed5c294d7bd1"
+ }
+ Frame {
+ msec: 2672
+ hash: "3aceb756fa460a767194f2923871e2d3"
+ }
+ Frame {
+ msec: 2688
+ hash: "759a7bd99c6e630929216eb89f6b27fa"
+ }
+ Frame {
+ msec: 2704
+ hash: "81aa0091d86f745bcddd279473df1f8d"
+ }
+ Frame {
+ msec: 2720
+ hash: "cce5b12ab54251ea6df458d492bc92e9"
+ }
+ Frame {
+ msec: 2736
+ hash: "5637b7aeb8b9d754e0a96b6f5d0dcb03"
+ }
+ Frame {
+ msec: 2752
+ hash: "ad7644a8994888bc562590ff8942eabf"
+ }
+ Frame {
+ msec: 2768
+ hash: "490a3da685f73c45f4be697c3f37ccd1"
+ }
+ Frame {
+ msec: 2784
+ hash: "190cc35ecc32ed8ea6ebd135fb8d7a00"
+ }
+ Frame {
+ msec: 2800
+ hash: "89511367c186947f9173dc30932c4454"
+ }
+ Frame {
+ msec: 2816
+ hash: "880c05184406232db9d3830e46d47bd7"
+ }
+ Frame {
+ msec: 2832
+ hash: "db907e2573c385bc2545cfba4fda4be1"
+ }
+ Frame {
+ msec: 2848
+ hash: "c96ad05fd3ab4cd71d33738448029e0c"
+ }
+ Frame {
+ msec: 2864
+ hash: "112ecf3b2fcd5919402842044d052272"
+ }
+ Frame {
+ msec: 2880
+ image: "multilength.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "dc1aa5563a76f20d8200fbd9794b3249"
+ }
+ Frame {
+ msec: 2912
+ hash: "3f72adedabe9e2896750e2738df71566"
+ }
+ Frame {
+ msec: 2928
+ hash: "3f78a5a9312126e6a6ca699886dd05d0"
+ }
+ Frame {
+ msec: 2944
+ hash: "75a199efbdf119abbc1598137e974e28"
+ }
+ Frame {
+ msec: 2960
+ hash: "e4d068e2ba9c65a0e910faf431e4df7e"
+ }
+ Frame {
+ msec: 2976
+ hash: "817e686a44b4eaced58c251facd5e89d"
+ }
+ Frame {
+ msec: 2992
+ hash: "0c5e7217f5b68e0b2158c512f66177c2"
+ }
+ Frame {
+ msec: 3008
+ hash: "253a765019170fe4f649825b4cd17832"
+ }
+ Frame {
+ msec: 3024
+ hash: "cf3f774316868179f6766e5dbdab2b17"
+ }
+ Frame {
+ msec: 3040
+ hash: "7cf30923200a9b8524909bdfbb20b33c"
+ }
+ Frame {
+ msec: 3056
+ hash: "1dd14bc90dfab3d8864c177e56c25b63"
+ }
+ Frame {
+ msec: 3072
+ hash: "aaa4074319d1656b58f874d6843e66c4"
+ }
+ Frame {
+ msec: 3088
+ hash: "b2a3479eb8087138f20b0dbd539f0592"
+ }
+ Frame {
+ msec: 3104
+ hash: "1ab4358f6008ce87a5b1c6a54d04b343"
+ }
+ Frame {
+ msec: 3120
+ hash: "4425e58b30da6edd1730421e990dd6e7"
+ }
+ Frame {
+ msec: 3136
+ hash: "9b4e62af65c064ca2fe4de5d03255b56"
+ }
+ Frame {
+ msec: 3152
+ hash: "edf9b8b0cc18942b23c03ee1ed837dd6"
+ }
+ Frame {
+ msec: 3168
+ hash: "b05a1bc33ce2e4c2383f7ecc9544020c"
+ }
+ Frame {
+ msec: 3184
+ hash: "73304724e5b4d7c556859da310c31a0a"
+ }
+ Frame {
+ msec: 3200
+ hash: "4cf88e365cd9651e2fb86452ff81e4be"
+ }
+ Frame {
+ msec: 3216
+ hash: "7b42902b17781f98075bfdf50950addd"
+ }
+ Frame {
+ msec: 3232
+ hash: "8806b9cb7e352a67b23085593b61606b"
+ }
+ Frame {
+ msec: 3248
+ hash: "d2fdf78fa3b7261683f2ed4f2dee62c8"
+ }
+ Frame {
+ msec: 3264
+ hash: "dafa72fd7aae2c9bfa5f6aa2694235d2"
+ }
+ Frame {
+ msec: 3280
+ hash: "d784b9b39ab063ab68b85d6485257ce0"
+ }
+ Frame {
+ msec: 3296
+ hash: "991ef068c26b304fb19d03fdfeb2e3f4"
+ }
+ Frame {
+ msec: 3312
+ hash: "c6014d497f4db9121c539a53115a847f"
+ }
+ Frame {
+ msec: 3328
+ hash: "88c778d811febd165e28ae7698f774b8"
+ }
+ Frame {
+ msec: 3344
+ hash: "51fbf553794b8a2303d2e0dff44c80fa"
+ }
+ Frame {
+ msec: 3360
+ hash: "ba1abdcf3a04231ce9439cb6d93e8717"
+ }
+ Frame {
+ msec: 3376
+ hash: "56a5d2fe8af1ef1e08ce545eb65e6ba0"
+ }
+ Frame {
+ msec: 3392
+ hash: "8337eb7d11500676921de0b13812ca02"
+ }
+ Frame {
+ msec: 3408
+ hash: "8f50f53ed00ad9b9bbf9423b3274efa7"
+ }
+ Frame {
+ msec: 3424
+ hash: "bf5ca931d00d3dc4fcfe5e93d08bde2f"
+ }
+ Frame {
+ msec: 3440
+ hash: "f2619492bbb96bd3958f4d61bb23c42e"
+ }
+ Frame {
+ msec: 3456
+ hash: "3b1afefbc7e0990059bd3990f17a7312"
+ }
+ Frame {
+ msec: 3472
+ hash: "30041f2cb8c071e7dc8f9c8ef1e49743"
+ }
+ Frame {
+ msec: 3488
+ hash: "f8bef9f28823fdebec0b39e1044ac03c"
+ }
+ Frame {
+ msec: 3504
+ hash: "4c0282e6a48dbbcdbbffde55457eee12"
+ }
+ Frame {
+ msec: 3520
+ hash: "7956ea76120b9292b2f3c6123187ac0e"
+ }
+ Frame {
+ msec: 3536
+ hash: "dce82656442ff1a0823bac5ded7c0290"
+ }
+ Frame {
+ msec: 3552
+ hash: "96151e49fd0f07817d27583c22afe30f"
+ }
+ Frame {
+ msec: 3568
+ hash: "262a38546540ecb81065cbdbace4fa28"
+ }
+ Frame {
+ msec: 3584
+ hash: "4ea3a1a93be2ef25ca6f05d144b50d3b"
+ }
+ Frame {
+ msec: 3600
+ hash: "77d321f837b720d4e63fb028e885dce7"
+ }
+ Frame {
+ msec: 3616
+ hash: "e0e40d426a13ef3d9caa6ba474a1a460"
+ }
+ Frame {
+ msec: 3632
+ hash: "6bd5645b808206dd9a4e9c0e423db06b"
+ }
+ Frame {
+ msec: 3648
+ hash: "791538cf21cfa32ab4595137a655e0a3"
+ }
+ Frame {
+ msec: 3664
+ hash: "59266a6f73c217f0c68f7dac69d4b25d"
+ }
+ Frame {
+ msec: 3680
+ hash: "ee730ce23e84942c5fe2587ce0ecd3f6"
+ }
+ Frame {
+ msec: 3696
+ hash: "b1353eee7a68d1ab0057ab7a6dd0774c"
+ }
+ Frame {
+ msec: 3712
+ hash: "0ea828127568afa52ecc31e335e69d11"
+ }
+ Frame {
+ msec: 3728
+ hash: "d95fc327253500563d0e05a4b80a7c8a"
+ }
+ Frame {
+ msec: 3744
+ hash: "e3aff011332ccf9cbebbff2803733038"
+ }
+ Frame {
+ msec: 3760
+ hash: "27ee147b62bfa2d1183321bba3ccb8d3"
+ }
+ Frame {
+ msec: 3776
+ hash: "245578d636b5486da0210a0dd7b84a80"
+ }
+ Frame {
+ msec: 3792
+ hash: "87be77d90d9e7a2d282026e63d14ddfd"
+ }
+ Frame {
+ msec: 3808
+ hash: "25cf672e69b7c61eab9f53437b40956e"
+ }
+ Frame {
+ msec: 3824
+ hash: "10606e7b0ecb8ec204fe025aece90004"
+ }
+ Frame {
+ msec: 3840
+ image: "multilength.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "a3c411c8c3da3975205994a7da97320f"
+ }
+ Frame {
+ msec: 3872
+ hash: "1491ce2867ad4f116e705d259b773550"
+ }
+ Frame {
+ msec: 3888
+ hash: "8f2fe6175fa45213d84e4c0b0b7cb4a7"
+ }
+ Frame {
+ msec: 3904
+ hash: "bc77ad13f5015fc1b5bb85dc51b207b3"
+ }
+ Frame {
+ msec: 3920
+ hash: "5fb9a7834a5358077952c20ca025fcf0"
+ }
+ Frame {
+ msec: 3936
+ hash: "09ba094e2cfb1033019e85f66910a593"
+ }
+ Frame {
+ msec: 3952
+ hash: "43db976e63a8fd71da67198942aa7943"
+ }
+ Frame {
+ msec: 3968
+ hash: "6298a0aa4b84ee1722d83897b3553fe1"
+ }
+ Frame {
+ msec: 3984
+ hash: "6b87ba7d3fe468229b29cd28590e17b1"
+ }
+ Frame {
+ msec: 4000
+ hash: "1b4e219629a1f19b135544ac2e961788"
+ }
+ Frame {
+ msec: 4016
+ hash: "087e95cbd0549be1bbe4a32520858514"
+ }
+ Frame {
+ msec: 4032
+ hash: "2c51a434fc3633623e10bedeba4e260d"
+ }
+ Frame {
+ msec: 4048
+ hash: "f29b87d80779a7f4d38e8058d984c386"
+ }
+ Frame {
+ msec: 4064
+ hash: "b8055e4b3c2ee551a7becf176cd173e3"
+ }
+ Frame {
+ msec: 4080
+ hash: "3c35391e1c1d230e0a085cb7f7f0e8ef"
+ }
+ Frame {
+ msec: 4096
+ hash: "dd8a63cdeefc6ce5a35ceb700f7b3755"
+ }
+ Frame {
+ msec: 4112
+ hash: "5b4a322f768d426a56a82d714cf4f705"
+ }
+ Frame {
+ msec: 4128
+ hash: "08830f630c15419d79c459891a8fff64"
+ }
+ Frame {
+ msec: 4144
+ hash: "84c90e454dcdbf00c441ff326760d2cd"
+ }
+ Frame {
+ msec: 4160
+ hash: "17c7311faee569b077f85848f7155319"
+ }
+ Frame {
+ msec: 4176
+ hash: "17b5aeff8f03828c1851a6b984d4e69e"
+ }
+ Frame {
+ msec: 4192
+ hash: "3bcc28ab875d3b5f62df0d5cede3e850"
+ }
+ Frame {
+ msec: 4208
+ hash: "a4c861d766af1378e21a91a6e1bca06d"
+ }
+ Frame {
+ msec: 4224
+ hash: "fa6e17c9c35c41ac5270a55f0cc4dcd2"
+ }
+ Frame {
+ msec: 4240
+ hash: "48d8c7ce0b6f2e9840a2f5cb40e41449"
+ }
+ Frame {
+ msec: 4256
+ hash: "713a391414fffe3cf01248e7c0919d71"
+ }
+ Frame {
+ msec: 4272
+ hash: "472282080ae357f5fb0dac1bf411f6f5"
+ }
+ Frame {
+ msec: 4288
+ hash: "660d37f1b3c5dd6e2de22ad2be818675"
+ }
+ Frame {
+ msec: 4304
+ hash: "334f12d83fdc7bd8f3d97697061a75f8"
+ }
+ Frame {
+ msec: 4320
+ hash: "4bfe83273913bad702290db2b1c81d52"
+ }
+ Frame {
+ msec: 4336
+ hash: "9ddc0238b0fbb42c503da8782d750d81"
+ }
+ Frame {
+ msec: 4352
+ hash: "43081559ed8f1d62baed1ab5dde34c5c"
+ }
+ Frame {
+ msec: 4368
+ hash: "4bf955a94901588cf37a1fe9b82feef3"
+ }
+ Frame {
+ msec: 4384
+ hash: "3a3a987096f2a11f495af4ee20c2452b"
+ }
+ Frame {
+ msec: 4400
+ hash: "290647a4f73c42ea33f841281bf6f3d6"
+ }
+ Frame {
+ msec: 4416
+ hash: "1a18f4f658997710aa7be9409c75a602"
+ }
+ Frame {
+ msec: 4432
+ hash: "1bc52bc68633464654410f59bf97142b"
+ }
+ Frame {
+ msec: 4448
+ hash: "33e3a5e0ec745046f7a7cceffd516a71"
+ }
+ Frame {
+ msec: 4464
+ hash: "7e61c48d2e0e6e195d527d6aeb4ffe8c"
+ }
+ Frame {
+ msec: 4480
+ hash: "42c42f7e02f6cd72afa92cf97494a1eb"
+ }
+ Frame {
+ msec: 4496
+ hash: "d1876d371284e41f4d553a470a9970fb"
+ }
+ Frame {
+ msec: 4512
+ hash: "479960a289b598591a4bf3c66dc6258a"
+ }
+ Frame {
+ msec: 4528
+ hash: "0ea8965e095c73499b5abc4ac44e07ef"
+ }
+ Frame {
+ msec: 4544
+ hash: "cc7fe014a856896ce3871743e552d6f2"
+ }
+ Frame {
+ msec: 4560
+ hash: "5b3cd6bec24ae4a215ec28651e9a3ed0"
+ }
+ Frame {
+ msec: 4576
+ hash: "63d60a2c6d27e30dda001c202446d221"
+ }
+ Frame {
+ msec: 4592
+ hash: "22f30d377fb90c433881d17211a9f9bd"
+ }
+ Frame {
+ msec: 4608
+ hash: "acfbf010e93723185792009ed372ccb9"
+ }
+ Frame {
+ msec: 4624
+ hash: "91f3335706d5037d9c579091e29d1219"
+ }
+ Frame {
+ msec: 4640
+ hash: "83ad6be4ecaa6495b25f9b55bb11796a"
+ }
+ Frame {
+ msec: 4656
+ hash: "39a68ee7f4ddb8059ef42eb9e42b7659"
+ }
+ Frame {
+ msec: 4672
+ hash: "0ad1facc49beaa2c3510fe1612ba3b4f"
+ }
+ Frame {
+ msec: 4688
+ hash: "d780a7f3dc1a313d462084fffda989c7"
+ }
+ Frame {
+ msec: 4704
+ hash: "0f1ad6155d4ed2a11d2fa91c63b62678"
+ }
+ Frame {
+ msec: 4720
+ hash: "26f4bb010704911d87b96a9f31a0a121"
+ }
+ Frame {
+ msec: 4736
+ hash: "7772aaabb6418d71fb7566a0aac4279f"
+ }
+ Frame {
+ msec: 4752
+ hash: "47bf1ec73915b369d653ff71ce7758da"
+ }
+ Frame {
+ msec: 4768
+ hash: "fcc1ed23c1678bf1b11bf59dbaba5186"
+ }
+ Frame {
+ msec: 4784
+ hash: "0d66fbc0b99c35dae53e1026c2041252"
+ }
+ Frame {
+ msec: 4800
+ image: "multilength.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "d1fbba4331fd640a40fe7e07fcfce20b"
+ }
+ Frame {
+ msec: 4832
+ hash: "f79f9ac08c779fd1646450ef4cc21f01"
+ }
+ Frame {
+ msec: 4848
+ hash: "2095da58125d29b815c44ec9a22598d3"
+ }
+ Frame {
+ msec: 4864
+ hash: "01d4805a90443a6c20a5ae2cb83ec151"
+ }
+ Frame {
+ msec: 4880
+ hash: "f329ce7199c2137e8c32a25f96ee5c6b"
+ }
+ Frame {
+ msec: 4896
+ hash: "72c0c2c7660974827acc1fcb54e7ca6c"
+ }
+ Frame {
+ msec: 4912
+ hash: "6902d2a637733171699684baf07bb86e"
+ }
+ Frame {
+ msec: 4928
+ hash: "615683e3bc07792ee38ca8146657a88a"
+ }
+ Frame {
+ msec: 4944
+ hash: "9fe981f60fd1d974f063fccd2ae205ab"
+ }
+ Frame {
+ msec: 4960
+ hash: "b403e21b14646ac0cdaee2027125c0ad"
+ }
+ Frame {
+ msec: 4976
+ hash: "d037545cc68b7582c400c8c9da49ff2a"
+ }
+ Frame {
+ msec: 4992
+ hash: "551435ecb008ff217eb65a5a77a28090"
+ }
+ Frame {
+ msec: 5008
+ hash: "a1684c1c0938386bbfb309969114beee"
+ }
+ Frame {
+ msec: 5024
+ hash: "51e3a7214bf2fd98108de683ae650b05"
+ }
+ Frame {
+ msec: 5040
+ hash: "af3da99b9abc3b3440b22d4d428dcd1a"
+ }
+ Frame {
+ msec: 5056
+ hash: "4f75c0a0b7a04c8abdf2768a819b6c14"
+ }
+ Frame {
+ msec: 5072
+ hash: "c73dc19d48511634717cf4e95f843a5d"
+ }
+ Frame {
+ msec: 5088
+ hash: "0f263ab43dde78f1280483c6287b44a2"
+ }
+ Frame {
+ msec: 5104
+ hash: "68436451f6f3ee981bf8851944b82dda"
+ }
+ Frame {
+ msec: 5120
+ hash: "e0ea33b011cc8aef74070e26b71bd05e"
+ }
+ Frame {
+ msec: 5136
+ hash: "755d1421a9b2bf3be9d665f5f8d6f767"
+ }
+ Frame {
+ msec: 5152
+ hash: "7e20da3dab6bd290498756ac392bc052"
+ }
+ Frame {
+ msec: 5168
+ hash: "babdfa14fbba8f6eb0c95334588123ce"
+ }
+ Frame {
+ msec: 5184
+ hash: "1ec885da7efc3d71904c79a4a4768f27"
+ }
+ Frame {
+ msec: 5200
+ hash: "2159f4c9f72bca3ba98b4fd0aeb3c1ba"
+ }
+ Frame {
+ msec: 5216
+ hash: "8354d4c9bd5ccb2eae46cdaf3fd337bb"
+ }
+ Frame {
+ msec: 5232
+ hash: "ee95872db6f9440800bb98023764dc2a"
+ }
+ Frame {
+ msec: 5248
+ hash: "23197dd2bb352193b72d4445912d9c94"
+ }
+ Frame {
+ msec: 5264
+ hash: "370e33f141d0a8396b5c2bb279f9bb67"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png
deleted file mode 100644
index 1a8c89b870..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml
deleted file mode 100644
index 3b8ae0c0f7..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml
+++ /dev/null
@@ -1,279 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 32
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 48
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 64
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 80
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 96
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 112
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 128
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 144
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 160
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 176
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 192
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 208
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 224
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 240
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 256
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 272
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 288
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 304
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 320
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 336
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 352
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 368
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 384
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 400
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 416
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 432
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 448
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 464
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 480
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 496
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 512
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 528
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 544
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 560
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 576
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 592
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 608
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 624
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 640
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 656
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 672
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 688
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 704
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 720
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 736
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 752
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 768
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 784
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 800
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 816
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 832
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 848
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 864
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 880
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 896
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 912
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 928
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 944
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 960
- image: "elide.0.png"
- }
- Frame {
- msec: 976
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 992
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1008
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1024
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1040
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1056
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png
deleted file mode 100644
index 3dfade5c72..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png
deleted file mode 100644
index 1ee2076add..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png
deleted file mode 100644
index ae680bebbe..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png
deleted file mode 100644
index c2859bef87..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml
deleted file mode 100644
index 27fbaf4c1f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml
+++ /dev/null
@@ -1,991 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 32
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 48
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 64
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 80
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 96
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 112
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 128
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 144
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 160
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 176
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 192
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 208
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 224
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 240
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 256
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 272
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 288
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 304
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 320
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 336
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 352
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 368
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 384
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 400
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 416
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 432
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 448
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 464
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 480
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 496
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 512
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 528
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 544
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 560
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 576
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 592
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 608
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 624
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 640
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 656
- hash: "3f362ad550db910f1d9f261557c65913"
- }
- Frame {
- msec: 672
- hash: "3f362ad550db910f1d9f261557c65913"
- }
- Frame {
- msec: 688
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 704
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 720
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 736
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 752
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 768
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 784
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 800
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 816
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 832
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 848
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 864
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 880
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 896
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 912
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 928
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 944
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 960
- image: "elide2.0.png"
- }
- Frame {
- msec: 976
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 992
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
- }
- Frame {
- msec: 1008
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
- }
- Frame {
- msec: 1024
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1040
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1056
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1072
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1088
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1104
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1120
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1136
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1152
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1168
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1184
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1200
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1216
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1232
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1248
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1264
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1280
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1296
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1312
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1328
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1344
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1360
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1376
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1392
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1408
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1424
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1440
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1456
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1472
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1488
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1504
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1520
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1536
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1552
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1568
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1584
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1600
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1616
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1632
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1648
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1664
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1680
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1696
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1712
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1728
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1744
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1760
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1776
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1792
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1808
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1824
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1840
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1856
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1872
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1888
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1904
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1920
- image: "elide2.1.png"
- }
- Frame {
- msec: 1936
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1952
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1968
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 1984
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2000
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2016
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2032
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2048
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2064
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2080
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2096
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2112
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2128
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2144
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2160
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2176
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2192
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2208
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2224
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2240
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2256
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2272
- hash: "04c62a4d01e9309eaeea87902013c8b9"
- }
- Frame {
- msec: 2288
- hash: "04c62a4d01e9309eaeea87902013c8b9"
- }
- Frame {
- msec: 2304
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2320
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2336
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2352
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2368
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2384
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2400
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2416
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2432
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2448
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2464
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2480
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2496
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2512
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2528
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2544
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2560
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2576
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2592
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2608
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2624
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2640
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2656
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2672
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2688
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2704
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2720
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2736
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2752
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2768
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2784
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2800
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2816
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2832
- hash: "f44b88b80219497370b5d2ad380d03bf"
- }
- Frame {
- msec: 2848
- hash: "f44b88b80219497370b5d2ad380d03bf"
- }
- Frame {
- msec: 2864
- hash: "a093510751799f3466156f9775988044"
- }
- Frame {
- msec: 2880
- image: "elide2.2.png"
- }
- Frame {
- msec: 2896
- hash: "a093510751799f3466156f9775988044"
- }
- Frame {
- msec: 2912
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2928
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2944
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2960
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2976
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2992
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3008
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3024
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3040
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3056
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3072
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3088
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3104
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3120
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
- }
- Frame {
- msec: 3136
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
- }
- Frame {
- msec: 3152
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3168
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3184
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3200
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3216
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3232
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3248
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3264
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3280
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3296
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3312
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3328
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3344
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3360
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3376
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3392
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3408
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
- }
- Frame {
- msec: 3424
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
- }
- Frame {
- msec: 3440
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3456
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3472
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3488
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3504
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3520
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3536
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3552
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3568
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3584
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3600
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3616
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3632
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3648
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3664
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3680
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3696
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
- }
- Frame {
- msec: 3712
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
- }
- Frame {
- msec: 3728
- hash: "b6dba4a456cd8d1b62501039cb796625"
- }
- Frame {
- msec: 3744
- hash: "b6dba4a456cd8d1b62501039cb796625"
- }
- Frame {
- msec: 3760
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3776
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3792
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3808
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3824
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3840
- image: "elide2.3.png"
- }
- Frame {
- msec: 3856
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
- }
- Frame {
- msec: 3872
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
- }
- Frame {
- msec: 3888
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
- }
- Frame {
- msec: 3904
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
index b96ecb3b58..e52c609343 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: childrenRect.width
@@ -6,23 +7,23 @@ Rectangle {
Column {
width: 80
height: myText.height*4
- Text {
+ TestText {
elide: "ElideLeft"
text: "aaa bbb ccc ddd eee fff"
width: 80
id: myText
}
- Text {
+ TestText {
elide: "ElideMiddle"
text: "aaa bbb ccc ddd eee fff"
width: 80
}
- Text {
+ TestText {
elide: "ElideRight"
text: "aaa bbb ccc ddd eee fff"
width: 80
}
- Text {
+ TestText {
elide: "ElideNone"
text: "aaa bbb ccc ddd eee fff"
width: 80
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
index b77298254a..0370a73b57 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: 500
height: 100
- Text {
+ TestText {
NumberAnimation on width { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
elide: Text.ElideRight
text: 'Here is some very long text that we should truncate when sizing window'
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
index 3ef64ef1e7..db991a2d0e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: 500
@@ -9,7 +10,7 @@ Rectangle {
height: myText.height
color: "white"
anchors.centerIn: parent
- Text {
+ TestText {
id: myText
NumberAnimation on width { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
elide: "ElideRight"
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml
new file mode 100644
index 0000000000..690cb155ad
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml
@@ -0,0 +1,13 @@
+import QtQuick 1.0
+
+Text {
+ id: testText
+
+ property color bcolor: "blue"
+
+ text: "The quick brown fox\njumps over\nthe lazy dog."
+ font.family: "Helvetica"
+ font.pointSize: 16
+
+ Rectangle { id: borderr; color: "transparent"; border.color: bcolor; anchors.fill: parent; opacity: 0.2 }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png
index 67b497f651..cd436b5ffb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
index a39c340e8c..fdf23106c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
@@ -6,346 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 32
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 48
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 64
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 80
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 96
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 112
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 128
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 144
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 160
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 176
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 192
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 208
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 224
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 240
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 256
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 272
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 288
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 304
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 320
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 336
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 352
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 368
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 384
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 400
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 416
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 432
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 448
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 464
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 480
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 496
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 512
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 528
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 544
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 560
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 576
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 592
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 608
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 624
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 640
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 656
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 672
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 688
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 704
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 720
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 736
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 752
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 768
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 784
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 800
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 816
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 832
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 848
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 864
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 880
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 896
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 912
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 928
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 944
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 960
image: "plaintext.0.png"
}
- Frame {
- msec: 976
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 992
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1008
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1024
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1040
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1056
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1072
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1088
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1104
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1120
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1136
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1152
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1168
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1184
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1216
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1232
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1248
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1264
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1280
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1296
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1312
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1328
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1344
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png
new file mode 100644
index 0000000000..e47b47954a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml
new file mode 100644
index 0000000000..f6cddc43a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png
new file mode 100644
index 0000000000..0d3c672804
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml
new file mode 100644
index 0000000000..13f413a1ca
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext3.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
index 63799421c3..ba833a26dd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
index 8529b926b6..3da391dc50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
@@ -6,354 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 32
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 48
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 64
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 80
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 96
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 112
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 128
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 144
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 160
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 176
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 192
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 208
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 224
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 240
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 256
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 272
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 288
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 304
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 320
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 336
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 352
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 368
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 384
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 400
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 416
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 432
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 448
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 464
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 480
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 496
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 512
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 528
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 544
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 560
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 576
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 592
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 608
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 624
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 640
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 656
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 672
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 688
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 704
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 720
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 736
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 752
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 768
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 784
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 800
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 816
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 832
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 848
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 864
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 880
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 896
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 912
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 928
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 944
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 960
image: "richtext.0.png"
}
- Frame {
- msec: 976
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 992
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1008
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1024
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1040
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1056
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1072
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1088
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1104
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1120
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1136
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1152
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1168
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1184
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1200
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1216
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1232
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1248
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1264
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1280
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1296
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1312
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1328
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1344
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1360
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1376
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
new file mode 100644
index 0000000000..30dc0a99bd
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml
new file mode 100644
index 0000000000..fdf23106c4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png
new file mode 100644
index 0000000000..0574f63fe9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml
new file mode 100644
index 0000000000..f6cddc43a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
new file mode 100644
index 0000000000..8d3c37b9e4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml
new file mode 100644
index 0000000000..3da391dc50
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "richtext.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
index 50d56dc814..89195ae7dc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
index bf3aea6133..fdf23106c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
@@ -6,346 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 32
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 48
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 64
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 80
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 96
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 112
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 128
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 144
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 160
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 176
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 192
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 208
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 224
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 240
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 256
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 272
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 288
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 304
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 320
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 336
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 352
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 368
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 384
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 400
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 416
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 432
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 448
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 464
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 480
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 496
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 512
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 528
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 544
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 560
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 576
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 592
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 608
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 624
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 640
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 656
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 672
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 688
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 704
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 720
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 736
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 752
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 768
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 784
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 800
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 816
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 832
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 848
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 864
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 880
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 896
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 912
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 928
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 944
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 960
image: "plaintext.0.png"
}
- Frame {
- msec: 976
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 992
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1008
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1024
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1040
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1056
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1072
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1088
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1104
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1120
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1136
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1152
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1168
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1184
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1216
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1232
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1248
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1264
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1280
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1296
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1312
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1328
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1344
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png
new file mode 100644
index 0000000000..0574f63fe9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml
new file mode 100644
index 0000000000..f6cddc43a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png
new file mode 100644
index 0000000000..0d3c672804
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml
new file mode 100644
index 0000000000..13f413a1ca
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext3.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
index 2910670adb..6a4872839e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
index 4a87240d55..3da391dc50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
@@ -6,354 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 32
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 48
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 64
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 80
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 96
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 112
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 128
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 144
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 160
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 176
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 192
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 208
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 224
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 240
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 256
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 272
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 288
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 304
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 320
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 336
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 352
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 368
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 384
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 400
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 416
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 432
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 448
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 464
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 480
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 496
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 512
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 528
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 544
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 560
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 576
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 592
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 608
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 624
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 640
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 656
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 672
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 688
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 704
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 720
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 736
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 752
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 768
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 784
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 800
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 816
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 832
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 848
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 864
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 880
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 896
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 912
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 928
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 944
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 960
image: "richtext.0.png"
}
- Frame {
- msec: 976
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 992
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1008
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1024
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1040
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1056
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1072
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1088
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1104
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1120
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1136
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1152
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1168
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1184
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1200
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1216
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1232
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1248
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1264
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1280
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1296
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1312
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1328
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1344
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1360
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1376
- hash: "dfea78484b840b8cab690e277b960723"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
index 25db17933c..3a06cf06c2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
@@ -1,91 +1,104 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
- id: s; width: 800; height: 1000; color: "lightsteelblue"
- property string text: "The quick brown fox jumps over the lazy dog."
+ id: s; width: 620; height: 600; color: "lightsteelblue"
+ property string text: "Jackdaws love my big sphinx of quartz."
Column {
- spacing: 10
- Text {
+ spacing: 8
+ TestText {
text: s.text
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18
}
- Text {
- text: s.text; font.pointSize: 25
+ TestText {
+ text: s.text; font.pointSize: 20
}
- Text {
+ TestText {
text: s.text; color: "red"; smooth: true
}
- Text {
+ TestText {
text: s.text; font.capitalization: "AllUppercase"
}
- Text {
+ TestText {
text: s.text; font.underline: true
}
- Text {
+ TestText {
text: s.text; font.overline: true; smooth: true
}
- Text {
+ TestText {
text: s.text; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.overline: true; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.letterSpacing: 2
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.letterSpacing: 2; font.capitalization: "AllUppercase"; color: "blue"
}
- Text {
+ TestText {
text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
}
- Text {
- text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width; height: 20
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width; height: 20
+ }
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText {
+ text: s.text; elide: Text.ElideLeft; width: 200
+ }
+ TestText {
+ text: s.text; elide: Text.ElideMiddle; width: 200
+ }
+ TestText {
+ text: s.text; elide: Text.ElideRight; width: 200
+ }
+ }
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText{
+ text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
+ }
+ TestText {
+ text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
+ }
+ TestText {
+ text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
+ }
+ }
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
+ }
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ }
+ TestText {
+text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
+ }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml
new file mode 100644
index 0000000000..01de1f0046
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml
@@ -0,0 +1,23 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+Rectangle {
+ width: 400; height: 200
+
+ Row {
+ spacing: 20
+ anchors.centerIn: parent
+ TestText {
+ text: "First line\nSecond line"; wrapMode: Text.Wrap
+ }
+ TestText {
+ text: "First line\nSecond line"; width: 70
+ }
+ TestText {
+ text: "First Second\nThird Fourth"; wrapMode: Text.Wrap; width: 50
+ }
+ TestText {
+ text: "First line<br>Second line"; textFormat: Text.StyledText
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml
new file mode 100644
index 0000000000..087dfbe5fc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml
@@ -0,0 +1,62 @@
+import QtQuick 1.0
+
+Rectangle {
+ id: main
+ width: 800; height: 600
+
+
+ Grid {
+ x: 4; y: 4
+ spacing: 8
+ columns: 4
+
+ Column {
+ spacing: 4
+ TestText { }
+ TestText { horizontalAlignment: Text.AlignHCenter }
+ TestText { horizontalAlignment: Text.AlignRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { wrapMode: Text.Wrap }
+ TestText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ TestText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ TestText { wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 230; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 230; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 230; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120; wrapMode: Text.Wrap }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120 }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
index 31b0e69741..36704797ea 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
@@ -1,91 +1,78 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
- id: s; width: 800; height: 1000; color: "lightsteelblue"
+ id: s; width: 620; height: 600; color: "lightsteelblue"
property string text: "<b>The</b> <i>quick</i> <u>brown</u> <o>fox</o> <big>jumps</big> <small>over</small> <tt>the</tt> <s>lazy</s> <em>dog</em>."
Column {
- spacing: 10
- Text {
+ spacing: 6
+ TestText {
text: s.text
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18
}
- Text {
- text: s.text; font.pointSize: 25
+ TestText {
+ text: s.text; font.pointSize: 18
}
- Text {
+ TestText {
text: s.text; color: "red"; smooth: true
}
- Text {
+ TestText {
text: s.text; font.capitalization: "AllUppercase"
}
- Text {
+ TestText {
text: s.text; font.underline: true
}
- Text {
+ TestText {
text: s.text; font.overline: true; smooth: true
}
- Text {
+ TestText {
text: s.text; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.overline: true; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.letterSpacing: 2
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.letterSpacing: 2; font.capitalization: "AllUppercase"; color: "blue"
}
- Text {
+ TestText {
text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
}
- Text {
- text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width; height: 20
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width; height: 20
+ }
+ Row{
+ height: childrenRect.height;
+ spacing: 4
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
+ }
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ }
+ TestText {
+ text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
+ }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml
new file mode 100644
index 0000000000..3d5fbf0b54
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml
@@ -0,0 +1,18 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+Rectangle {
+ width: 200; height: 200
+
+ TestText {
+ id: label
+ objectName: "label"
+ text: "Hello world!"
+ width: 10
+ }
+
+ Timer {
+ running: true; interval: 1000
+ onTriggered: label.text = ""
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
index c98756894e..4273f32c26 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
id:lineedit
@@ -7,16 +8,16 @@ Item {
width: 240 + 11 //Should be set manually in most cases
height: textEdit.height + 11
- Rectangle{
+ Rectangle {
color: 'lightsteelblue'
anchors.fill: parent
}
clip: true
Component.onCompleted: textEdit.cursorPosition = 0;
- TextEdit{
+ TestTextEdit {
id:textEdit
- cursorDelegate: Item{
- Rectangle{
+ cursorDelegate: Item {
+ Rectangle {
visible: parent.parent.focus
color: "#009BCE"
height: 13
@@ -36,16 +37,17 @@ Item {
if(cursorRectangle.y < topMargin - textEdit.y){//Cursor went off the front
textEdit.y = topMargin - Math.max(0, cursorRectangle.y);
}else if(cursorRectangle.y > parent.height - topMargin - bottomMargin - textEdit.y){//Cursor went off the end
- textEdit.y = topMargin - Math.max(0, cursorRectangle.y - (parent.height - topMargin - bottomMargin)) - cursorRectangle.height;
+ textEdit.y = topMargin - Math.max(0, cursorRectangle.y - (parent.height - topMargin - bottomMargin) + cursorRectangle.height);
}
}
+ onHeightChanged: y=topMargin//reset scroll
text:""
horizontalAlignment: TextInput.AlignLeft
wrapMode: TextEdit.WordWrap
font.pixelSize:15
}
- MouseArea{
+ MouseArea {
//Implements all line edit mouse handling
id: mainMouseArea
anchors.fill: parent;
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
index c0eeb82d29..1e0f71a550 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
@@ -1,19 +1,20 @@
import QtQuick 1.0
- Rectangle {
+import "../shared" 1.0
+
+Rectangle {
resources: [
Component { id: cursorA
Item { id: cPage;
- x: Behavior { NumberAnimation { } }
- y: Behavior { NumberAnimation { } }
- height: Behavior { NumberAnimation { duration: 200 } }
+ Behavior on x { NumberAnimation { } }
+ Behavior on y { NumberAnimation { } }
+ Behavior on height { NumberAnimation { duration: 200 } }
Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2;
Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0}
Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;}
- opacity: 1
- opacity: SequentialAnimation { running: cPage.parent.focus == true; loops: Animation.Infinite;
- NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"}
- NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"}
- }
+ }
+ SequentialAnimation on opacity { running: true; loops: Animation.Infinite;
+ NumberAnimation { to: 0; duration: 500; easing.type: "OutQuad"}
+ NumberAnimation { to: 1; duration: 500; easing.type: "InQuad"}
}
width: 1;
}
@@ -22,7 +23,7 @@ import QtQuick 1.0
width: 400
height: 200
color: "white"
- TextEdit { id: mainText
+ TestTextEdit { id: mainText
text: "Hello World"
cursorDelegate: cursorA
focus: true
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
index 464a578bb4..f41c16574c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
index 9beb1ca4a7..539e4df892 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
index 001be30b98..47ceaac762 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
index fc3e4b3dec..e24a4535c0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
index 24f43e66e4..ecf8335c19 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
index 001223b5b0..3d8709fd16 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
index 7126e073dd..80b960c197 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
index f0bea88417..72472771c3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
index 4381b8dfb8..af5a996b7b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
index 1241d14342..ff5db4179b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
@@ -6,239 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 32
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 48
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 64
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 80
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 96
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 112
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 128
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 144
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 160
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 176
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 192
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 208
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 224
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 240
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 256
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 272
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 288
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 304
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 320
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 336
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "419c538908d0226ff4485f1094eaa08e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 352
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 368
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 384
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 400
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 416
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 432
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 448
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 464
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 480
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 496
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 512
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "b4205f141a7a6b646cf641ba922d588b"
}
Frame {
msec: 592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "94c3adf5da700bb63ed6eaf0adf8d037"
}
Frame {
msec: 608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "62c4757a2e26341655e27417f85ba6d8"
}
Frame {
msec: 624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "9de2ce48334b088c0a0960a581f43a36"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "9ca827d4812521d1590ca6e7117bd788"
}
Frame {
msec: 656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "66f65cd7215ea89e60d8f60337fffe97"
}
Frame {
msec: 672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "05caae5e0d092c4d0595286aa4baa6a0"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "2282153f3ae493aa6ad5377b12d88043"
}
Frame {
msec: 704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "aee2503a5d4ec61795b0486da5c53867"
}
Frame {
msec: 720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "f564e1ae90bc6b1ea4bc84f1729eb487"
}
Frame {
msec: 736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "f5c70adef5725a0574b63dd5ab7d7b12"
}
Frame {
msec: 752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "74ed3230417c69b0dc82ce9cfe4b6cd0"
}
Frame {
msec: 768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "374270279bcc00167d2b63bf9a658785"
}
Frame {
msec: 784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "68445a2b5470e44baf7af95efc20ba33"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "5add6c9527edf6bbdb3a79b8a524db70"
}
Frame {
msec: 816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "01a96c8407fa2c0f9e7a822249ac9adc"
}
Frame {
msec: 832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "6b9af295d8f2fb5ba8d9c234596d0a88"
}
Frame {
msec: 848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "3837442e90c2a1534e21d21bfc3b46e1"
}
Frame {
msec: 864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
}
Frame {
msec: 880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 960
@@ -246,271 +294,287 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 1072
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "8234f16d07e76aeedb6ca14d622453cb"
}
Frame {
msec: 1088
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 1104
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 1120
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 1136
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 1152
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 1168
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1184
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "1d5c9458d568df773dbff4e333e14de0"
}
Frame {
msec: 1200
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "8eef242d89b7e2eff7678030f9fd808e"
}
Frame {
msec: 1216
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "97dc6ebbf64a19f5026c02ea4c79d63b"
}
Frame {
msec: 1232
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "52d2135428c3c2bf85f0fa7c2ba01a25"
}
Frame {
msec: 1248
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "c713bd1d1ab2df81292020e6e822546c"
}
Frame {
msec: 1264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c61ff34510168e324c53786720dd953"
}
Frame {
msec: 1280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "ba1488f2d9d4482cdf41c40af7642030"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "91d2da369579bb72641d4e7e7cd696f5"
}
Frame {
msec: 1312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "1cf1d30d6def868a60f434fe84c23c47"
}
Frame {
msec: 1328
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "ba5b3005af3c44caaf7272cbb56e60da"
}
Frame {
msec: 1344
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "116ab7576b5e45e6009920854ff87f39"
}
Frame {
msec: 1360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "294c76d6f63c230af666b0b86e0c9844"
}
Frame {
msec: 1376
- hash: "3caa36cc3857803248d12ec09ea357df"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "c721a5b17b1eb4a063fa3b727d13ba62"
}
Frame {
msec: 1392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "a98bd750b67a0ef8831c9c66a0b06a28"
}
Frame {
msec: 1408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "7739509b0f5e62207ba62262d8822388"
}
Frame {
msec: 1424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "62d70a7e3ce290c52d37090bf899377c"
}
Frame {
msec: 1440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "3f3c1137c02e14796c3a4537337d1dd8"
}
Frame {
msec: 1456
- hash: "a6bdf56b4f8783969935488e1955e59c"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "4997a45af699c1face114c72a9ce067d"
}
Frame {
msec: 1472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "a4810a97e51259350bb1543dffc156af"
}
Frame {
msec: 1584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "838871072acbefc1c8c488f47312da9b"
}
Frame {
msec: 1600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "8cfe8847729878519669caa8b702d910"
}
Frame {
msec: 1616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "a2fd8e049d03b87a306bb5b81e3f7311"
}
Frame {
msec: 1632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "29bd4d5e36cb6b232f513b6bb0c00b28"
+ }
+ Frame {
+ msec: 1648
+ hash: "9637f14efb2e355bfe886d7c5f2a8d38"
}
Key {
type: 6
- key: 16777233
- modifiers: 0
+ key: 16777249
+ modifiers: 33554432
text: ""
autorep: false
count: 1
}
Frame {
- msec: 1648
- hash: "8dca7a7912ddaa853dff9c09882082b1"
- }
- Frame {
msec: 1664
- hash: "5c3ebee155e29a0ba4a45706dd87396a"
+ hash: "0365fa8845c3c1e53ef35d22423eb973"
}
Frame {
msec: 1680
- hash: "29a517a66867f6f527c6db5bb5651f92"
+ hash: "bf88d5d2cd2ff062c1cc8a391a238b1d"
}
Frame {
msec: 1696
- hash: "a4fde31f55f866224eca2b51586b601f"
+ hash: "46b22f33eb80f013e44da11153441864"
}
Frame {
msec: 1712
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
+ hash: "05ae42e3a0296a569dec147c76be273d"
}
Frame {
msec: 1728
- hash: "dd972e37166d1186a717a956343a7758"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "1a8cc65973d08bb949f7a71b0bb8be1a"
}
Frame {
msec: 1744
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "ca3bde8cd8de81c4210fcfd000fe0f5e"
}
Frame {
msec: 1760
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "e06d104d1ed451eea4c1d9bdae9d10f4"
}
Frame {
msec: 1776
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "c95153ae401ad8a2e839905841c074f3"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 1808
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 1824
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 1840
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 1856
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 1872
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 1888
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 1904
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "7031966f014d4acd5b00c46c89f61403"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1920
@@ -518,271 +582,271 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 1952
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 1968
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2064
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 2080
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 2096
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 2112
- hash: "00dedd48bd6861cb4bf4953162a67cc0"
- }
- Key {
- type: 6
- key: 16777248
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 2128
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 2144
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 2160
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 2176
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 2192
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 2208
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 2224
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 2256
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 2272
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 2288
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 2304
- hash: "dd972e37166d1186a717a956343a7758"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 2320
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 2336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 2352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 2384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 2400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 2416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 2432
- hash: "479f192c8cf7b8e4407655382402700f"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 2448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 2464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 2480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 2592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 2608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 2624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 2640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 2656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 2672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 2688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 2704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 2720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 2736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 2752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 2768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 2784
- hash: "24cebf60ade86469a154abaa64f3b40d"
- }
- Key {
- type: 7
- key: 16777248
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 2800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 2816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 2832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 2848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 2880
@@ -790,511 +854,527 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 2912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 2928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 2944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 2960
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
}
Frame {
msec: 3072
- hash: "90ac5ad7ce23786fe838426605e737e1"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 3088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 3104
- hash: "df6f025130dc82f4764def81cec5fa7b"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 3120
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 3136
- hash: "14b328c8ec6276e022643102af80fa44"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 3152
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
+ hash: "73c771b964becb418289e0674571eb6f"
}
Frame {
msec: 3168
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 3184
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "7c55078e04b56c9aba7d227917323021"
}
Frame {
msec: 3200
- hash: "3462a3e166120515e67430600e4653f8"
+ hash: "01c6b78b296c00e4597ae1bd36a65f3a"
}
Frame {
msec: 3216
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 3232
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 3248
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
+ hash: "67e9271f71b2d6d9eb2e230953db06c5"
}
Key {
type: 6
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3232
+ hash: "642a6f4d7b3f467263b8e033578927af"
+ }
+ Frame {
+ msec: 3248
+ hash: "9f000f97b33427860cb5daeb259c72ea"
+ }
+ Frame {
msec: 3264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "d74e3f977b5decb89dda46ea608a933a"
}
Frame {
msec: 3280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "f4e446cd96a3eb1a0df83cf032e7a0b2"
}
Frame {
msec: 3296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "abe715855a79a8ced43000884c4bf04b"
}
Frame {
msec: 3312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "29fd5c17b9a169c1850aa538b4006084"
}
Frame {
msec: 3328
- hash: "9b7503189ecf2999934716f227469463"
- }
- Frame {
- msec: 3344
- hash: "aadc71923926885ccce87e6be1c742d7"
- }
- Frame {
- msec: 3360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "cefdcaebb9c319ac358b0d7fc9424327"
}
Key {
type: 7
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3344
+ hash: "85bfa23957bb5cd947e0819ffa442ea3"
+ }
+ Frame {
+ msec: 3360
+ hash: "48f18d9d12331dc8725ea9e4b7f79823"
+ }
+ Frame {
msec: 3376
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "63cde59ffbbe2b9087ca228733de18dd"
}
Frame {
msec: 3392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "73f5d4594f23ff4aac5e42aee00dce81"
}
Frame {
msec: 3408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "7f2ae476246b23d79997a2545723ff62"
}
Frame {
msec: 3440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3456
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "264f34128dfe563126b9f187c65df61e"
}
Frame {
msec: 3472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "5c10e6b0e541fe913b589601a55ea6ce"
}
Frame {
msec: 3632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "2c62584e4c09c1d22f9016aa6fa74e10"
}
Frame {
msec: 3648
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fd8f53e36a86ae22deb4f7af5aa1eb81"
}
Frame {
msec: 3664
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "e33226eb0e81a64bed7bcdb50e99cd13"
}
Frame {
msec: 3680
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "a7053a2b7bc9f4749c290bace6b55634"
}
Frame {
msec: 3696
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "782cb4e647e849ac7299d41f04bc89e3"
}
Frame {
msec: 3712
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "0f7d04fe594ae027364a7c2b570c5a27"
}
Frame {
msec: 3728
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "dfb00adcdc2f68bfb691bce47845b0e7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3744
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 3760
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 3776
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 3792
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 3808
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 3824
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 3840
image: "cursorDelegate.3.png"
}
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 3856
- hash: "47942253c07fd39894445ff5e5b9608c"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 3872
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 3888
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 3904
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 3920
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 3936
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 3952
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 3968
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4064
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 4080
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 4096
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 4112
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 4128
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 4144
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 4160
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 4176
- hash: "47942253c07fd39894445ff5e5b9608c"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 4192
- hash: "a62f1cbf43da0381c7c9099d47ded882"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 4208
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 4224
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 4240
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 4256
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 4272
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 4288
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 4304
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 4320
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 4336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 4352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 4368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 4384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 4400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 4416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 4432
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 4448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 4464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 4480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 4592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 4608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 4624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 4640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 4656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 4672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 4688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 4704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 4720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 4736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 4752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 4768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 4784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 4800
@@ -1302,2254 +1382,118 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 4832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 4848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 4864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
Frame {
msec: 4880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 130; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 4896
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 4912
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
Frame {
msec: 4928
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
Frame {
msec: 4944
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 133; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 134; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 4960
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 135; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
Frame {
msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 136; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
Frame {
msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 137; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 139; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
Frame {
msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
Frame {
msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 141; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 143; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
Frame {
msec: 5072
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
Frame {
msec: 5088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 5104
- hash: "7643fcfb740d33b87915300684e85a44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 150; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
Frame {
msec: 5120
- hash: "1bd041a5e8d2237b51720fed82250303"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
Frame {
msec: 5136
- hash: "1a00c9d3ce747e3bc7ee5878d21260b4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 5152
- hash: "803896c1be68588ba2cddd7effbb8d62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 5168
- hash: "282ab572698088fba3aba8e6a091aa38"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
Frame {
msec: 5184
- hash: "24402d9e4fabd78bc8f3921db82e554e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 5200
- hash: "39a89e9ca7c4edd9c8503927d639df0f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 5216
- hash: "b984b7d032544acd4dab8901e0af1ef5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 5232
- hash: "e014414626407b0446939ad2ce38b7dd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 5248
- hash: "beccb93613279e2f48507ddc9a4418e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 97
- modifiers: 0
- sendToViewport: true
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 5264
- hash: "dd861f8dc89587301e860217fdf2a701"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "1ae0b7a18a7d3ebe4871a0045005e2b7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "071e1f8bcc0e541b23d134f32c19d20b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "e8ce2716f4595bc5bf68c24c8a63bbfe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5328
- hash: "d36a35503af76b12fe5cec65e3f22eda"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5344
- hash: "cea0f90a56fd5789b3e166f09f2bfcec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5360
- hash: "151f5357d9c1a3f1fe09380a287abab0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5376
- hash: "bdab9d7077734087cb7f9516e9c517bc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5392
- hash: "6d6d929a7c7be1d2e7d1b2f98a6866be"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "3fbe3f45afc5aa40fff7f795ced8a05d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5424
- hash: "b35b4dc480aeb76912d927b0ff8676c6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 189; y: 93
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5440
- hash: "94e82e888280f20cce3ac38b353b79f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 192; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5456
- hash: "4674fbd35e467bed780a5ea2fe2e258b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5472
- hash: "698827bfa7ff2eae6b0e0efa99bb15bb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5488
- hash: "67c7adef5e41481d631f54d34423b93d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5504
- hash: "097512c005127fa3ebfcbc52808264a8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5520
- hash: "ad64b5913350e6c6fda199ecb34278f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5536
- hash: "3237e88e0f40595d2fde62723c00b7fa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5552
- hash: "18db89296849f22a7af0a1ffc9762a32"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5568
- hash: "7f6ac84baaa2c5fcd22ba45172611840"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5584
- hash: "7b887d3aa44229d9f25fdde8f5ccf471"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5600
- hash: "b0c08726d0f2a460d5862cd2d7ee6230"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5616
- hash: "d99389a3287d453b942f070d8c1e86e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5632
- hash: "a0751fa826b03cb25e615c6a1435d92a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5648
- hash: "f33da88ae881c846bd86ab3dc4f12efc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5664
- hash: "7049bee9a984a2c2d3101eb6d3cce31e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5680
- hash: "72757a5099748b70241a0d4279e42313"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5696
- hash: "705feb098ebb2d689526d9271098d6b5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5712
- hash: "49de92770edb0aae82cf66ae42b31caa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5728
- hash: "70fe89f9dce556ec1859f325aa27b7db"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5744
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5776
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5792
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5808
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 226; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5824
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5840
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5856
- hash: "bdd0d1bea8590b40cdce2fb45e17901b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5872
- hash: "007a5d123eea589264e22f862f1bcac6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5888
- hash: "3a83635e8371f3e26baf83c285b7801d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5904
- hash: "6615931007ab0f9da070b6316068ad12"
- }
- Frame {
- msec: 5920
- hash: "be695ab0dced25c1c498d977fc822cef"
- }
- Frame {
- msec: 5936
- hash: "46dea7348473bc6ce4ea696292e5aae0"
- }
- Frame {
- msec: 5952
- hash: "23ce0ba723ffe4253610fdc635df9ae2"
- }
- Frame {
- msec: 5968
- hash: "9d6243396fd98b7efd14ae8a67297e79"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 230; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 225; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "707f51caadf24d3ed88b69c290d56971"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "c23b2afed7fa0e3dbce1183cf8e8d724"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 205; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "653b2e2d711c1abc1893d0068f4c531c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6288
- hash: "246a73b19421f0ea8ec444429bd6704e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6304
- hash: "3878df64c0cecb2051e04dafe16ad407"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6320
- hash: "1cf92a793a4d145acce08c61cca3ba4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6336
- hash: "6c5f70c941a04172aae855eed1516971"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 197; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6352
- hash: "5f4b8d6ad49de0ea1a2ee057e783b363"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6368
- hash: "dc185cf4a14801d7bcc24ceadffe312b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6384
- hash: "6934c069d1b7daf1c2dd76739941c7c2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6400
- hash: "415510947b49a08459523fa2221d3609"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6416
- hash: "9586619df75f07cc1f01201abd0f1f43"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6432
- hash: "d016b14c9d5e5cd2545f1c85aa1edc4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6448
- hash: "4100837adeaf1557534f5c243eeacc37"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6464
- hash: "a9351f624dc7de55ca8e799cf4371e75"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6480
- hash: "8f2f9ba7de4e01767dda2c6d8f09e218"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6496
- hash: "fb9b7d7e1aa140efc7e39cbca7299d34"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6512
- hash: "eb1c2399d5779cc3382f02e69e5a31f1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "3bd98dc8a8cfb7af8a5f2ab11f387065"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6544
- hash: "1eea9af6e5f359b96df86d56d74f8375"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6560
- hash: "74c68b948d8e1d3c716eba5f1a186464"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6576
- hash: "7103ecc0c21208d210938b0cd86fa4e2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "187b7801be7cd9643c707016166fcb38"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "571fe7704d5d95e91d4bd411ab00edf0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6624
- hash: "2b6fd25a47274ffa56c3d0020babfdfc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6640
- hash: "febcd6b5fc1806ff57d1669c79aa4cb2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6656
- hash: "5c731fc4a2aeccf55a0af2b7171f25ce"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6672
- hash: "7d9df9dd9a99eabaa4b426438e44d612"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "48278540489142f8a63ed120f4b956c2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "d08abdfb587a7ec07872cb662526b6d8"
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "4622738082ac75e00b6c63e846b7e98b"
- }
- Frame {
- msec: 6752
- hash: "87a9f2facbaba462c562f09947bb7ded"
- }
- Frame {
- msec: 6768
- hash: "77e730ece9f195c3627508d1c2a126fc"
- }
- Frame {
- msec: 6784
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
- }
- Frame {
- msec: 6800
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 6816
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 6832
- hash: "3462a3e166120515e67430600e4653f8"
- }
- Frame {
- msec: 6848
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Frame {
- msec: 6864
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
- }
- Frame {
- msec: 6880
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
- }
- Frame {
- msec: 6896
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Frame {
- msec: 6912
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Frame {
- msec: 6928
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Frame {
- msec: 6944
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Frame {
- msec: 6960
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Frame {
- msec: 6976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7072
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Frame {
- msec: 7088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Frame {
- msec: 7104
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Frame {
- msec: 7120
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Frame {
- msec: 7136
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Frame {
- msec: 7152
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
- }
- Frame {
- msec: 7168
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
- }
- Frame {
- msec: 7184
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Frame {
- msec: 7200
- hash: "3462a3e166120515e67430600e4653f8"
- }
- Frame {
- msec: 7216
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 7232
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 7248
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
- }
- Frame {
- msec: 7264
- hash: "77e730ece9f195c3627508d1c2a126fc"
- }
- Frame {
- msec: 7280
- hash: "87a9f2facbaba462c562f09947bb7ded"
- }
- Frame {
- msec: 7296
- hash: "4622738082ac75e00b6c63e846b7e98b"
- }
- Frame {
- msec: 7312
- hash: "9fcec7616e28cb8317709656fd94f480"
- }
- Frame {
- msec: 7328
- hash: "d08abdfb587a7ec07872cb662526b6d8"
- }
- Frame {
- msec: 7344
- hash: "48278540489142f8a63ed120f4b956c2"
- }
- Frame {
- msec: 7360
- hash: "7d9df9dd9a99eabaa4b426438e44d612"
- }
- Frame {
- msec: 7376
- hash: "5c731fc4a2aeccf55a0af2b7171f25ce"
- }
- Frame {
- msec: 7392
- hash: "febcd6b5fc1806ff57d1669c79aa4cb2"
- }
- Frame {
- msec: 7408
- hash: "4ad2c0877360b0e1bf2212f9455f741e"
- }
- Frame {
- msec: 7424
- hash: "4df1951aac4ed1957925c95e112b0766"
- }
- Frame {
- msec: 7440
- hash: "bfbb624abe63639f2a7cb826b6b47393"
- }
- Frame {
- msec: 7456
- hash: "538cf4ee98145b3801e198b036e24a46"
- }
- Frame {
- msec: 7472
- hash: "5602c039a304ac0b1fd99957970a825b"
- }
- Frame {
- msec: 7488
- hash: "9ddd7709269b9a008e15d942e156e13a"
- }
- Frame {
- msec: 7504
- hash: "91d7c43f5f985d624e77da43ba5fb90f"
- }
- Frame {
- msec: 7520
- hash: "9153b0419d28e3c8137b58f95451cd58"
- }
- Frame {
- msec: 7536
- hash: "c5aad5ea4db81cf72f1ff390ed1dc868"
- }
- Frame {
- msec: 7552
- hash: "47b52ce9e5c705017e94b419b53d20d9"
- }
- Frame {
- msec: 7568
- hash: "f968e3289a2a6343cdb64e37b83f142a"
- }
- Frame {
- msec: 7584
- hash: "6fe898a37b17b6b6fa9a2971b518d185"
- }
- Frame {
- msec: 7600
- hash: "90ced2e487b6e760f2ad2c7d6375a36f"
- }
- Frame {
- msec: 7616
- hash: "b2d87713d12a54d4d7b6fd6ba2671704"
- }
- Frame {
- msec: 7632
- hash: "edce9857bd0e93ab841ae62ffba0149f"
- }
- Frame {
- msec: 7648
- hash: "13ce69facee6bf01c9712db1781c5ef9"
- }
- Frame {
- msec: 7664
- hash: "64924e43e004f0d9e90c23f61813c732"
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Frame {
- msec: 7696
- hash: "9c384359c664a71b5b6b9f9d62dd38bf"
- }
- Frame {
- msec: 7712
- hash: "5998579d228bcf0efdbcee805796ec23"
- }
- Frame {
- msec: 7728
- hash: "fe69cab70ad5b25f757bc413b895ff94"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Frame {
- msec: 7760
- hash: "460a4cbee55ccdeda1941c8dccf08cbd"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Frame {
- msec: 7792
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Frame {
- msec: 7808
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Frame {
- msec: 7824
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Frame {
- msec: 7840
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Frame {
- msec: 7856
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Frame {
- msec: 7872
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Frame {
- msec: 7888
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Frame {
- msec: 7904
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Frame {
- msec: 7920
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Frame {
- msec: 7936
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Frame {
- msec: 7952
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Frame {
- msec: 7968
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Frame {
- msec: 7984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8064
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Frame {
- msec: 8080
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Frame {
- msec: 8096
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Frame {
- msec: 8112
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Frame {
- msec: 8128
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Frame {
- msec: 8144
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Frame {
- msec: 8160
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Frame {
- msec: 8176
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Frame {
- msec: 8192
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Frame {
- msec: 8208
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Frame {
- msec: 8224
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Frame {
- msec: 8240
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Frame {
- msec: 8256
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Frame {
- msec: 8272
- hash: "460a4cbee55ccdeda1941c8dccf08cbd"
- }
- Frame {
- msec: 8288
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Frame {
- msec: 8304
- hash: "70fe89f9dce556ec1859f325aa27b7db"
- }
- Frame {
- msec: 8320
- hash: "49de92770edb0aae82cf66ae42b31caa"
- }
- Frame {
- msec: 8336
- hash: "705feb098ebb2d689526d9271098d6b5"
- }
- Frame {
- msec: 8352
- hash: "72757a5099748b70241a0d4279e42313"
- }
- Frame {
- msec: 8368
- hash: "7049bee9a984a2c2d3101eb6d3cce31e"
- }
- Frame {
- msec: 8384
- hash: "f33da88ae881c846bd86ab3dc4f12efc"
- }
- Frame {
- msec: 8400
- hash: "a0751fa826b03cb25e615c6a1435d92a"
- }
- Frame {
- msec: 8416
- hash: "d99389a3287d453b942f070d8c1e86e8"
- }
- Frame {
- msec: 8432
- hash: "e3219357e73a2dfd5b80dfbd6feb79e2"
- }
- Frame {
- msec: 8448
- hash: "c0953accd856883c813d4ecf99fb632b"
- }
- Frame {
- msec: 8464
- hash: "185743339cba9dfc1a2c2ff1efd23855"
- }
- Frame {
- msec: 8480
- hash: "30a4419de779037fd84bd70a99c4d6de"
- }
- Frame {
- msec: 8496
- hash: "1d9cbd0814831c518e9e8041fe8285c9"
- }
- Frame {
- msec: 8512
- hash: "81d660df1b0eab7c382991b600f88ba3"
- }
- Frame {
- msec: 8528
- hash: "7ee1467525b9fe3b6a32fba8c2454df1"
- }
- Frame {
- msec: 8544
- hash: "28dd72957652cf130d28d30203b36c59"
- }
- Frame {
- msec: 8560
- hash: "e9697d06a22958cea4f766dd3ec31ca9"
- }
- Frame {
- msec: 8576
- hash: "81970c31a0a1e42929c83ef5140401c2"
- }
- Frame {
- msec: 8592
- hash: "ebb5be43955725bef66bf99bd7288c04"
- }
- Frame {
- msec: 8608
- hash: "afbf0645ea651b2c459eeb43bdc65992"
- }
- Frame {
- msec: 8624
- hash: "42bf6ab3963652617f2feb96ee170af5"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "4a5966f600f9b27bf7a65fcc6c1c5d17"
- }
- Frame {
- msec: 8672
- hash: "ecdc1d89af1e76648c8298e2b9940549"
- }
- Frame {
- msec: 8688
- hash: "0ba1e105a7ae41926e2106b60eafdec9"
- }
- Frame {
- msec: 8704
- hash: "96e4f277d4ff76afe0c2d58b4aed3acb"
- }
- Frame {
- msec: 8720
- hash: "f41c6fd9e22354b8f5c940c04930a591"
- }
- Frame {
- msec: 8736
- hash: "00b522554cf6c0c09e5425f4d3c3fcf9"
- }
- Frame {
- msec: 8752
- hash: "e8549c0c361f20d167cab128dc996274"
- }
- Frame {
- msec: 8768
- hash: "976c61615250f9bfa3b4c02ee88bee03"
- }
- Frame {
- msec: 8784
- hash: "06c95d2fa5e2b4751e5693b179e76eb4"
- }
- Frame {
- msec: 8800
- hash: "a3d79197235c4717b1f9af3582118ca6"
- }
- Frame {
- msec: 8816
- hash: "68b23db8f519aa161278074aa318eaa1"
- }
- Frame {
- msec: 8832
- hash: "af967462be12d0b6ddd3571b00804c12"
- }
- Frame {
- msec: 8848
- hash: "46f5c0baa2b95fd418984eebe308157e"
- }
- Frame {
- msec: 8864
- hash: "0a7407c6c751b3f1380a99883e95f1dd"
- }
- Frame {
- msec: 8880
- hash: "9969c206488671c45c43f3a3dd3f5994"
- }
- Frame {
- msec: 8896
- hash: "89efa872ce2e71935b47cac101bf15c9"
- }
- Frame {
- msec: 8912
- hash: "a4545a0c50fb071d267b06bf2d114802"
- }
- Frame {
- msec: 8928
- hash: "f4df98459c18399e1c6b2d8a43bdd678"
- }
- Frame {
- msec: 8944
- hash: "027eb091eea8bf51d7ad3ff44120e075"
- }
- Frame {
- msec: 8960
- hash: "138ec35b850d20664f905a4eea6f7456"
- }
- Frame {
- msec: 8976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9072
- hash: "138ec35b850d20664f905a4eea6f7456"
- }
- Frame {
- msec: 9088
- hash: "027eb091eea8bf51d7ad3ff44120e075"
- }
- Frame {
- msec: 9104
- hash: "f4df98459c18399e1c6b2d8a43bdd678"
- }
- Frame {
- msec: 9120
- hash: "a4545a0c50fb071d267b06bf2d114802"
- }
- Frame {
- msec: 9136
- hash: "89efa872ce2e71935b47cac101bf15c9"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
index cc1774fdd6..dfd30f65bc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png
index 60eba1686a..9d4eb9b8b7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png
index d4663f731c..968517edb9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
index dc1bb52f08..eb62c19cde 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml
index f1099c8721..a7df61f252 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml
@@ -6,99 +6,99 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 32
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 48
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 64
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 80
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 96
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 320
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 336
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 352
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 368
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 384
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 6
@@ -110,15 +110,15 @@ VisualTest {
}
Frame {
msec: 400
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 416
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 432
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -130,27 +130,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 464
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 480
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 496
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 512
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 528
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -162,15 +162,15 @@ VisualTest {
}
Frame {
msec: 544
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 560
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 576
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -182,27 +182,27 @@ VisualTest {
}
Frame {
msec: 592
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 608
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 624
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 640
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 656
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 672
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -214,19 +214,19 @@ VisualTest {
}
Frame {
msec: 688
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 704
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 720
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 736
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -238,23 +238,23 @@ VisualTest {
}
Frame {
msec: 752
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -266,19 +266,19 @@ VisualTest {
}
Frame {
msec: 832
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 848
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 864
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 880
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -290,19 +290,19 @@ VisualTest {
}
Frame {
msec: 896
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 912
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 928
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 944
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -318,15 +318,15 @@ VisualTest {
}
Frame {
msec: 976
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 992
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1008
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -338,23 +338,23 @@ VisualTest {
}
Frame {
msec: 1024
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1040
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1056
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1072
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1088
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 1104
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1120
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1136
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -386,23 +386,23 @@ VisualTest {
}
Frame {
msec: 1152
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1168
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1184
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1200
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1216
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -414,19 +414,19 @@ VisualTest {
}
Frame {
msec: 1232
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1248
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1264
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1280
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -438,19 +438,19 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1312
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1328
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1344
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -462,19 +462,19 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1376
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1392
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1408
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -486,23 +486,23 @@ VisualTest {
}
Frame {
msec: 1424
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1440
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1456
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1472
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1488
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -514,15 +514,15 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1520
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1536
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 7
@@ -534,79 +534,79 @@ VisualTest {
}
Frame {
msec: 1552
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1568
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1584
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1600
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1616
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1632
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1648
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1664
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1680
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1696
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1712
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1728
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1744
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1760
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1776
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1792
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1808
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1824
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1840
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 6
@@ -618,19 +618,19 @@ VisualTest {
}
Frame {
msec: 1856
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1872
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1888
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1904
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1920
@@ -638,19 +638,19 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1952
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1968
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1984
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -662,23 +662,23 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2016
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2032
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2048
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2064
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -690,23 +690,23 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2096
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2112
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2128
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2144
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -718,23 +718,23 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2176
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2192
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2208
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2224
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -746,11 +746,11 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2256
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -762,23 +762,23 @@ VisualTest {
}
Frame {
msec: 2272
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2288
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2304
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2320
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2336
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -790,15 +790,15 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2368
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2384
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -810,55 +810,55 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2416
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2432
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2448
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2464
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2480
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2496
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2512
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2528
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2544
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2560
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2576
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2592
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -870,23 +870,23 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2624
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2640
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2656
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2672
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -898,23 +898,23 @@ VisualTest {
}
Frame {
msec: 2688
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2704
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2720
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2736
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2752
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -926,15 +926,15 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -946,19 +946,19 @@ VisualTest {
}
Frame {
msec: 2816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2832
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2848
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2864
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -974,15 +974,15 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2912
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2928
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -994,23 +994,23 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2960
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2976
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2992
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 3008
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -1022,23 +1022,23 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3040
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3056
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3072
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3088
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -1050,155 +1050,155 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3120
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3136
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3152
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3168
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3184
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3200
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3216
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3232
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3248
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3264
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3280
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3296
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3312
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3328
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3344
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3360
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3376
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3392
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3408
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3424
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3440
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3456
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3472
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3488
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3504
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3520
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3536
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3552
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3568
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3584
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3600
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3616
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3632
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3648
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3664
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3680
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3696
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -1210,27 +1210,27 @@ VisualTest {
}
Frame {
msec: 3712
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3728
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3744
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3760
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3776
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3792
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 7
@@ -1242,11 +1242,11 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3824
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3840
@@ -1254,118 +1254,118 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3872
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3888
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3904
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3920
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3936
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3952
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3968
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3984
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4000
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4016
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4032
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4048
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4064
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4080
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4096
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..5049c3f81e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png
new file mode 100644
index 0000000000..ee6e16a3e1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png
new file mode 100644
index 0000000000..d9d22520a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png
new file mode 100644
index 0000000000..d9d22520a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..cf99d98c15
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png
new file mode 100644
index 0000000000..e3937f03db
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png
new file mode 100644
index 0000000000..2fe33379c2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png
new file mode 100644
index 0000000000..97b99134d5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png
new file mode 100644
index 0000000000..08e059f865
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png
new file mode 100644
index 0000000000..bbc5ba24df
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png
new file mode 100644
index 0000000000..465b64e8ed
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png
new file mode 100644
index 0000000000..d9d22520a4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml
new file mode 100644
index 0000000000..a8173be17e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 32
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 48
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 64
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 80
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 96
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 112
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 128
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 144
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 160
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 176
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 192
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 208
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 224
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 240
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 256
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 272
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 288
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 304
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 320
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 352
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 368
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 384
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 400
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 432
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 448
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 464
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 480
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 496
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 512
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 528
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 544
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 560
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 576
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 592
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 608
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 624
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 640
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 672
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 704
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 720
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 736
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 752
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 768
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 784
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 800
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 816
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 832
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 848
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 864
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 880
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 896
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 912
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 928
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 944
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 960
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 992
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1008
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1024
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1040
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1056
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1072
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1088
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1104
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1120
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1136
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1152
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1168
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1184
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1200
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1216
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1232
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1248
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1264
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1280
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1296
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1328
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1344
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1360
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1376
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1424
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1440
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1456
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1488
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1504
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1520
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1536
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1552
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Frame {
+ msec: 1584
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Frame {
+ msec: 1600
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1648
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1664
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1680
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1696
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1728
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1760
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1776
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1808
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1824
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1856
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1872
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1888
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1904
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Frame {
+ msec: 1952
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Frame {
+ msec: 1968
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Frame {
+ msec: 2000
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2048
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2080
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2096
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2112
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2144
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2176
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2192
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2208
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2224
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2240
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2272
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2288
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2304
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2320
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2352
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2384
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2400
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2416
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2464
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2480
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2496
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2512
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2528
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2576
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2592
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2608
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2640
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2656
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2672
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2688
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2720
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2736
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2752
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2768
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2784
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2832
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2848
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2864
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2912
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2928
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ Frame {
+ msec: 2960
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ Frame {
+ msec: 2976
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3008
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3024
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3040
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3088
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3104
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3152
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3184
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3200
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3216
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3264
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3280
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3296
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3344
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3360
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3376
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3392
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3440
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3456
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3472
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3488
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3520
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3536
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3552
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3568
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3584
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3632
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3648
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3664
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3712
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3728
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3760
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3776
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3792
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3808
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3824
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3840
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3872
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3888
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3904
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3920
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3936
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3952
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3968
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4000
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4016
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4032
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4048
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4096
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4112
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4128
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4160
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4192
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4208
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4240
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4272
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4304
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4320
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4336
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4352
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4368
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4400
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4416
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4432
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4448
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4496
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4512
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4528
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4544
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4576
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4592
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4624
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4640
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4656
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4672
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4688
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4704
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4720
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4736
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4752
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4768
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4784
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4800
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4832
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4864
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4880
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4896
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4912
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4928
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4944
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4976
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4992
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5008
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5040
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5056
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5072
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5088
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5104
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5120
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5136
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5152
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5168
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5184
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5200
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5216
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5232
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5248
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5264
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5280
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5296
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5312
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5328
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5344
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5360
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5376
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5392
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5408
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5424
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5440
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5456
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5472
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5488
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5504
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5520
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5536
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5552
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5568
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5584
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5600
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5616
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5632
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5648
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5664
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5680
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5696
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5712
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5728
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5744
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5760
+ image: "usingMultilineEdit.5.png"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5792
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5808
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5824
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "173735fb4be11da603fb8ae8cffc609d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "173735fb4be11da603fb8ae8cffc609d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "b337a09f359fb2a237731c66ab95c92c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "32719becb40f8c6bd49b5f5754786913"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6208
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6224
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6240
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6256
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "5de7bbfdf96d84c8fbe74b4817a3c88a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "5de7bbfdf96d84c8fbe74b4817a3c88a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "056d22660f6feedfb453755978aa4c1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "9d8568931fdca572dd31ea62ebbaf76a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "29aa2da8a830d5605a8d2d2543097177"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "154e312998b32cc09daf1693d07eda2f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6608
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6624
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6640
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6656
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6672
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ image: "usingMultilineEdit.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6912
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6928
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6944
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6960
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6976
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6992
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7008
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7024
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7040
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7056
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7072
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7088
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7120
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7136
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7152
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7168
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7200
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7216
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7232
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7248
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7264
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7280
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7296
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7312
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7328
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7344
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7360
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7376
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7392
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7408
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7424
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7440
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7456
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7472
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7488
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7504
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7520
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7536
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7552
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7568
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7600
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7616
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7648
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7664
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7680
+ image: "usingMultilineEdit.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7712
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7744
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7760
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7776
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7792
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7808
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7824
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7840
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7856
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7872
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7888
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7904
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7920
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7936
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7952
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "bec2aea61fef64475e638848b96d28c3"
+ }
+ Frame {
+ msec: 7984
+ hash: "bec2aea61fef64475e638848b96d28c3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "54177e0d53373636850e18399640fee8"
+ }
+ Frame {
+ msec: 8016
+ hash: "54177e0d53373636850e18399640fee8"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "81c03bd9dfd562e9f13784c906fa0d9e"
+ }
+ Frame {
+ msec: 8048
+ hash: "81c03bd9dfd562e9f13784c906fa0d9e"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8080
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8112
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8128
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8144
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8160
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8176
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8192
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8224
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8240
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8256
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8288
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8304
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8320
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8352
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8368
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8384
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8416
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8432
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8448
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8464
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8496
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8512
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8528
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8560
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8576
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8592
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8608
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8624
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8640
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8688
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8704
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8720
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8736
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8752
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8768
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8784
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8800
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8816
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8832
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8848
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8864
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8880
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8896
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8912
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8928
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8944
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8960
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8976
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8992
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9008
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9024
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9040
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9056
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9072
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9088
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9104
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9120
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9136
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9152
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9168
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9184
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9200
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9232
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9312
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9328
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9344
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9360
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9376
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9392
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9408
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9424
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9440
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9472
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9488
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9504
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9520
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9536
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9568
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9584
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9600
+ image: "usingMultilineEdit.9.png"
+ }
+ Frame {
+ msec: 9616
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9632
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9648
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9664
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9696
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9712
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9728
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9744
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9760
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9776
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9792
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9808
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9824
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9840
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9856
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9872
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9888
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9904
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9920
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9936
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9952
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9968
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9984
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10000
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10016
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10032
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10048
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10064
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10080
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10096
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10128
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10144
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10160
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10176
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10192
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10208
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10224
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10256
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10272
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10288
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10304
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10320
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10336
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10352
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10384
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10400
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10416
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10432
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10448
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10480
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10496
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10512
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10528
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10544
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10560
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10592
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10608
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10624
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10640
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10672
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10688
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10704
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10720
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10736
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10752
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10768
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10784
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10800
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10816
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10832
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10848
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10864
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10880
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10896
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10912
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10928
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10944
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10960
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10976
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10992
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11008
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11024
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11040
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11056
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11072
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11088
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11104
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11120
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11136
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11152
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11168
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11184
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11200
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11216
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11232
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11248
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11264
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11280
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11296
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11312
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11328
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11344
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11360
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11376
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11392
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11408
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11424
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11440
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11456
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11472
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11488
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11504
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11520
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 11536
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11552
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11568
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11584
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11600
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11616
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
new file mode 100644
index 0000000000..61606b2bd0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png
new file mode 100644
index 0000000000..a4b28fcd32
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png
new file mode 100644
index 0000000000..5be6bbb867
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png
new file mode 100644
index 0000000000..a220f6545c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png
new file mode 100644
index 0000000000..6946707f64
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png
new file mode 100644
index 0000000000..4eeb8ec79f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png
new file mode 100644
index 0000000000..4eeb8ec79f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml
new file mode 100644
index 0000000000..f1bb5a9094
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml
@@ -0,0 +1,2467 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "b6611676a7d38162d5c0210ea9d0e291"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 33554432
+ text: "54"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 32
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 48
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Frame {
+ msec: 64
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 80
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Frame {
+ msec: 96
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 112
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Frame {
+ msec: 128
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Frame {
+ msec: 144
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 160
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 176
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 192
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Key {
+ type: 7
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 208
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 224
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 240
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 256
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 272
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 288
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 304
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 320
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 336
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 352
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 368
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 384
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 400
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 416
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 432
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 448
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 464
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 480
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 496
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 512
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 528
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 560
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 576
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 592
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 608
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 624
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 640
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 656
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 672
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 704
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 720
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 736
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 752
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 768
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 784
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 816
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 832
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 848
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 880
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 896
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 928
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 944
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 960
+ image: "wrap.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 992
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1008
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1024
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1040
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1056
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1072
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1088
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1104
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1120
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1136
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1152
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1168
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1184
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1200
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1216
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1232
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1248
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1264
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1280
+ hash: "29aaa213e4b146199289b5383528bc88"
+ }
+ Frame {
+ msec: 1296
+ hash: "29aaa213e4b146199289b5383528bc88"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1328
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1344
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1360
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1376
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1408
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1424
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1440
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1456
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1472
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1488
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1504
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1520
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1536
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1552
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1584
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1600
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1616
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1632
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1648
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1664
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1680
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1696
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1712
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1728
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Frame {
+ msec: 1744
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Frame {
+ msec: 1760
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1776
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1808
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1824
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1840
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1856
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1872
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1888
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1904
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1920
+ image: "wrap.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1952
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1968
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 1984
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2000
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2016
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2032
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2048
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2080
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2096
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2112
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2144
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2160
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2176
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2192
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2208
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 6
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2240
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2256
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2272
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2288
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2304
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Key {
+ type: 7
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Frame {
+ msec: 2336
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Frame {
+ msec: 2352
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2384
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2400
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2416
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2432
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2464
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2480
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2512
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2528
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2544
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2576
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2592
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2608
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2624
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2640
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2656
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2672
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2688
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2704
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2720
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2736
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2752
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2768
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2784
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2800
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2816
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2832
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2848
+ hash: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Frame {
+ msec: 2864
+ hash: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Frame {
+ msec: 2880
+ image: "wrap.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2912
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2928
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2960
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2976
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2992
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3008
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3024
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3040
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3056
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3072
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3088
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3104
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3120
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3136
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3152
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3168
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3184
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3200
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3216
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3232
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3248
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3264
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3280
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3296
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3328
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3344
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3360
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3376
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3392
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3408
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3424
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3440
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3456
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3472
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3488
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3504
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3520
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3536
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3552
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3568
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3584
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3600
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3616
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3632
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3648
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3664
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3712
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3728
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3744
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3760
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3776
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3792
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3808
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3824
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3840
+ image: "wrap.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3872
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3888
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3904
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3920
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3936
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3952
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3968
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3984
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4000
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 4016
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4032
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Frame {
+ msec: 4048
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Frame {
+ msec: 4064
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4096
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4112
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4128
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4144
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4160
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4176
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4192
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4208
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4224
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4240
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4256
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4272
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4304
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4320
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4336
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4352
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4368
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4384
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4400
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4416
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4432
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4448
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4464
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4496
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4512
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4528
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4544
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4576
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4592
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4608
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4624
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4640
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4656
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4672
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4688
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4704
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4720
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4736
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4752
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4768
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4784
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4800
+ image: "wrap.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4832
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4848
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4864
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4880
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Key {
+ type: 6
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4896
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4912
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4928
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4944
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Key {
+ type: 7
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4976
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4992
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5008
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5024
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5040
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5056
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5072
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5088
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5104
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5120
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5136
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5152
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5168
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5184
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5200
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5216
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5232
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5248
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5264
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5280
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5296
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5312
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5328
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5344
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5360
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5376
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5392
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5408
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5424
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5440
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5456
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5472
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5488
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5504
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5520
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5536
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5552
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5568
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5584
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5600
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5616
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5632
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5648
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5664
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5680
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5696
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5712
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5728
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5744
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5760
+ image: "wrap.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5792
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5808
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5824
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5840
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5856
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5872
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5888
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5904
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5920
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5936
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5952
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5968
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5984
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6000
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6016
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6032
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6048
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6064
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6080
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6096
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6112
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6128
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6144
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6160
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6176
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6192
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6208
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6224
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6240
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6256
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6272
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6288
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6304
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6320
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6336
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6352
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6368
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6384
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6400
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6416
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6432
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6448
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6464
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6480
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6496
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6512
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6528
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6544
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6560
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6576
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6592
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6608
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6624
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6640
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6656
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6672
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6688
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6704
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6720
+ image: "wrap.6.png"
+ }
+ Frame {
+ msec: 6736
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6752
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6768
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6784
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6800
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6816
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6832
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6848
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6864
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png
new file mode 100644
index 0000000000..b24344c344
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png
new file mode 100644
index 0000000000..5e29359b0c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png
new file mode 100644
index 0000000000..0ffee647ff
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png
new file mode 100644
index 0000000000..6c56e9c331
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png
new file mode 100644
index 0000000000..276170d3ea
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png
new file mode 100644
index 0000000000..3d8709fd16
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png
new file mode 100644
index 0000000000..80b960c197
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png
new file mode 100644
index 0000000000..72472771c3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png
new file mode 100644
index 0000000000..af5a996b7b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml
new file mode 100644
index 0000000000..0407aaf366
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml
@@ -0,0 +1,1499 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "6e8324bf913d9df21a59ab4337257c15"
+ }
+ Frame {
+ msec: 32
+ hash: "4e068995d68e8939e6560e35b685e839"
+ }
+ Frame {
+ msec: 48
+ hash: "761b09bce25b3b240093d16ad02268d7"
+ }
+ Frame {
+ msec: 64
+ hash: "1ecb6d7d08d4e4e14db28e24a60eccc4"
+ }
+ Frame {
+ msec: 80
+ hash: "642417a56b3d6b8b35f5aec1bf0a9d2c"
+ }
+ Frame {
+ msec: 96
+ hash: "2e24870a44d3fc6c6d5c920bab29d417"
+ }
+ Frame {
+ msec: 112
+ hash: "9a59d0672f2a752943561af89fd71d7f"
+ }
+ Frame {
+ msec: 128
+ hash: "c359dd36910678a30f935a13c8680ee4"
+ }
+ Frame {
+ msec: 144
+ hash: "245f1e127549e9b28c7574ffb143fcde"
+ }
+ Frame {
+ msec: 160
+ hash: "8df3d3dbce673311d88c055e8dffaeb5"
+ }
+ Frame {
+ msec: 176
+ hash: "590fdeaddb3df033a1908a8a95fcd17a"
+ }
+ Frame {
+ msec: 192
+ hash: "a158891c8d2ee3899463412a3363e48c"
+ }
+ Frame {
+ msec: 208
+ hash: "e9ec2c82f46b36fbd0285ce6795c7cf9"
+ }
+ Frame {
+ msec: 224
+ hash: "0a02598af770dfe1d332f10c9482e770"
+ }
+ Frame {
+ msec: 240
+ hash: "8765475468bccbd0df897a533241f3c5"
+ }
+ Frame {
+ msec: 256
+ hash: "4cd9deed66bfdfadde8f8bf34f0e5513"
+ }
+ Frame {
+ msec: 272
+ hash: "139bf5a1811beb2438df4ecfa3bbaac7"
+ }
+ Frame {
+ msec: 288
+ hash: "9d51555afd71a7035e67a543846dcf7f"
+ }
+ Frame {
+ msec: 304
+ hash: "de187b58fc8dfaad2d62e9463691b0c0"
+ }
+ Frame {
+ msec: 320
+ hash: "9f88ac6d71246b06ca7ce9d8d983c91b"
+ }
+ Frame {
+ msec: 336
+ hash: "a43c12a7d6597d171112dc43085a439e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 352
+ hash: "ad38f32755f669837ec2243e355ebc85"
+ }
+ Frame {
+ msec: 368
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
+ }
+ Frame {
+ msec: 384
+ hash: "77850031e012246dd967ac689e353eb3"
+ }
+ Frame {
+ msec: 400
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
+ }
+ Frame {
+ msec: 416
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
+ }
+ Frame {
+ msec: 432
+ hash: "af3a5f1982459164dfec26746172b0eb"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "0de90659472b63dd41a5602197ff502e"
+ }
+ Frame {
+ msec: 464
+ hash: "81e40abf91017614a52e03bb2474549f"
+ }
+ Frame {
+ msec: 480
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 496
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 512
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
+ }
+ Frame {
+ msec: 528
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
+ }
+ Frame {
+ msec: 544
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
+ }
+ Frame {
+ msec: 560
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
+ }
+ Frame {
+ msec: 576
+ hash: "ac98b973e6d12193829139661d3e5847"
+ }
+ Frame {
+ msec: 592
+ hash: "366907376adae4d88d42d1b9e7533ec0"
+ }
+ Frame {
+ msec: 608
+ hash: "5f486d0a21c74f2ba50afcafa8c15453"
+ }
+ Frame {
+ msec: 624
+ hash: "a3bf6dde525e528745272a8e43fc895c"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 640
+ hash: "4ffb297d2a98a3d13b848af569b1b5b5"
+ }
+ Frame {
+ msec: 656
+ hash: "3679a17658e417bf08fc86d4bef0d4e9"
+ }
+ Frame {
+ msec: 672
+ hash: "5c6a25284ffd13350425e792fd143421"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "09a2c1032d0206e20340ae4267525f98"
+ }
+ Frame {
+ msec: 704
+ hash: "0036070d9a7ee854b3612858af46ab59"
+ }
+ Frame {
+ msec: 720
+ hash: "8774509eaa5fc29385da89214ef77589"
+ }
+ Frame {
+ msec: 736
+ hash: "6d4f8ebf046148e5079f498396c119b4"
+ }
+ Frame {
+ msec: 752
+ hash: "4c7d5d2f77116c96357b0791348af058"
+ }
+ Frame {
+ msec: 768
+ hash: "398c927a3525d5b90a5dd7a05ba9467b"
+ }
+ Frame {
+ msec: 784
+ hash: "d84b45f6acb8cbd399d4ed6bf80ce132"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "40c597d9e04e8e0daf62f58b9e7973b3"
+ }
+ Frame {
+ msec: 816
+ hash: "2c7fdd47e29d924e3e008a6840e0e6be"
+ }
+ Frame {
+ msec: 832
+ hash: "2b3229bb1aa220499114f274cf643ce9"
+ }
+ Frame {
+ msec: 848
+ hash: "e55446874c1a343ce3607d679d69d1d4"
+ }
+ Frame {
+ msec: 864
+ hash: "6824708eb176a9cf92f241d4054800dd"
+ }
+ Frame {
+ msec: 880
+ hash: "d386230dd416740625eb4f677ef4531b"
+ }
+ Frame {
+ msec: 896
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
+ }
+ Frame {
+ msec: 912
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
+ }
+ Frame {
+ msec: 928
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
+ }
+ Frame {
+ msec: 944
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
+ }
+ Frame {
+ msec: 960
+ image: "cursorDelegate.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
+ }
+ Frame {
+ msec: 992
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
+ }
+ Frame {
+ msec: 1008
+ hash: "ca78503396613536c8e4076884354cb1"
+ }
+ Frame {
+ msec: 1024
+ hash: "ca78503396613536c8e4076884354cb1"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1040
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
+ }
+ Frame {
+ msec: 1056
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
+ }
+ Frame {
+ msec: 1072
+ hash: "d23d7492b85e4f30994ecd64e8273ff6"
+ }
+ Frame {
+ msec: 1088
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
+ }
+ Frame {
+ msec: 1104
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
+ }
+ Frame {
+ msec: 1120
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
+ }
+ Frame {
+ msec: 1136
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
+ }
+ Frame {
+ msec: 1152
+ hash: "d386230dd416740625eb4f677ef4531b"
+ }
+ Frame {
+ msec: 1168
+ hash: "6824708eb176a9cf92f241d4054800dd"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1184
+ hash: "e8e14dbba33578a36d9c69214333c537"
+ }
+ Frame {
+ msec: 1200
+ hash: "95c6e967f6f445748945c51943cf532f"
+ }
+ Frame {
+ msec: 1216
+ hash: "d145d4cbd0e3a98686b3bac1c5c17093"
+ }
+ Frame {
+ msec: 1232
+ hash: "09348a4108a585dd23c3a252a5c596f6"
+ }
+ Frame {
+ msec: 1248
+ hash: "55126f2c879771e1aa5ced51b54c827a"
+ }
+ Frame {
+ msec: 1264
+ hash: "ebb36a4c2fcb85107033ec2731fc5743"
+ }
+ Frame {
+ msec: 1280
+ hash: "0581a4432d4b3d0c1555a31e772c2575"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "b4030774f06935f1b43fc8f1a69e53a5"
+ }
+ Frame {
+ msec: 1312
+ hash: "655e1739c130888ff83a3b69bb0ab7e3"
+ }
+ Frame {
+ msec: 1328
+ hash: "99fc97c572e7c8949693b32910e6eefb"
+ }
+ Frame {
+ msec: 1344
+ hash: "e9c8bb13c2549047c05d671daa378496"
+ }
+ Frame {
+ msec: 1360
+ hash: "cb344e0d39b5b07ca7d094bf30ce9f53"
+ }
+ Frame {
+ msec: 1376
+ hash: "15ba6e62c693f2bf74bdf86668139985"
+ }
+ Frame {
+ msec: 1392
+ hash: "48133ec73eb9723059eb6e6af3139f2b"
+ }
+ Frame {
+ msec: 1408
+ hash: "0b19e777a04f03774f2d5f5398bdb10f"
+ }
+ Frame {
+ msec: 1424
+ hash: "fc41d9a9aedf9274a68b33603ed6ccd0"
+ }
+ Frame {
+ msec: 1440
+ hash: "fa6e65f0c835b12dc10463711bd73350"
+ }
+ Frame {
+ msec: 1456
+ hash: "25a02c3388e52df550a0332efde90fcd"
+ }
+ Frame {
+ msec: 1472
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1488
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1504
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1520
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1536
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1552
+ hash: "2390443be82acf291856be59fa18fc26"
+ }
+ Frame {
+ msec: 1568
+ hash: "284cd356d551a048d4a000b90217ac72"
+ }
+ Frame {
+ msec: 1584
+ hash: "94fb20c3767e09d1b4254ee6122cf24e"
+ }
+ Frame {
+ msec: 1600
+ hash: "bfac920384425ce9f34505b44eceb523"
+ }
+ Frame {
+ msec: 1616
+ hash: "4a2d434efcb9a57f2013dc6b366e0e4e"
+ }
+ Frame {
+ msec: 1632
+ hash: "d0fbe98dc34c4bb0d1ceb7e4678cc1d5"
+ }
+ Frame {
+ msec: 1648
+ hash: "28ab147983a71e93e5610f53e14bd113"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1664
+ hash: "2e6ee60fe9ff07fa4558134e6b1d6da8"
+ }
+ Frame {
+ msec: 1680
+ hash: "f181e578e865981d7a2073080b381ec1"
+ }
+ Frame {
+ msec: 1696
+ hash: "d7c0558ea16829b52ea6d09814c301b9"
+ }
+ Frame {
+ msec: 1712
+ hash: "c9304cb66c04566cf4374b46ab85e6e7"
+ }
+ Frame {
+ msec: 1728
+ hash: "024dde64822afc9eea63974851fe57e1"
+ }
+ Frame {
+ msec: 1744
+ hash: "8e4520e95a8acc8f1d4b710c4a14898f"
+ }
+ Frame {
+ msec: 1760
+ hash: "6b271c3f1d9d49bbd80a8ee33f3fc09c"
+ }
+ Frame {
+ msec: 1776
+ hash: "eb76a46632856bf07b005cad2ba2f6ab"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
+ }
+ Frame {
+ msec: 1808
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
+ }
+ Frame {
+ msec: 1824
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
+ }
+ Frame {
+ msec: 1840
+ hash: "5697a705f36283213bbe4b5848baa764"
+ }
+ Frame {
+ msec: 1856
+ hash: "8850842afae3060a91d612f7b869fd48"
+ }
+ Frame {
+ msec: 1872
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
+ }
+ Frame {
+ msec: 1888
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
+ }
+ Frame {
+ msec: 1904
+ hash: "b28681bcb414d428588acda377fef838"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ image: "cursorDelegate.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "5c154b54776ed555563d3e5196a8aedd"
+ }
+ Frame {
+ msec: 1952
+ hash: "ee64c0452b325880de3a4fea599c18cc"
+ }
+ Frame {
+ msec: 1968
+ hash: "0776e1557b2d32db1c7c43331c532331"
+ }
+ Frame {
+ msec: 1984
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
+ }
+ Frame {
+ msec: 2000
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
+ }
+ Frame {
+ msec: 2016
+ hash: "874d4b599cb92cd9160960e3b3af74e0"
+ }
+ Frame {
+ msec: 2032
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
+ }
+ Frame {
+ msec: 2048
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
+ }
+ Frame {
+ msec: 2064
+ hash: "0776e1557b2d32db1c7c43331c532331"
+ }
+ Frame {
+ msec: 2080
+ hash: "ee64c0452b325880de3a4fea599c18cc"
+ }
+ Frame {
+ msec: 2096
+ hash: "5c154b54776ed555563d3e5196a8aedd"
+ }
+ Frame {
+ msec: 2112
+ hash: "a5f90da82b51bc866648304a20a1dcd3"
+ }
+ Frame {
+ msec: 2128
+ hash: "b28681bcb414d428588acda377fef838"
+ }
+ Frame {
+ msec: 2144
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
+ }
+ Frame {
+ msec: 2160
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
+ }
+ Frame {
+ msec: 2176
+ hash: "8850842afae3060a91d612f7b869fd48"
+ }
+ Frame {
+ msec: 2192
+ hash: "5697a705f36283213bbe4b5848baa764"
+ }
+ Frame {
+ msec: 2208
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
+ }
+ Frame {
+ msec: 2224
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
+ }
+ Frame {
+ msec: 2256
+ hash: "7defd2ecefeb86b457a2ee76d97424ee"
+ }
+ Frame {
+ msec: 2272
+ hash: "ccf6d45e8822d72482d9b585909b612b"
+ }
+ Frame {
+ msec: 2288
+ hash: "996dddf091394513adda1b1f00bf0c68"
+ }
+ Frame {
+ msec: 2304
+ hash: "3cf94e90eddb4b0815762b89f58f8325"
+ }
+ Frame {
+ msec: 2320
+ hash: "ab9f876450526b37774c6c4a5794c7b1"
+ }
+ Frame {
+ msec: 2336
+ hash: "9109880e9201e92eb17ae87a3648dca7"
+ }
+ Frame {
+ msec: 2352
+ hash: "0e759f2f279057c1f4d1147be5b41214"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
+ }
+ Frame {
+ msec: 2384
+ hash: "77850031e012246dd967ac689e353eb3"
+ }
+ Frame {
+ msec: 2400
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
+ }
+ Frame {
+ msec: 2416
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
+ }
+ Frame {
+ msec: 2432
+ hash: "af3a5f1982459164dfec26746172b0eb"
+ }
+ Frame {
+ msec: 2448
+ hash: "0de90659472b63dd41a5602197ff502e"
+ }
+ Frame {
+ msec: 2464
+ hash: "81e40abf91017614a52e03bb2474549f"
+ }
+ Frame {
+ msec: 2480
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 2512
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 2528
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 2544
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 2560
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 2576
+ hash: "e26dbfb26415b21198add56d5de02cb2"
+ }
+ Frame {
+ msec: 2592
+ hash: "fa2877a963417789b82170b32e0af7a0"
+ }
+ Frame {
+ msec: 2608
+ hash: "860b39f92c412a7d946f882d8f99d837"
+ }
+ Frame {
+ msec: 2624
+ hash: "d7b8c52aef183965a97d82a18b03ed94"
+ }
+ Frame {
+ msec: 2640
+ hash: "b1ce9cf0ebd8e1e783e5bd43bbd72072"
+ }
+ Frame {
+ msec: 2656
+ hash: "d214b419ec5b4cff8f877bdeb1b9ef96"
+ }
+ Frame {
+ msec: 2672
+ hash: "95e7057104508b3919d722d4befde7b7"
+ }
+ Frame {
+ msec: 2688
+ hash: "270489ec5da5bf9a93fa4e52f47a71f5"
+ }
+ Frame {
+ msec: 2704
+ hash: "46646e396ab0c1c20427dadd71d45ba9"
+ }
+ Frame {
+ msec: 2720
+ hash: "65e2fd167565f876310d56fa9203c118"
+ }
+ Frame {
+ msec: 2736
+ hash: "aff0da79bd9bd8c285139d7737a1316f"
+ }
+ Frame {
+ msec: 2752
+ hash: "bf264fe7d774a597a3ff0965d912fa90"
+ }
+ Frame {
+ msec: 2768
+ hash: "f00358343437f6e058848c7237601632"
+ }
+ Frame {
+ msec: 2784
+ hash: "88c9e1d58397a81ed23931c7fdae1e7d"
+ }
+ Frame {
+ msec: 2800
+ hash: "44d46b459f6bb89510e52b0d999fd499"
+ }
+ Frame {
+ msec: 2816
+ hash: "0c196a24c9ca7143d382688db678d855"
+ }
+ Frame {
+ msec: 2832
+ hash: "9df6d3d3b9981cb907ab89e65b743e97"
+ }
+ Frame {
+ msec: 2848
+ hash: "501a644d6cde64ad041b086e00fd3950"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2864
+ hash: "83f297406b1c6311da3a216024836d15"
+ }
+ Frame {
+ msec: 2880
+ image: "cursorDelegate.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "93f79f8717948bde8ee55c668af2d397"
+ }
+ Frame {
+ msec: 2912
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
+ }
+ Frame {
+ msec: 2928
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
+ }
+ Frame {
+ msec: 2944
+ hash: "c83c973fb1253ccab333fb1e604155b8"
+ }
+ Frame {
+ msec: 2960
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
+ }
+ Frame {
+ msec: 2976
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
+ }
+ Frame {
+ msec: 3008
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
+ }
+ Frame {
+ msec: 3024
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
+ }
+ Frame {
+ msec: 3040
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
+ }
+ Frame {
+ msec: 3056
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Frame {
+ msec: 3072
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
+ }
+ Frame {
+ msec: 3088
+ hash: "c83c973fb1253ccab333fb1e604155b8"
+ }
+ Frame {
+ msec: 3104
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
+ }
+ Frame {
+ msec: 3120
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
+ }
+ Frame {
+ msec: 3136
+ hash: "93f79f8717948bde8ee55c668af2d397"
+ }
+ Frame {
+ msec: 3152
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
+ }
+ Frame {
+ msec: 3168
+ hash: "83f297406b1c6311da3a216024836d15"
+ }
+ Frame {
+ msec: 3184
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
+ }
+ Frame {
+ msec: 3200
+ hash: "de315e6836334fd0a2da855f5be4ff30"
+ }
+ Frame {
+ msec: 3216
+ hash: "5ca117709284f4a1cbd64cdba4079340"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "308a4220f5c74fd56bd218cd695b9822"
+ }
+ Frame {
+ msec: 3248
+ hash: "4ac4e09e987f2ba9661ed52fb1bdf236"
+ }
+ Frame {
+ msec: 3264
+ hash: "9ffd39a8a540ec88ff2b20a16ef083ee"
+ }
+ Frame {
+ msec: 3280
+ hash: "4a36ed8e68811954fef171d5734ccbaf"
+ }
+ Frame {
+ msec: 3296
+ hash: "714a6231aca70cfa8e83ea71b7ae90dc"
+ }
+ Frame {
+ msec: 3312
+ hash: "1fa9e35449ee87c972e3189ad0651a68"
+ }
+ Frame {
+ msec: 3328
+ hash: "d602008fada2f4edb6ad00fe759f9db9"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3344
+ hash: "bf16cc38f109e761b5ac2b0c63a1a2fe"
+ }
+ Frame {
+ msec: 3360
+ hash: "30f26041533455ed92c4984f55e3c6ff"
+ }
+ Frame {
+ msec: 3376
+ hash: "5838d666902bc693de505522dad13254"
+ }
+ Frame {
+ msec: 3392
+ hash: "6c8ada09b627050e4340da6e8ddd646e"
+ }
+ Frame {
+ msec: 3408
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
+ }
+ Frame {
+ msec: 3424
+ hash: "692d4029938c01044b4210958dd1ee7e"
+ }
+ Frame {
+ msec: 3440
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
+ }
+ Frame {
+ msec: 3456
+ hash: "87ca0584879b25336a1023ac3252fc9a"
+ }
+ Frame {
+ msec: 3472
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3488
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3504
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3520
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3536
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3552
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 3568
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
+ }
+ Frame {
+ msec: 3584
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
+ }
+ Frame {
+ msec: 3600
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
+ }
+ Frame {
+ msec: 3616
+ hash: "8099972420ffd03e2bfc3ea45918a543"
+ }
+ Frame {
+ msec: 3632
+ hash: "2b78b1179a34319c287a6659406e23c3"
+ }
+ Frame {
+ msec: 3648
+ hash: "ad9458ab4d6376c87350a2356c280f94"
+ }
+ Frame {
+ msec: 3664
+ hash: "a74bc230e310a2826b2fed962db22f7a"
+ }
+ Frame {
+ msec: 3680
+ hash: "bd72e8f4757050c41673a6f0d38f2285"
+ }
+ Frame {
+ msec: 3696
+ hash: "379bad4fa4b605cb6a16434bdb031e2b"
+ }
+ Frame {
+ msec: 3712
+ hash: "e144a8e9586f29f9b2f042b47e7739ae"
+ }
+ Frame {
+ msec: 3728
+ hash: "bd74c9e79bc1a88dd6a17a3aed21e368"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "144724168f42372e10ec6c39662a5ed8"
+ }
+ Frame {
+ msec: 3760
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
+ }
+ Frame {
+ msec: 3776
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
+ }
+ Frame {
+ msec: 3792
+ hash: "184cff262d1004ce702c117a6b5b9699"
+ }
+ Frame {
+ msec: 3808
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
+ }
+ Frame {
+ msec: 3824
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
+ }
+ Frame {
+ msec: 3840
+ image: "cursorDelegate.3.png"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3856
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
+ }
+ Frame {
+ msec: 3872
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
+ }
+ Frame {
+ msec: 3888
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
+ }
+ Frame {
+ msec: 3904
+ hash: "a8781226e5e494324a34e120aa446cd1"
+ }
+ Frame {
+ msec: 3920
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
+ }
+ Frame {
+ msec: 3936
+ hash: "774b161fe9645bc69b89e580b3e41f71"
+ }
+ Frame {
+ msec: 3952
+ hash: "5756d7ffd8ff656db54f4329ea909553"
+ }
+ Frame {
+ msec: 3968
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
+ }
+ Frame {
+ msec: 3984
+ hash: "f9765e4def564b64861402e1a873b169"
+ }
+ Frame {
+ msec: 4000
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
+ }
+ Frame {
+ msec: 4016
+ hash: "7abcb9d6cf223c1655f6265f780a321a"
+ }
+ Frame {
+ msec: 4032
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
+ }
+ Frame {
+ msec: 4048
+ hash: "f9765e4def564b64861402e1a873b169"
+ }
+ Frame {
+ msec: 4064
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "5756d7ffd8ff656db54f4329ea909553"
+ }
+ Frame {
+ msec: 4096
+ hash: "774b161fe9645bc69b89e580b3e41f71"
+ }
+ Frame {
+ msec: 4112
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
+ }
+ Frame {
+ msec: 4128
+ hash: "a8781226e5e494324a34e120aa446cd1"
+ }
+ Frame {
+ msec: 4144
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
+ }
+ Frame {
+ msec: 4160
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
+ }
+ Frame {
+ msec: 4176
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
+ }
+ Frame {
+ msec: 4192
+ hash: "2d1b406be294727a278ba6bbc97be62a"
+ }
+ Frame {
+ msec: 4208
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
+ }
+ Frame {
+ msec: 4224
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
+ }
+ Frame {
+ msec: 4240
+ hash: "184cff262d1004ce702c117a6b5b9699"
+ }
+ Frame {
+ msec: 4256
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
+ }
+ Frame {
+ msec: 4272
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
+ }
+ Frame {
+ msec: 4288
+ hash: "144724168f42372e10ec6c39662a5ed8"
+ }
+ Frame {
+ msec: 4304
+ hash: "d2da36fbf73289f545133bd608af66a2"
+ }
+ Frame {
+ msec: 4320
+ hash: "b1d7da6b42a31bba91148ab37b111945"
+ }
+ Frame {
+ msec: 4336
+ hash: "6f226a3b20d95e17df69e2c4e5aff3d1"
+ }
+ Frame {
+ msec: 4352
+ hash: "1109da0f043a9418661fc05e53fe3b45"
+ }
+ Frame {
+ msec: 4368
+ hash: "f3e901db9efd1d9fadf1cb6858040d51"
+ }
+ Frame {
+ msec: 4384
+ hash: "c8e50c0e924b11a3f1943abb9a4008a4"
+ }
+ Frame {
+ msec: 4400
+ hash: "431226a27488ed1dba237de3d43f94c5"
+ }
+ Frame {
+ msec: 4416
+ hash: "420d316430c84f10d7cd24d29b918149"
+ }
+ Frame {
+ msec: 4432
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
+ }
+ Frame {
+ msec: 4448
+ hash: "231bff73758a1c6f7c7c0365159ba3e6"
+ }
+ Frame {
+ msec: 4464
+ hash: "d1ac7ceda7303bbf3392d33f47037ed6"
+ }
+ Frame {
+ msec: 4480
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4496
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4512
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4528
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4544
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4560
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4576
+ hash: "a2ad07326fafcb3012cdb869f39af466"
+ }
+ Frame {
+ msec: 4592
+ hash: "8622eb25a6da44926b5161bce213a483"
+ }
+ Frame {
+ msec: 4608
+ hash: "fe563aa9dae9655871f82a779063cdbd"
+ }
+ Frame {
+ msec: 4624
+ hash: "775cd79b012f79b773449a0ad8457149"
+ }
+ Frame {
+ msec: 4640
+ hash: "01e9fab344a148a0877a7332d561be5a"
+ }
+ Frame {
+ msec: 4656
+ hash: "935566d139599a30197850774fb059ba"
+ }
+ Frame {
+ msec: 4672
+ hash: "4aae1ac532624417decddd978f516b6e"
+ }
+ Frame {
+ msec: 4688
+ hash: "34dc78df6e9941988712c1f8f79c3db0"
+ }
+ Frame {
+ msec: 4704
+ hash: "23a96c11d5917c44bd48239ed2b5777f"
+ }
+ Frame {
+ msec: 4720
+ hash: "f8f13e097eae3152db3ccebff1343fe0"
+ }
+ Frame {
+ msec: 4736
+ hash: "02f8fca7c4ab80ecf425e4b39e966b86"
+ }
+ Frame {
+ msec: 4752
+ hash: "c3356367750e797ff81bc4102f948134"
+ }
+ Frame {
+ msec: 4768
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
+ }
+ Frame {
+ msec: 4784
+ hash: "ed3c741639232377f61867fd353ce58a"
+ }
+ Frame {
+ msec: 4800
+ image: "cursorDelegate.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "5ca117709284f4a1cbd64cdba4079340"
+ }
+ Frame {
+ msec: 4832
+ hash: "de315e6836334fd0a2da855f5be4ff30"
+ }
+ Frame {
+ msec: 4848
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
+ }
+ Frame {
+ msec: 4864
+ hash: "83f297406b1c6311da3a216024836d15"
+ }
+ Frame {
+ msec: 4880
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
+ }
+ Frame {
+ msec: 4896
+ hash: "93f79f8717948bde8ee55c668af2d397"
+ }
+ Frame {
+ msec: 4912
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
+ }
+ Frame {
+ msec: 4928
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
+ }
+ Frame {
+ msec: 4944
+ hash: "c83c973fb1253ccab333fb1e604155b8"
+ }
+ Frame {
+ msec: 4960
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
+ }
+ Frame {
+ msec: 4976
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Frame {
+ msec: 4992
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
+ }
+ Frame {
+ msec: 5008
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
+ }
+ Frame {
+ msec: 5024
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
+ }
+ Frame {
+ msec: 5040
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
+ }
+ Frame {
+ msec: 5056
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Frame {
+ msec: 5072
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
+ }
+ Frame {
+ msec: 5088
+ hash: "c83c973fb1253ccab333fb1e604155b8"
+ }
+ Frame {
+ msec: 5104
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
+ }
+ Frame {
+ msec: 5120
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
+ }
+ Frame {
+ msec: 5136
+ hash: "93f79f8717948bde8ee55c668af2d397"
+ }
+ Frame {
+ msec: 5152
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
+ }
+ Frame {
+ msec: 5168
+ hash: "83f297406b1c6311da3a216024836d15"
+ }
+ Frame {
+ msec: 5184
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
+ }
+ Frame {
+ msec: 5200
+ hash: "de315e6836334fd0a2da855f5be4ff30"
+ }
+ Frame {
+ msec: 5216
+ hash: "5ca117709284f4a1cbd64cdba4079340"
+ }
+ Frame {
+ msec: 5232
+ hash: "4f0d49aff27a1c83287d38e760c10f16"
+ }
+ Frame {
+ msec: 5248
+ hash: "ed3c741639232377f61867fd353ce58a"
+ }
+ Frame {
+ msec: 5264
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png
new file mode 100644
index 0000000000..7c68d9c18e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png
new file mode 100644
index 0000000000..96afa8d0ba
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png
new file mode 100644
index 0000000000..58b168d699
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png
new file mode 100644
index 0000000000..95f0c9878c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml
new file mode 100644
index 0000000000..7b00cdda88
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml
@@ -0,0 +1,1371 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 32
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 48
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 64
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 80
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 96
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 112
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 128
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 144
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 160
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 176
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 192
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 208
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 224
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 240
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 256
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 272
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 288
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 304
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 320
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 336
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 352
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 368
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 384
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 400
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 416
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 432
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 464
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 480
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 496
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 512
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 528
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 560
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 576
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 592
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 608
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 624
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 640
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 656
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 672
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 704
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 720
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 736
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 752
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 768
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 784
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 800
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 816
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 832
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 848
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 864
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 880
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 896
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 912
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 928
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 944
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 960
+ image: "qt-669.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 992
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 1008
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1024
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 1040
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 1056
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 1072
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 1088
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1104
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1120
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1136
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1152
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1168
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1184
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1200
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 1216
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1232
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1248
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1264
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1280
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1312
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1328
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 1344
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1360
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1376
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1392
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1408
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1424
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1440
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1456
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1472
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1488
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1520
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1536
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1552
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1568
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1584
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1600
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1616
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1632
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1648
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1664
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1680
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1696
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1712
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1728
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1744
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1760
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1776
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1792
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1808
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1824
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Frame {
+ msec: 1840
+ hash: "6a76601730228708049c79b414b3cbe2"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1856
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1872
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1888
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1904
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1920
+ image: "qt-669.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1952
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1968
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 1984
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2000
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 2016
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 2032
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 2048
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Frame {
+ msec: 2064
+ hash: "2dc196a65cb13214901e0189c2b1984b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2080
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2096
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2112
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2128
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2144
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2176
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2192
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2208
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Frame {
+ msec: 2224
+ hash: "2da2b87d285f27ee4cdd82c2c03cdf08"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 2256
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2272
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 2288
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 2304
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 2320
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Frame {
+ msec: 2336
+ hash: "5e8b89638494bceaed69ce3d75245458"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2352
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2368
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2384
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2400
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2416
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2432
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2448
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2464
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2480
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2496
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2512
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2528
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2544
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2560
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2576
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Frame {
+ msec: 2592
+ hash: "0c7162e2bf228c76c7b9247e7ee1cf63"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2608
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2624
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2640
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2656
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2672
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2688
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2704
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2720
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2736
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Frame {
+ msec: 2752
+ hash: "ad3b0560a1e896c39acff9a7cf53b043"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2768
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 2784
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 2800
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 2832
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 2848
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Frame {
+ msec: 2864
+ hash: "40504095d8877e37cd24ac694ca94758"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "qt-669.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 2912
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 2928
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 2960
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 2976
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 2992
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Frame {
+ msec: 3008
+ hash: "b6f3847d394c87873e34814e332e205a"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3024
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3040
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3056
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3072
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3088
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3104
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3120
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3136
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3152
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3168
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3184
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3200
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3216
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3232
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3248
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3264
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3280
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3296
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3312
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3328
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3344
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3360
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3376
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3392
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3408
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3424
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3440
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3456
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3472
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3488
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3504
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3520
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3536
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3552
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3568
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3584
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3600
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3616
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3632
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3648
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3664
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3680
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Frame {
+ msec: 3696
+ hash: "3f5f573f37883dc025e21a1fd99eef63"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3712
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3728
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3744
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3760
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3776
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3792
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3808
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3824
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3840
+ image: "qt-669.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3872
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3888
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3904
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3920
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3936
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3952
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3968
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 3984
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4000
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4016
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4032
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4048
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4064
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4080
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4096
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4112
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4128
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4144
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4160
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4176
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4192
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4208
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4224
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4240
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4256
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4272
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4288
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+ Frame {
+ msec: 4304
+ hash: "8d8671fb6c3413f38308a0dd15026eae"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..e69860ebbc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png
new file mode 100644
index 0000000000..1db3c262d8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
new file mode 100644
index 0000000000..ae21dcac4e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png
new file mode 100644
index 0000000000..ae21dcac4e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..fbef8052a6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png
new file mode 100644
index 0000000000..dc56c7e1de
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png
new file mode 100644
index 0000000000..04ea496431
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png
new file mode 100644
index 0000000000..98bf7dee1e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png
new file mode 100644
index 0000000000..d95b8952c5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.png
new file mode 100644
index 0000000000..9954344363
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png
new file mode 100644
index 0000000000..5f329b6a84
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png
new file mode 100644
index 0000000000..ae21dcac4e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
new file mode 100644
index 0000000000..5a1f8de471
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 32
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 48
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 64
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 80
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 96
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 112
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 128
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 144
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 160
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 176
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 192
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 208
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 224
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 240
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 256
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 272
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 288
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 304
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 320
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 352
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 368
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 384
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 400
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 432
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 448
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 464
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 480
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 496
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 512
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 528
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 544
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 560
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 576
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 592
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 608
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 624
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 640
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 672
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 704
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 720
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 736
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 752
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 768
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 784
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 800
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 816
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 832
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 848
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 864
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 880
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 896
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 912
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 928
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 944
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 960
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 992
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1008
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1024
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1040
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1056
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1072
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1088
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1104
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1120
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1136
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1152
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1168
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1184
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1200
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1216
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1232
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1248
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1264
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1280
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1296
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1328
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1344
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1360
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1376
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1424
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1440
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1456
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1488
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1504
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1520
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1536
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1552
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1584
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1600
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1648
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1664
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1680
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1696
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1728
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1760
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1776
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1808
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1824
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1856
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1872
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1888
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1904
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1952
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1968
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Frame {
+ msec: 2000
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2048
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2080
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2096
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2112
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2144
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2176
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2192
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2208
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2224
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2240
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2272
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2288
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2304
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2320
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2352
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2384
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2400
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2416
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2464
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2480
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2496
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2512
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2528
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2576
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2592
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2608
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2640
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2656
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2672
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2688
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2720
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2736
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2752
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2768
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2784
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2832
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2848
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2864
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2912
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2928
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2960
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2976
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3008
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3024
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3040
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3088
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3104
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3152
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3184
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3200
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3216
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3264
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3280
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3296
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3344
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3360
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3376
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3392
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3440
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3456
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3472
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3488
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3520
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3536
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3552
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3568
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3584
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3632
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3648
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3664
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3712
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3728
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3760
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3776
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3792
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3808
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3824
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3840
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3872
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3888
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3904
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3920
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3936
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3952
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3968
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4000
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4016
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4032
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4048
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4096
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4112
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4128
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4160
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4192
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4208
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4240
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4272
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4304
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4320
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4336
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4352
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4368
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4400
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4416
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4432
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4448
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4496
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4512
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4528
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4544
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4576
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4592
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4624
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4640
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4656
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4672
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4688
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4704
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4720
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4736
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4752
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4768
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4784
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4800
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4832
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4864
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4880
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4896
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4912
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4928
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4944
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4976
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4992
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5008
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5040
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5056
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5072
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5088
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5104
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5120
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5136
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5152
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5168
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5184
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5200
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5216
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5232
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5248
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5264
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5280
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5296
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5312
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5328
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5344
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5360
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5376
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5392
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5408
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5424
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5440
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5456
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5472
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5488
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5504
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5520
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5536
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5552
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5568
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5584
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5600
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5616
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5632
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5648
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5664
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5680
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5696
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5712
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5728
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5744
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5760
+ image: "usingMultilineEdit.5.png"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5792
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5808
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5824
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "4e620c1b847274f691e80a384eac5320"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "1a246aa1be0878c38da2eaac6befb738"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "7d6d4a33aacd1d2f530834af31069793"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "3d71f15694368397bc8f6a6a0c2c16de"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6208
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6224
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6240
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6256
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "d8a1bee2a0e57944d8268a2ce7e6c3c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "b7eeca12627f0ca82a0e56179184b3b8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "abccf1571b12444328188003928a0aea"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "9ad787bf41f0ab66beffff056a115c23"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6608
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6624
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6640
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6656
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6672
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ image: "usingMultilineEdit.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6912
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6928
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6944
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6960
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6976
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6992
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7008
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7024
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7040
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7056
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7072
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7088
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7120
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7136
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7152
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7168
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7200
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7216
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7232
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7248
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7264
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7280
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7296
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7312
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7328
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7344
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7360
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7376
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7392
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7408
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7424
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7440
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7456
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7472
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7488
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7504
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7520
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7536
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7552
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7568
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7600
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7616
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7648
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7664
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7680
+ image: "usingMultilineEdit.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7712
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7744
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7760
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7776
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7792
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7808
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7824
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7840
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7856
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7872
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7888
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7904
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7920
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7936
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7952
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Frame {
+ msec: 7984
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "236c237e3f4673d568a8cf2c3665cb49"
+ }
+ Frame {
+ msec: 8016
+ hash: "236c237e3f4673d568a8cf2c3665cb49"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "cea55dd0cd5b0c2e37808bd38c689ddf"
+ }
+ Frame {
+ msec: 8048
+ hash: "cea55dd0cd5b0c2e37808bd38c689ddf"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8080
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8112
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8128
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8144
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8160
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8176
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Frame {
+ msec: 8192
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8224
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8240
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8256
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8288
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8304
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Frame {
+ msec: 8320
+ hash: "261d950728b1628d637e739a72c58e9f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8352
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8368
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8384
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8416
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8432
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8448
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Frame {
+ msec: 8464
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8496
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8512
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8528
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8560
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8576
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8592
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8608
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8624
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8640
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8688
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8704
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8720
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8736
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8752
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8768
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8784
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8800
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8816
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8832
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8848
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8864
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8880
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8896
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8912
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8928
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8944
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8960
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8976
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 8992
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9008
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9024
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9040
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9056
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9072
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9088
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9104
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9120
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9136
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9152
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9168
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9184
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9200
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9232
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9312
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9328
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9344
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9360
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9376
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9392
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9408
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9424
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Frame {
+ msec: 9440
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9472
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9488
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9504
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9520
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9536
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9568
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9584
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9600
+ image: "usingMultilineEdit.9.png"
+ }
+ Frame {
+ msec: 9616
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9632
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9648
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9664
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9696
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9712
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9728
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9744
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9760
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9776
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9792
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9808
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9824
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9840
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9856
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9872
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9888
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9904
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9920
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9936
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9952
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9968
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 9984
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10000
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10016
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10032
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10048
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10064
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10080
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10096
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10128
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10144
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10160
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10176
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10192
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10208
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10224
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10256
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10272
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10288
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10304
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10320
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10336
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Frame {
+ msec: 10352
+ hash: "ead21885244133a71e103eb9ae6b61e4"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10384
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10400
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10416
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10432
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10448
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10480
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10496
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10512
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10528
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10544
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10560
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10592
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10608
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10624
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10640
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10672
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10688
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10704
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10720
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10736
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10752
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10768
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10784
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10800
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10816
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10832
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10848
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10864
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10880
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10896
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10912
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10928
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10944
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10960
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10976
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 10992
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11008
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11024
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11040
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11056
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11072
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11088
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11104
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11120
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11136
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11152
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11168
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11184
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11200
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11216
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11232
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11248
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11264
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11280
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11296
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11312
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11328
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11344
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11360
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11376
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11392
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11408
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11424
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11440
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11456
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11472
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11488
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11504
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11520
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 11536
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11552
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11568
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11584
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11600
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+ Frame {
+ msec: 11616
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
index ec65f494b6..4f51246809 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
index ec65f494b6..a27067f5d2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
index ec65f494b6..e33a8b01d2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
index ec65f494b6..fb35f56089 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
index ec65f494b6..9eab398a1d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
index ec65f494b6..66edb6be09 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
index ec65f494b6..66edb6be09 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
index 1f5b365470..475aee1ff4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d9acaa85ca366aac5a63f59b8913039a"
}
Key {
type: 6
@@ -18,7 +18,7 @@ VisualTest {
}
Frame {
msec: 32
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "81b7e0be317f0ca4425fa75ac5a73be9"
}
Key {
type: 7
@@ -30,11 +30,11 @@ VisualTest {
}
Frame {
msec: 48
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "81b7e0be317f0ca4425fa75ac5a73be9"
}
Frame {
msec: 64
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "81b7e0be317f0ca4425fa75ac5a73be9"
}
Key {
type: 7
@@ -46,11 +46,11 @@ VisualTest {
}
Frame {
msec: 80
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "81b7e0be317f0ca4425fa75ac5a73be9"
}
Frame {
msec: 96
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "81b7e0be317f0ca4425fa75ac5a73be9"
}
Key {
type: 6
@@ -62,15 +62,15 @@ VisualTest {
}
Frame {
msec: 112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ad65e3fe3973343e9b6feb1c28ee40f4"
}
Frame {
msec: 128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ad65e3fe3973343e9b6feb1c28ee40f4"
}
Frame {
msec: 144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ad65e3fe3973343e9b6feb1c28ee40f4"
}
Key {
type: 6
@@ -82,15 +82,15 @@ VisualTest {
}
Frame {
msec: 160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "187c3d689a5b217d8e886464303840aa"
}
Frame {
msec: 176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "187c3d689a5b217d8e886464303840aa"
}
Frame {
msec: 192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "187c3d689a5b217d8e886464303840aa"
}
Key {
type: 7
@@ -102,11 +102,11 @@ VisualTest {
}
Frame {
msec: 208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "187c3d689a5b217d8e886464303840aa"
}
Frame {
msec: 224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "187c3d689a5b217d8e886464303840aa"
}
Key {
type: 6
@@ -118,7 +118,7 @@ VisualTest {
}
Frame {
msec: 240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Key {
type: 7
@@ -130,19 +130,19 @@ VisualTest {
}
Frame {
msec: 256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Frame {
msec: 272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Frame {
msec: 288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Frame {
msec: 304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Key {
type: 7
@@ -154,11 +154,11 @@ VisualTest {
}
Frame {
msec: 320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Frame {
msec: 336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "572954512211be45ec468ca0c541f87b"
}
Key {
type: 6
@@ -170,19 +170,19 @@ VisualTest {
}
Frame {
msec: 352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Key {
type: 7
@@ -194,19 +194,19 @@ VisualTest {
}
Frame {
msec: 416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Frame {
msec: 464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a3ea4d6ebf0b267a01e18d4d7139cace"
}
Key {
type: 6
@@ -218,19 +218,19 @@ VisualTest {
}
Frame {
msec: 480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "36fb24a55e2cda02c3001adaa67e82a7"
}
Frame {
msec: 496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "36fb24a55e2cda02c3001adaa67e82a7"
}
Frame {
msec: 512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "36fb24a55e2cda02c3001adaa67e82a7"
}
Frame {
msec: 528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "36fb24a55e2cda02c3001adaa67e82a7"
}
Key {
type: 6
@@ -250,23 +250,23 @@ VisualTest {
}
Frame {
msec: 544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cc3eb1d7263556949e5f7ad3862d9959"
}
Frame {
msec: 560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cc3eb1d7263556949e5f7ad3862d9959"
}
Frame {
msec: 576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cc3eb1d7263556949e5f7ad3862d9959"
}
Frame {
msec: 592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cc3eb1d7263556949e5f7ad3862d9959"
}
Frame {
msec: 608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cc3eb1d7263556949e5f7ad3862d9959"
}
Key {
type: 7
@@ -286,19 +286,19 @@ VisualTest {
}
Frame {
msec: 624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Frame {
msec: 640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Frame {
msec: 656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Frame {
msec: 672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Key {
type: 7
@@ -310,11 +310,11 @@ VisualTest {
}
Frame {
msec: 688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Frame {
msec: 704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1ebd7df1875dc93984c9b663791c058e"
}
Key {
type: 6
@@ -326,23 +326,23 @@ VisualTest {
}
Frame {
msec: 720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Frame {
msec: 736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Frame {
msec: 752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Frame {
msec: 768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Frame {
msec: 784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Key {
type: 7
@@ -354,7 +354,7 @@ VisualTest {
}
Frame {
msec: 800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "35ad49d6517b35bd410db9770818918d"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Frame {
msec: 832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Frame {
msec: 848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Key {
type: 7
@@ -386,15 +386,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Frame {
msec: 880
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Frame {
msec: 896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af5ec042c8a5e5b1942cb3e14a646b3a"
}
Key {
type: 6
@@ -406,15 +406,15 @@ VisualTest {
}
Frame {
msec: 912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e21db7face603e4a41010e10fdc35eb"
}
Frame {
msec: 928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e21db7face603e4a41010e10fdc35eb"
}
Frame {
msec: 944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e21db7face603e4a41010e10fdc35eb"
}
Frame {
msec: 960
@@ -422,11 +422,11 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e21db7face603e4a41010e10fdc35eb"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e21db7face603e4a41010e10fdc35eb"
}
Key {
type: 6
@@ -446,23 +446,23 @@ VisualTest {
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Key {
type: 7
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Key {
type: 6
@@ -510,23 +510,23 @@ VisualTest {
}
Frame {
msec: 1200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4058b4a448b3836e980e2167628d5d45"
}
Frame {
msec: 1216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4058b4a448b3836e980e2167628d5d45"
}
Frame {
msec: 1232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4058b4a448b3836e980e2167628d5d45"
}
Frame {
msec: 1248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4058b4a448b3836e980e2167628d5d45"
}
Frame {
msec: 1264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4058b4a448b3836e980e2167628d5d45"
}
Key {
type: 7
@@ -546,11 +546,11 @@ VisualTest {
}
Frame {
msec: 1280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9546e50697fd316e17b990d3ab235b8c"
}
Frame {
msec: 1296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9546e50697fd316e17b990d3ab235b8c"
}
Key {
type: 6
@@ -562,15 +562,15 @@ VisualTest {
}
Frame {
msec: 1312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Key {
type: 7
@@ -582,11 +582,11 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Key {
type: 7
@@ -598,19 +598,19 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Frame {
msec: 1440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4f7a3795af41fc641483b6de3829a9b5"
}
Key {
type: 6
@@ -622,23 +622,23 @@ VisualTest {
}
Frame {
msec: 1456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Key {
type: 7
@@ -650,11 +650,11 @@ VisualTest {
}
Frame {
msec: 1536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Key {
type: 6
@@ -666,23 +666,23 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a4a912ce9cee7ba833e70df683668d8e"
}
Frame {
msec: 1584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a4a912ce9cee7ba833e70df683668d8e"
}
Frame {
msec: 1600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a4a912ce9cee7ba833e70df683668d8e"
}
Frame {
msec: 1616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a4a912ce9cee7ba833e70df683668d8e"
}
Frame {
msec: 1632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a4a912ce9cee7ba833e70df683668d8e"
}
Key {
type: 6
@@ -702,23 +702,23 @@ VisualTest {
}
Frame {
msec: 1648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a0ca0b36e56019968875c059bf95e133"
}
Frame {
msec: 1664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a0ca0b36e56019968875c059bf95e133"
}
Frame {
msec: 1680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a0ca0b36e56019968875c059bf95e133"
}
Frame {
msec: 1696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a0ca0b36e56019968875c059bf95e133"
}
Frame {
msec: 1712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a0ca0b36e56019968875c059bf95e133"
}
Key {
type: 6
@@ -730,15 +730,15 @@ VisualTest {
}
Frame {
msec: 1728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3c06f171b86ed55a425fdb316591a4f4"
}
Frame {
msec: 1744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3c06f171b86ed55a425fdb316591a4f4"
}
Frame {
msec: 1760
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3c06f171b86ed55a425fdb316591a4f4"
}
Key {
type: 7
@@ -750,7 +750,7 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3c06f171b86ed55a425fdb316591a4f4"
}
Key {
type: 6
@@ -762,11 +762,11 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Key {
type: 7
@@ -778,19 +778,19 @@ VisualTest {
}
Frame {
msec: 1824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1840
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Key {
type: 7
@@ -802,11 +802,11 @@ VisualTest {
}
Frame {
msec: 1888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1920
@@ -814,11 +814,11 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Frame {
msec: 1952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e5100e36d546b8af34bfc7a68317fa74"
}
Key {
type: 6
@@ -830,27 +830,27 @@ VisualTest {
}
Frame {
msec: 1968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Key {
type: 6
@@ -862,7 +862,7 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Key {
type: 7
@@ -874,15 +874,15 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Key {
type: 7
@@ -894,27 +894,27 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Frame {
msec: 2208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9e3a9ddf097022722e9e7ebb5e0bbeed"
}
Key {
type: 6
@@ -926,23 +926,23 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d715ce5ca080ba5045c16f88211ca2a7"
}
Frame {
msec: 2240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d715ce5ca080ba5045c16f88211ca2a7"
}
Frame {
msec: 2256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d715ce5ca080ba5045c16f88211ca2a7"
}
Frame {
msec: 2272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d715ce5ca080ba5045c16f88211ca2a7"
}
Frame {
msec: 2288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d715ce5ca080ba5045c16f88211ca2a7"
}
Key {
type: 6
@@ -954,7 +954,7 @@ VisualTest {
}
Frame {
msec: 2304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "11f9035d665a6eed88ea9e3030b111c7"
}
Key {
type: 7
@@ -966,15 +966,15 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "11f9035d665a6eed88ea9e3030b111c7"
}
Frame {
msec: 2336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "11f9035d665a6eed88ea9e3030b111c7"
}
Frame {
msec: 2352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "11f9035d665a6eed88ea9e3030b111c7"
}
Key {
type: 6
@@ -986,11 +986,11 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Frame {
msec: 2384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Key {
type: 7
@@ -1002,15 +1002,15 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Frame {
msec: 2416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Frame {
msec: 2432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Key {
type: 7
@@ -1022,15 +1022,15 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Frame {
msec: 2464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Frame {
msec: 2480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8277b43c48def7e966bbb96309042fe6"
}
Key {
type: 6
@@ -1042,19 +1042,19 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Key {
type: 7
@@ -1066,27 +1066,27 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Key {
type: 6
@@ -1098,19 +1098,19 @@ VisualTest {
}
Frame {
msec: 2656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Frame {
msec: 2672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Frame {
msec: 2688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Frame {
msec: 2704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Key {
type: 7
@@ -1122,15 +1122,15 @@ VisualTest {
}
Frame {
msec: 2720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Frame {
msec: 2736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Frame {
msec: 2752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "eff9abb425dbd30a0eb8ee940c2a0fdc"
}
Key {
type: 6
@@ -1142,23 +1142,23 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dbc4c1e9f452575a2b543f3cc9ed53eb"
}
Frame {
msec: 2784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dbc4c1e9f452575a2b543f3cc9ed53eb"
}
Frame {
msec: 2800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dbc4c1e9f452575a2b543f3cc9ed53eb"
}
Frame {
msec: 2816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dbc4c1e9f452575a2b543f3cc9ed53eb"
}
Frame {
msec: 2832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dbc4c1e9f452575a2b543f3cc9ed53eb"
}
Key {
type: 6
@@ -1178,11 +1178,11 @@ VisualTest {
}
Frame {
msec: 2848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8ea955780d76128c025cf1a51c995075"
}
Frame {
msec: 2864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8ea955780d76128c025cf1a51c995075"
}
Frame {
msec: 2880
@@ -1190,7 +1190,7 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8ea955780d76128c025cf1a51c995075"
}
Key {
type: 6
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 2928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Key {
type: 7
@@ -1218,11 +1218,11 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 2960
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Key {
type: 7
@@ -1234,35 +1234,35 @@ VisualTest {
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Key {
type: 6
@@ -1274,23 +1274,23 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Key {
type: 7
@@ -1302,23 +1302,23 @@ VisualTest {
}
Frame {
msec: 3184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Frame {
msec: 3248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "32ee9af5d9f714bbcc32206be600f309"
}
Key {
type: 6
@@ -1330,15 +1330,15 @@ VisualTest {
}
Frame {
msec: 3264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Frame {
msec: 3280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Frame {
msec: 3296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Key {
type: 7
@@ -1350,15 +1350,15 @@ VisualTest {
}
Frame {
msec: 3312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Frame {
msec: 3328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Frame {
msec: 3344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0e5a0e32f40d3e02758a394797cb3947"
}
Key {
type: 6
@@ -1370,23 +1370,23 @@ VisualTest {
}
Frame {
msec: 3360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Key {
type: 7
@@ -1398,15 +1398,15 @@ VisualTest {
}
Frame {
msec: 3440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Frame {
msec: 3472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "31079d862bb5b41e36e146201f8c34d2"
}
Key {
type: 6
@@ -1418,19 +1418,19 @@ VisualTest {
}
Frame {
msec: 3488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Frame {
msec: 3504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Frame {
msec: 3520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Frame {
msec: 3536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Key {
type: 7
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 3552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Frame {
msec: 3568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1e5e9ab44b9c703637e58bb248026b51"
}
Key {
type: 6
@@ -1458,27 +1458,27 @@ VisualTest {
}
Frame {
msec: 3584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Frame {
msec: 3600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Frame {
msec: 3616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Frame {
msec: 3632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Frame {
msec: 3648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Frame {
msec: 3664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "18f5f77a48858fb5584d55ba3f3a94d3"
}
Key {
type: 6
@@ -1490,7 +1490,7 @@ VisualTest {
}
Frame {
msec: 3680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Key {
type: 7
@@ -1502,23 +1502,23 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3760
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Key {
type: 7
@@ -1530,19 +1530,19 @@ VisualTest {
}
Frame {
msec: 3776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3840
@@ -1550,19 +1550,19 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Frame {
msec: 3904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "63d557c9ea24a9e63d6bdfc6259c8bf9"
}
Key {
type: 6
@@ -1574,23 +1574,23 @@ VisualTest {
}
Frame {
msec: 3920
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Frame {
msec: 3936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Frame {
msec: 3952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Frame {
msec: 3968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Key {
type: 7
@@ -1602,11 +1602,11 @@ VisualTest {
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Key {
type: 6
@@ -1618,15 +1618,15 @@ VisualTest {
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a06c039bc65f399f7dcb1a484e557f34"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a06c039bc65f399f7dcb1a484e557f34"
}
Frame {
msec: 4064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a06c039bc65f399f7dcb1a484e557f34"
}
Key {
type: 7
@@ -1638,7 +1638,7 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a06c039bc65f399f7dcb1a484e557f34"
}
Key {
type: 6
@@ -1650,19 +1650,19 @@ VisualTest {
}
Frame {
msec: 4096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Frame {
msec: 4112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Frame {
msec: 4128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Frame {
msec: 4144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Key {
type: 7
@@ -1674,15 +1674,15 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Frame {
msec: 4176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Frame {
msec: 4192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6471c3319fbe937080bd40d91770898f"
}
Key {
type: 6
@@ -1694,23 +1694,23 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "124451f5a072f626642a85ebc36c0914"
}
Frame {
msec: 4224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "124451f5a072f626642a85ebc36c0914"
}
Frame {
msec: 4240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "124451f5a072f626642a85ebc36c0914"
}
Frame {
msec: 4256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "124451f5a072f626642a85ebc36c0914"
}
Frame {
msec: 4272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "124451f5a072f626642a85ebc36c0914"
}
Key {
type: 6
@@ -1722,7 +1722,7 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Key {
type: 7
@@ -1734,15 +1734,15 @@ VisualTest {
}
Frame {
msec: 4304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Key {
type: 7
@@ -1754,23 +1754,23 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Frame {
msec: 4416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "963ee26238b20cd414e69b50ffa5a186"
}
Key {
type: 6
@@ -1782,15 +1782,15 @@ VisualTest {
}
Frame {
msec: 4432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Key {
type: 7
@@ -1802,23 +1802,23 @@ VisualTest {
}
Frame {
msec: 4480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Key {
type: 6
@@ -1830,19 +1830,19 @@ VisualTest {
}
Frame {
msec: 4560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Key {
type: 7
@@ -1854,19 +1854,19 @@ VisualTest {
}
Frame {
msec: 4624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Frame {
msec: 4672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "57bcfc2fbc8e5993f0908980bdef2e79"
}
Key {
type: 6
@@ -1878,19 +1878,19 @@ VisualTest {
}
Frame {
msec: 4688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Frame {
msec: 4704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Frame {
msec: 4720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Frame {
msec: 4736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Key {
type: 7
@@ -1902,15 +1902,15 @@ VisualTest {
}
Frame {
msec: 4752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Frame {
msec: 4768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Frame {
msec: 4784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "60b5ec304c447a3bf54da75f964e9fff"
}
Key {
type: 6
@@ -1926,7 +1926,7 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6ae6a9c38541546561db9049a300bce6"
}
Key {
type: 7
@@ -1938,19 +1938,19 @@ VisualTest {
}
Frame {
msec: 4832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6ae6a9c38541546561db9049a300bce6"
}
Frame {
msec: 4848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6ae6a9c38541546561db9049a300bce6"
}
Frame {
msec: 4864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6ae6a9c38541546561db9049a300bce6"
}
Frame {
msec: 4880
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6ae6a9c38541546561db9049a300bce6"
}
Key {
type: 6
@@ -1962,19 +1962,19 @@ VisualTest {
}
Frame {
msec: 4896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 4912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 4928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 4944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Key {
type: 7
@@ -1986,203 +1986,203 @@ VisualTest {
}
Frame {
msec: 4960
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5760
@@ -2190,239 +2190,239 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5840
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5920
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6720
@@ -2430,38 +2430,38 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
index 555996a21a..b24344c344 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
index b705bad7b0..5e29359b0c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
index 094cd2a6ec..0ffee647ff 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
index 9c519c715c..6c56e9c331 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
index 3ec77b509d..276170d3ea 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
index 579a66e5b9..3d8709fd16 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
index 9e5ac90c18..80b960c197 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
index 9f3acfcc25..72472771c3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
index f27518a1bb..af5a996b7b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
index ef9ba33b1b..38190433d1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
@@ -6,239 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "6e8324bf913d9df21a59ab4337257c15"
}
Frame {
msec: 32
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "4e068995d68e8939e6560e35b685e839"
}
Frame {
msec: 48
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "761b09bce25b3b240093d16ad02268d7"
}
Frame {
msec: 64
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "1ecb6d7d08d4e4e14db28e24a60eccc4"
}
Frame {
msec: 80
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "642417a56b3d6b8b35f5aec1bf0a9d2c"
}
Frame {
msec: 96
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "2e24870a44d3fc6c6d5c920bab29d417"
}
Frame {
msec: 112
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9a59d0672f2a752943561af89fd71d7f"
}
Frame {
msec: 128
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "c359dd36910678a30f935a13c8680ee4"
}
Frame {
msec: 144
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "245f1e127549e9b28c7574ffb143fcde"
}
Frame {
msec: 160
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "8df3d3dbce673311d88c055e8dffaeb5"
}
Frame {
msec: 176
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "590fdeaddb3df033a1908a8a95fcd17a"
}
Frame {
msec: 192
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "a158891c8d2ee3899463412a3363e48c"
}
Frame {
msec: 208
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "e9ec2c82f46b36fbd0285ce6795c7cf9"
}
Frame {
msec: 224
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0a02598af770dfe1d332f10c9482e770"
}
Frame {
msec: 240
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "8765475468bccbd0df897a533241f3c5"
}
Frame {
msec: 256
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "4cd9deed66bfdfadde8f8bf34f0e5513"
}
Frame {
msec: 272
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "139bf5a1811beb2438df4ecfa3bbaac7"
}
Frame {
msec: 288
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9d51555afd71a7035e67a543846dcf7f"
}
Frame {
msec: 304
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "de187b58fc8dfaad2d62e9463691b0c0"
}
Frame {
msec: 320
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9f88ac6d71246b06ca7ce9d8d983c91b"
}
Frame {
msec: 336
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "a43c12a7d6597d171112dc43085a439e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 352
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "ad38f32755f669837ec2243e355ebc85"
}
Frame {
msec: 368
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
}
Frame {
msec: 384
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "77850031e012246dd967ac689e353eb3"
}
Frame {
msec: 400
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
}
Frame {
msec: 416
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
}
Frame {
msec: 432
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "af3a5f1982459164dfec26746172b0eb"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 448
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0de90659472b63dd41a5602197ff502e"
}
Frame {
msec: 464
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "81e40abf91017614a52e03bb2474549f"
}
Frame {
msec: 480
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 496
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 512
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 528
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 544
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 560
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 576
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "ac98b973e6d12193829139661d3e5847"
}
Frame {
msec: 592
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "366907376adae4d88d42d1b9e7533ec0"
}
Frame {
msec: 608
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "5f486d0a21c74f2ba50afcafa8c15453"
}
Frame {
msec: 624
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "a3bf6dde525e528745272a8e43fc895c"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 640
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "4ffb297d2a98a3d13b848af569b1b5b5"
}
Frame {
msec: 656
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "3679a17658e417bf08fc86d4bef0d4e9"
}
Frame {
msec: 672
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "5c6a25284ffd13350425e792fd143421"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 688
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "09a2c1032d0206e20340ae4267525f98"
}
Frame {
msec: 704
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "0036070d9a7ee854b3612858af46ab59"
}
Frame {
msec: 720
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "8774509eaa5fc29385da89214ef77589"
}
Frame {
msec: 736
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "6d4f8ebf046148e5079f498396c119b4"
}
Frame {
msec: 752
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "4c7d5d2f77116c96357b0791348af058"
}
Frame {
msec: 768
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "398c927a3525d5b90a5dd7a05ba9467b"
}
Frame {
msec: 784
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "d84b45f6acb8cbd399d4ed6bf80ce132"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "40c597d9e04e8e0daf62f58b9e7973b3"
}
Frame {
msec: 816
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "2c7fdd47e29d924e3e008a6840e0e6be"
}
Frame {
msec: 832
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "2b3229bb1aa220499114f274cf643ce9"
}
Frame {
msec: 848
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "e55446874c1a343ce3607d679d69d1d4"
}
Frame {
msec: 864
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "6824708eb176a9cf92f241d4054800dd"
}
Frame {
msec: 880
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
+ hash: "d386230dd416740625eb4f677ef4531b"
}
Frame {
msec: 896
- hash: "96422f9bfbc11775cd7d1fae2ba357bd"
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
}
Frame {
msec: 912
- hash: "0d247385059a6f68b37bc34f6b2214b1"
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
}
Frame {
msec: 928
- hash: "7c513361e13a90eef229b42e68ffaa18"
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
}
Frame {
msec: 944
- hash: "510b8441c613f0637dfc46e03c278112"
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
}
Frame {
msec: 960
@@ -246,271 +294,287 @@ VisualTest {
}
Frame {
msec: 976
- hash: "8d90112e2e1c6f226a1a5f4f75785939"
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
}
Frame {
msec: 992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
}
Frame {
msec: 1008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ca78503396613536c8e4076884354cb1"
}
Frame {
msec: 1024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ca78503396613536c8e4076884354cb1"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
}
Frame {
msec: 1056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
}
Frame {
msec: 1072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "d23d7492b85e4f30994ecd64e8273ff6"
}
Frame {
msec: 1088
- hash: "8d90112e2e1c6f226a1a5f4f75785939"
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
}
Frame {
msec: 1104
- hash: "85e6af1f5fd15338a15f984e24d5ec9d"
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
}
Frame {
msec: 1120
- hash: "510b8441c613f0637dfc46e03c278112"
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
}
Frame {
msec: 1136
- hash: "7c513361e13a90eef229b42e68ffaa18"
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
}
Frame {
msec: 1152
- hash: "0d247385059a6f68b37bc34f6b2214b1"
+ hash: "d386230dd416740625eb4f677ef4531b"
}
Frame {
msec: 1168
- hash: "96422f9bfbc11775cd7d1fae2ba357bd"
+ hash: "6824708eb176a9cf92f241d4054800dd"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1184
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
+ hash: "e8e14dbba33578a36d9c69214333c537"
}
Frame {
msec: 1200
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "95c6e967f6f445748945c51943cf532f"
}
Frame {
msec: 1216
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "d145d4cbd0e3a98686b3bac1c5c17093"
}
Frame {
msec: 1232
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "09348a4108a585dd23c3a252a5c596f6"
}
Frame {
msec: 1248
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "55126f2c879771e1aa5ced51b54c827a"
}
Frame {
msec: 1264
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "ebb36a4c2fcb85107033ec2731fc5743"
}
Frame {
msec: 1280
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "0581a4432d4b3d0c1555a31e772c2575"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1296
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "b4030774f06935f1b43fc8f1a69e53a5"
}
Frame {
msec: 1312
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "655e1739c130888ff83a3b69bb0ab7e3"
}
Frame {
msec: 1328
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "99fc97c572e7c8949693b32910e6eefb"
}
Frame {
msec: 1344
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "e9c8bb13c2549047c05d671daa378496"
}
Frame {
msec: 1360
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "cb344e0d39b5b07ca7d094bf30ce9f53"
}
Frame {
msec: 1376
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "15ba6e62c693f2bf74bdf86668139985"
}
Frame {
msec: 1392
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "48133ec73eb9723059eb6e6af3139f2b"
}
Frame {
msec: 1408
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "0b19e777a04f03774f2d5f5398bdb10f"
}
Frame {
msec: 1424
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "fc41d9a9aedf9274a68b33603ed6ccd0"
}
Frame {
msec: 1440
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "fa6e65f0c835b12dc10463711bd73350"
}
Frame {
msec: 1456
- hash: "60a60e06237318bf005f87bbba386fef"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "25a02c3388e52df550a0332efde90fcd"
}
Frame {
msec: 1472
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1488
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1504
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1520
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1536
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1552
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1568
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "284cd356d551a048d4a000b90217ac72"
}
Frame {
msec: 1584
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "94fb20c3767e09d1b4254ee6122cf24e"
}
Frame {
msec: 1600
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "bfac920384425ce9f34505b44eceb523"
}
Frame {
msec: 1616
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "4a2d434efcb9a57f2013dc6b366e0e4e"
}
Frame {
msec: 1632
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "d0fbe98dc34c4bb0d1ceb7e4678cc1d5"
+ }
+ Frame {
+ msec: 1648
+ hash: "28ab147983a71e93e5610f53e14bd113"
}
Key {
type: 6
- key: 16777233
- modifiers: 0
+ key: 16777249
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
- msec: 1648
- hash: "24c376d5a2b3555126b156c8bc7a7a0c"
- }
- Frame {
msec: 1664
- hash: "d9c35de8b02f11db321d9bdcdcd65403"
+ hash: "2e6ee60fe9ff07fa4558134e6b1d6da8"
}
Frame {
msec: 1680
- hash: "0b32a66497ec3cdd05dc27c0ef9c5718"
+ hash: "f181e578e865981d7a2073080b381ec1"
}
Frame {
msec: 1696
- hash: "9626f80ef170af2db135792337203265"
+ hash: "d7c0558ea16829b52ea6d09814c301b9"
}
Frame {
msec: 1712
- hash: "6e4ce7599da579f764ff10e982888889"
+ hash: "c9304cb66c04566cf4374b46ab85e6e7"
}
Frame {
msec: 1728
- hash: "5ad4dd681be780c0068734ca5c722507"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "024dde64822afc9eea63974851fe57e1"
}
Frame {
msec: 1744
- hash: "7d620ef53049f9195cc832d6f9dfd52b"
+ hash: "8e4520e95a8acc8f1d4b710c4a14898f"
}
Frame {
msec: 1760
- hash: "0f54144c574af01958505eedd69162f6"
+ hash: "6b271c3f1d9d49bbd80a8ee33f3fc09c"
}
Frame {
msec: 1776
- hash: "50f168354e3901283708a4ae9088783d"
+ hash: "eb76a46632856bf07b005cad2ba2f6ab"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4"
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
}
Frame {
msec: 1808
- hash: "d351de13e7bb5b273ec3aebb88dffbd5"
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
}
Frame {
msec: 1824
- hash: "977d44194d1ef05801167157714891af"
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
}
Frame {
msec: 1840
- hash: "ef3694ca78764709abbe2f8781578fb4"
+ hash: "5697a705f36283213bbe4b5848baa764"
}
Frame {
msec: 1856
- hash: "77afbc0e0b828d03148ed7fe342dfbda"
+ hash: "8850842afae3060a91d612f7b869fd48"
}
Frame {
msec: 1872
- hash: "0d94e37430d8b835e65750a6af525ef7"
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
}
Frame {
msec: 1888
- hash: "e009a8d2cb7c7f1200055666cf2efd9c"
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
}
Frame {
msec: 1904
- hash: "096a2742962d7b22dba768577373e656"
+ hash: "b28681bcb414d428588acda377fef838"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1920
@@ -518,271 +582,271 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "905b6c7ab24fd1a12f17494fc1935e98"
+ hash: "5c154b54776ed555563d3e5196a8aedd"
}
Frame {
msec: 1952
- hash: "9bc98b4a32ea933fcc3a40eaae9b3516"
+ hash: "ee64c0452b325880de3a4fea599c18cc"
}
Frame {
msec: 1968
- hash: "70f0313540b3517f3b6d403c3ab1199c"
+ hash: "0776e1557b2d32db1c7c43331c532331"
}
Frame {
msec: 1984
- hash: "309ae1af1ef7dbaf0b892ad60fd3eb93"
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
}
Frame {
msec: 2000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
}
Frame {
msec: 2016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "874d4b599cb92cd9160960e3b3af74e0"
}
Frame {
msec: 2032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
}
Frame {
msec: 2048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
}
Frame {
msec: 2064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "0776e1557b2d32db1c7c43331c532331"
}
Frame {
msec: 2080
- hash: "309ae1af1ef7dbaf0b892ad60fd3eb93"
+ hash: "ee64c0452b325880de3a4fea599c18cc"
}
Frame {
msec: 2096
- hash: "70f0313540b3517f3b6d403c3ab1199c"
+ hash: "5c154b54776ed555563d3e5196a8aedd"
}
Frame {
msec: 2112
- hash: "9bc98b4a32ea933fcc3a40eaae9b3516"
- }
- Key {
- type: 6
- key: 16777248
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "a5f90da82b51bc866648304a20a1dcd3"
}
Frame {
msec: 2128
- hash: "905b6c7ab24fd1a12f17494fc1935e98"
+ hash: "b28681bcb414d428588acda377fef838"
}
Frame {
msec: 2144
- hash: "31adf3a3bfbd1083c50cae7ed5d64334"
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
}
Frame {
msec: 2160
- hash: "096a2742962d7b22dba768577373e656"
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
}
Frame {
msec: 2176
- hash: "e009a8d2cb7c7f1200055666cf2efd9c"
+ hash: "8850842afae3060a91d612f7b869fd48"
}
Frame {
msec: 2192
- hash: "0d94e37430d8b835e65750a6af525ef7"
+ hash: "5697a705f36283213bbe4b5848baa764"
}
Frame {
msec: 2208
- hash: "77afbc0e0b828d03148ed7fe342dfbda"
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
}
Frame {
msec: 2224
- hash: "ef3694ca78764709abbe2f8781578fb4"
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "977d44194d1ef05801167157714891af"
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
}
Frame {
msec: 2256
- hash: "d351de13e7bb5b273ec3aebb88dffbd5"
+ hash: "7defd2ecefeb86b457a2ee76d97424ee"
}
Frame {
msec: 2272
- hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4"
+ hash: "ccf6d45e8822d72482d9b585909b612b"
}
Frame {
msec: 2288
- hash: "50f168354e3901283708a4ae9088783d"
+ hash: "996dddf091394513adda1b1f00bf0c68"
}
Frame {
msec: 2304
- hash: "0f54144c574af01958505eedd69162f6"
+ hash: "3cf94e90eddb4b0815762b89f58f8325"
}
Frame {
msec: 2320
- hash: "7d620ef53049f9195cc832d6f9dfd52b"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "ab9f876450526b37774c6c4a5794c7b1"
}
Frame {
msec: 2336
- hash: "03e906dfb3bf98f521d805331d3b5b9c"
+ hash: "9109880e9201e92eb17ae87a3648dca7"
}
Frame {
msec: 2352
- hash: "c2376393ea9541b909b6b4fe188fa03e"
+ hash: "0e759f2f279057c1f4d1147be5b41214"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2368
- hash: "9b3935370412c75acdf6e91100cf2f53"
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
}
Frame {
msec: 2384
- hash: "30ab7913bdfc51d2df5ab9f3863d28c7"
+ hash: "77850031e012246dd967ac689e353eb3"
}
Frame {
msec: 2400
- hash: "593656e93d6e01419002dbb581aa6cbd"
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
}
Frame {
msec: 2416
- hash: "33800dd560e44ce39d6325bbdee689de"
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
}
Frame {
msec: 2432
- hash: "c41a9c4f08053d5d18fb2d530ed8b5ad"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "af3a5f1982459164dfec26746172b0eb"
}
Frame {
msec: 2448
- hash: "b3f2d4a2cb9a9d1304a2a2d07ad41ff2"
+ hash: "0de90659472b63dd41a5602197ff502e"
}
Frame {
msec: 2464
- hash: "93cf7fe53bc1fd749c523d40b27d17b4"
+ hash: "81e40abf91017614a52e03bb2474549f"
}
Frame {
msec: 2480
- hash: "6e9226d01dd93cff763e851148da8dfd"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2496
- hash: "79fdbda495bbc6c9ae8be03e1467de92"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2512
- hash: "c30fc0fa9351dbcdbe4f2a297cba9a52"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2528
- hash: "eaf26162fd5ce42262ea08ef39a7123d"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2544
- hash: "7bf0d6a5753a60eefae6d3c3819fabe4"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2560
- hash: "a2ee3a3b9cd22d7c0e54524cad32e647"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2576
- hash: "822298cfc4e2d64db1bf3e442dd891e6"
+ hash: "e26dbfb26415b21198add56d5de02cb2"
}
Frame {
msec: 2592
- hash: "d075c64000b045eae1b42dce701787b7"
+ hash: "fa2877a963417789b82170b32e0af7a0"
}
Frame {
msec: 2608
- hash: "5ca7f15af781f896c83c81077f6b072e"
+ hash: "860b39f92c412a7d946f882d8f99d837"
}
Frame {
msec: 2624
- hash: "7d0f14896e67c56ed5238472dc127cb1"
+ hash: "d7b8c52aef183965a97d82a18b03ed94"
}
Frame {
msec: 2640
- hash: "dca161e8a9d786ba9d50aa655ccbecd3"
+ hash: "b1ce9cf0ebd8e1e783e5bd43bbd72072"
}
Frame {
msec: 2656
- hash: "73bfcb0f5104efd056f25f7d73126369"
+ hash: "d214b419ec5b4cff8f877bdeb1b9ef96"
}
Frame {
msec: 2672
- hash: "0090459043b05bf9504434f36230b32b"
+ hash: "95e7057104508b3919d722d4befde7b7"
}
Frame {
msec: 2688
- hash: "f64315858f375c6ded480b2017fc18a5"
+ hash: "270489ec5da5bf9a93fa4e52f47a71f5"
}
Frame {
msec: 2704
- hash: "fe4c0ecfa9779c9fe052d4ffc9386d46"
+ hash: "46646e396ab0c1c20427dadd71d45ba9"
}
Frame {
msec: 2720
- hash: "849ad15f0ca893881165e956e8a26174"
+ hash: "65e2fd167565f876310d56fa9203c118"
}
Frame {
msec: 2736
- hash: "c4373fa63ed00832c70a6b94cb729397"
+ hash: "aff0da79bd9bd8c285139d7737a1316f"
}
Frame {
msec: 2752
- hash: "0c7e08fb7f0dd954b0f171a37ef2a310"
+ hash: "bf264fe7d774a597a3ff0965d912fa90"
}
Frame {
msec: 2768
- hash: "505071572df7aa300a675f8a808bc7f4"
+ hash: "f00358343437f6e058848c7237601632"
}
Frame {
msec: 2784
- hash: "52839867e81d52746196f299a8371453"
- }
- Key {
- type: 7
- key: 16777248
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "88c9e1d58397a81ed23931c7fdae1e7d"
}
Frame {
msec: 2800
- hash: "c4d214a7e0fc52c2a45fc6e3df12550a"
+ hash: "44d46b459f6bb89510e52b0d999fd499"
}
Frame {
msec: 2816
- hash: "f1fa48d796667bd053fff4af7ec1d8ce"
+ hash: "0c196a24c9ca7143d382688db678d855"
}
Frame {
msec: 2832
- hash: "081e46decc8aba911f018acfd761cda1"
+ hash: "9df6d3d3b9981cb907ab89e65b743e97"
}
Frame {
msec: 2848
- hash: "fa417c9bfda1da66320a8e59fbaeb5b6"
+ hash: "501a644d6cde64ad041b086e00fd3950"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2864
- hash: "83dfa353fd20f3bf7caa8e6ca9a9933c"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 2880
@@ -790,511 +854,527 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "c11459b1d3e51f3d2f5bd30049bcca42"
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 2912
- hash: "997ff3fa82ba2fb27a9c41ed9abe8991"
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 2928
- hash: "f8baaadde147266416c9ab3f9d9106ce"
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 2944
- hash: "79d1d34fd343d8de631aa3259167fe26"
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 2960
- hash: "8b1445ca6131a0fc4377ded24a60186a"
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 2976
- hash: "784cc01604ecadf74a45164f73f0336d"
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2992
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 3008
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 3024
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 3040
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 3056
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 3072
- hash: "b9aeac2be5c8e16e7938e141f32776be"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 3088
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 3104
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 3120
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 3136
- hash: "75e854ccaad087bfe776a843f0bd7284"
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 3152
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 3168
- hash: "3d78320cb021944d7c6cee1a42056663"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 3184
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 3200
- hash: "fb7ad9156658f3866d19e43f006cf013"
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 3216
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 3232
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 3248
- hash: "56b81435dc4ce193bb98c3d02c781242"
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Key {
type: 6
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3232
+ hash: "308a4220f5c74fd56bd218cd695b9822"
+ }
+ Frame {
+ msec: 3248
+ hash: "4ac4e09e987f2ba9661ed52fb1bdf236"
+ }
+ Frame {
msec: 3264
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "9ffd39a8a540ec88ff2b20a16ef083ee"
}
Frame {
msec: 3280
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "4a36ed8e68811954fef171d5734ccbaf"
}
Frame {
msec: 3296
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "714a6231aca70cfa8e83ea71b7ae90dc"
}
Frame {
msec: 3312
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "1fa9e35449ee87c972e3189ad0651a68"
}
Frame {
msec: 3328
- hash: "8ca757a4fd1987329488f63251b0f6b4"
- }
- Frame {
- msec: 3344
- hash: "0da2c1cd0138172698a3bee5d19168c5"
- }
- Frame {
- msec: 3360
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "d602008fada2f4edb6ad00fe759f9db9"
}
Key {
type: 7
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3344
+ hash: "bf16cc38f109e761b5ac2b0c63a1a2fe"
+ }
+ Frame {
+ msec: 3360
+ hash: "30f26041533455ed92c4984f55e3c6ff"
+ }
+ Frame {
msec: 3376
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "5838d666902bc693de505522dad13254"
}
Frame {
msec: 3392
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "6c8ada09b627050e4340da6e8ddd646e"
}
Frame {
msec: 3408
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
}
Frame {
msec: 3424
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "692d4029938c01044b4210958dd1ee7e"
}
Frame {
msec: 3440
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
}
Frame {
msec: 3456
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "87ca0584879b25336a1023ac3252fc9a"
}
Frame {
msec: 3472
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3488
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3504
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3520
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3536
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3552
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3568
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 3584
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 3600
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
}
Frame {
msec: 3616
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "8099972420ffd03e2bfc3ea45918a543"
}
Frame {
msec: 3632
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "2b78b1179a34319c287a6659406e23c3"
}
Frame {
msec: 3648
- hash: "fe95122352effcf1815bc237fc6ce6ab"
+ hash: "ad9458ab4d6376c87350a2356c280f94"
}
Frame {
msec: 3664
- hash: "e3bb1ec3b84df25712f06e0d6963efdd"
+ hash: "a74bc230e310a2826b2fed962db22f7a"
}
Frame {
msec: 3680
- hash: "a10d3184acc85c46e171fe4cf82e1c23"
+ hash: "bd72e8f4757050c41673a6f0d38f2285"
}
Frame {
msec: 3696
- hash: "d566b2763312e5e823593806acd9e809"
+ hash: "379bad4fa4b605cb6a16434bdb031e2b"
}
Frame {
msec: 3712
- hash: "7db073b7487ddea48e7c9df8b9bfdc00"
+ hash: "e144a8e9586f29f9b2f042b47e7739ae"
}
Frame {
msec: 3728
- hash: "85c663b943f67d158367dba0508980a5"
+ hash: "bd74c9e79bc1a88dd6a17a3aed21e368"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3744
- hash: "6336ce0d912ee63773475c4c6c5d59be"
+ hash: "144724168f42372e10ec6c39662a5ed8"
}
Frame {
msec: 3760
- hash: "c75ba80484af36633b6a4d17b666b1c9"
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
}
Frame {
msec: 3776
- hash: "08b7d4eef2d15bc717ff1a981a11f275"
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
}
Frame {
msec: 3792
- hash: "0ab8bebb0e43786a7e51ea780745080c"
+ hash: "184cff262d1004ce702c117a6b5b9699"
}
Frame {
msec: 3808
- hash: "6fa1811f520eff9893b3c7b00e53fa7d"
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
}
Frame {
msec: 3824
- hash: "6feb44655bfbec651cc2902676bd08b4"
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
}
Frame {
msec: 3840
image: "cursorDelegate.3.png"
}
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 3856
- hash: "00b7714df163d8055514e0dbd8a83bac"
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
}
Frame {
msec: 3872
- hash: "6ef2a330d70a7e0ce343bb352c46f126"
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
}
Frame {
msec: 3888
- hash: "f4e26309fa3b8a6d55f44bf146544101"
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
}
Frame {
msec: 3904
- hash: "dfa1e24149f2662a4a552da3bb64348c"
+ hash: "a8781226e5e494324a34e120aa446cd1"
}
Frame {
msec: 3920
- hash: "9ab9d6ef4aeb5863401a9e251f684e2d"
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
}
Frame {
msec: 3936
- hash: "c9f7591a37a3743b3b48de5337fd2fa0"
+ hash: "774b161fe9645bc69b89e580b3e41f71"
}
Frame {
msec: 3952
- hash: "2d38f17db530050574d9192c805c142d"
+ hash: "5756d7ffd8ff656db54f4329ea909553"
}
Frame {
msec: 3968
- hash: "38a4ad2cf9fa3015eff67014900a44cc"
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
}
Frame {
msec: 3984
- hash: "9d9ce4ac0de6caa2f0bb78eac414ba65"
+ hash: "f9765e4def564b64861402e1a873b169"
}
Frame {
msec: 4000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
}
Frame {
msec: 4016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "7abcb9d6cf223c1655f6265f780a321a"
}
Frame {
msec: 4032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
}
Frame {
msec: 4048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "f9765e4def564b64861402e1a873b169"
}
Frame {
msec: 4064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 4080
- hash: "9d9ce4ac0de6caa2f0bb78eac414ba65"
+ hash: "5756d7ffd8ff656db54f4329ea909553"
}
Frame {
msec: 4096
- hash: "38a4ad2cf9fa3015eff67014900a44cc"
+ hash: "774b161fe9645bc69b89e580b3e41f71"
}
Frame {
msec: 4112
- hash: "2d38f17db530050574d9192c805c142d"
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
}
Frame {
msec: 4128
- hash: "c9f7591a37a3743b3b48de5337fd2fa0"
+ hash: "a8781226e5e494324a34e120aa446cd1"
}
Frame {
msec: 4144
- hash: "9ab9d6ef4aeb5863401a9e251f684e2d"
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
}
Frame {
msec: 4160
- hash: "dfa1e24149f2662a4a552da3bb64348c"
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
}
Frame {
msec: 4176
- hash: "f4e26309fa3b8a6d55f44bf146544101"
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
}
Frame {
msec: 4192
- hash: "6ef2a330d70a7e0ce343bb352c46f126"
+ hash: "2d1b406be294727a278ba6bbc97be62a"
}
Frame {
msec: 4208
- hash: "00b7714df163d8055514e0dbd8a83bac"
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
}
Frame {
msec: 4224
- hash: "ae46d672649a4b0fc5171f776af93a2c"
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
}
Frame {
msec: 4240
- hash: "6feb44655bfbec651cc2902676bd08b4"
+ hash: "184cff262d1004ce702c117a6b5b9699"
}
Frame {
msec: 4256
- hash: "6fa1811f520eff9893b3c7b00e53fa7d"
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
}
Frame {
msec: 4272
- hash: "0ab8bebb0e43786a7e51ea780745080c"
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
}
Frame {
msec: 4288
- hash: "08b7d4eef2d15bc717ff1a981a11f275"
+ hash: "144724168f42372e10ec6c39662a5ed8"
}
Frame {
msec: 4304
- hash: "c75ba80484af36633b6a4d17b666b1c9"
+ hash: "d2da36fbf73289f545133bd608af66a2"
}
Frame {
msec: 4320
- hash: "6336ce0d912ee63773475c4c6c5d59be"
+ hash: "b1d7da6b42a31bba91148ab37b111945"
}
Frame {
msec: 4336
- hash: "85c663b943f67d158367dba0508980a5"
+ hash: "6f226a3b20d95e17df69e2c4e5aff3d1"
}
Frame {
msec: 4352
- hash: "7db073b7487ddea48e7c9df8b9bfdc00"
+ hash: "1109da0f043a9418661fc05e53fe3b45"
}
Frame {
msec: 4368
- hash: "d566b2763312e5e823593806acd9e809"
+ hash: "f3e901db9efd1d9fadf1cb6858040d51"
}
Frame {
msec: 4384
- hash: "a10d3184acc85c46e171fe4cf82e1c23"
+ hash: "c8e50c0e924b11a3f1943abb9a4008a4"
}
Frame {
msec: 4400
- hash: "e3bb1ec3b84df25712f06e0d6963efdd"
+ hash: "431226a27488ed1dba237de3d43f94c5"
}
Frame {
msec: 4416
- hash: "fe95122352effcf1815bc237fc6ce6ab"
+ hash: "420d316430c84f10d7cd24d29b918149"
}
Frame {
msec: 4432
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
}
Frame {
msec: 4448
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "231bff73758a1c6f7c7c0365159ba3e6"
}
Frame {
msec: 4464
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "d1ac7ceda7303bbf3392d33f47037ed6"
}
Frame {
msec: 4480
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4496
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4512
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4528
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4544
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4560
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4576
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "a2ad07326fafcb3012cdb869f39af466"
}
Frame {
msec: 4592
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "8622eb25a6da44926b5161bce213a483"
}
Frame {
msec: 4608
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "fe563aa9dae9655871f82a779063cdbd"
}
Frame {
msec: 4624
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "775cd79b012f79b773449a0ad8457149"
}
Frame {
msec: 4640
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "01e9fab344a148a0877a7332d561be5a"
}
Frame {
msec: 4656
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "935566d139599a30197850774fb059ba"
}
Frame {
msec: 4672
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "4aae1ac532624417decddd978f516b6e"
}
Frame {
msec: 4688
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "34dc78df6e9941988712c1f8f79c3db0"
}
Frame {
msec: 4704
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "23a96c11d5917c44bd48239ed2b5777f"
}
Frame {
msec: 4720
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "f8f13e097eae3152db3ccebff1343fe0"
}
Frame {
msec: 4736
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "02f8fca7c4ab80ecf425e4b39e966b86"
}
Frame {
msec: 4752
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "c3356367750e797ff81bc4102f948134"
}
Frame {
msec: 4768
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
}
Frame {
msec: 4784
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "ed3c741639232377f61867fd353ce58a"
}
Frame {
msec: 4800
@@ -1302,2254 +1382,118 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Frame {
msec: 4832
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 4848
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 4864
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 4880
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 130; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 4896
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 4912
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 4928
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 4944
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 133; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 134; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 4960
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 135; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 4976
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 136; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 4992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 137; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 5008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 139; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 5024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 5040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 141; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 143; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 5056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 5072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 5088
- hash: "748dc58a3ad83d7b99d7b26ad2f82786"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 5104
- hash: "242cc0ee7c3bdb44e8933068d3a93b61"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 150; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 5120
- hash: "3be6f0a35fb085dcf6c9481cf1c23f9d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 5136
- hash: "a6f63267eaba9aefd2c9ab338571ef33"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 5152
- hash: "ba37dd9ba649e294465dc707f6b768ec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 5168
- hash: "35b186609721ec0b8a121d15bc54ce49"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 5184
- hash: "700ff15e4e48af93362455a149d90363"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 5200
- hash: "1c51eb8d4d25d086bda4d595a49c3a86"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 5216
- hash: "2f085b047d24384d463163df7fac2bd3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Frame {
msec: 5232
- hash: "46d7aff6eb47e50e23c061ecb149fbf9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "4f0d49aff27a1c83287d38e760c10f16"
}
Frame {
msec: 5248
- hash: "48d7a8f749f7501dbaa4599ca41096a5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 97
- modifiers: 0
- sendToViewport: true
+ hash: "ed3c741639232377f61867fd353ce58a"
}
Frame {
msec: 5264
- hash: "4c2a085c69c118fedfa15fe46cdc508b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "25f25828a4d22fe85db0de5c562f658e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "e9fb14ec21e9ec1235d2fea6e055b69d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "66417881aeb85778be66566241c45f5a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5328
- hash: "c8c136690ffd8e5cc3e58f7376693b4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5344
- hash: "c58c4fb5b7197cd8bd95742dc8715bbf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5360
- hash: "2e0c93380883fcf2d0e56024fecba605"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5376
- hash: "5f169f09e3d868eb0425a331d4bc3144"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5392
- hash: "ed648742be4b0ded04e713e83ed24b27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "92131288bb38480469f4578282dedaf8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5424
- hash: "e16773f750bb0f635552b1eeadb2d625"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 189; y: 93
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5440
- hash: "6e653cd552d82f38f30b8027d1951534"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 192; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5456
- hash: "cfc1d6efa8d1b3b86396704f0be031ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5472
- hash: "5848af73f5ab7c811639a6d01921d502"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5488
- hash: "3823e7da05678f63e6761a81ed7233e2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5504
- hash: "d095abe9814a60824914960a11663f12"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5520
- hash: "18922bb3269d903a36e0b690249b473a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5536
- hash: "4d8400a3ca2b782e7b054bb2f71d4543"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5552
- hash: "24ed25d7a767f01fb02f545fc6c6931a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5568
- hash: "55fb16784e3655ae70f97d6c32853cdc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5584
- hash: "694e6979f0de62b61324dc4b144a2d5d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5600
- hash: "e61b8b03251f6312e3de4e0c8af684d5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5616
- hash: "6203321f87d53692dbb2b2aaf7dd3944"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5632
- hash: "297b77029475d77cd8e481199b23da30"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5648
- hash: "414615d772b4c80bf85eabfdca6fd0e0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5664
- hash: "46d70882552a21267eebb3505da086f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5680
- hash: "372acafc63624307bcb384c48a803ab7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5696
- hash: "1b98094dd4f192af8229b7058b8ce396"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5712
- hash: "d627fa0ce696e46650225e43134643f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5728
- hash: "0410f4b504d768bc00940b20d3d942f9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5744
- hash: "5f8011b44681d769800af8d205c757cb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5776
- hash: "99f7a46f841f96445962b5fb3496d996"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5792
- hash: "ed8bba2823ca2fe7cf138af0fcc52806"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5808
- hash: "c9007b7ae5038ba59bfc6fac15c80d5f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 226; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5824
- hash: "2db81c955a99652bcfef958e870054af"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5840
- hash: "1e3906d7f3ee5a29c3c90b8e1f6c1eb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5856
- hash: "fc59738903cc9e6f36ef4d27bfde9496"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5872
- hash: "768aaf4ef2b13b40b75bdf15787966b6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5888
- hash: "3085baedc0c58a6757b134bb4f80fa9e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5904
- hash: "0a1b8cad167bf93801f4d0dd34bf872e"
- }
- Frame {
- msec: 5920
- hash: "6366e04808ee015feed44d95cc117e1e"
- }
- Frame {
- msec: 5936
- hash: "dd67a8542a243aac9462e25dc1586e6e"
- }
- Frame {
- msec: 5952
- hash: "e06c8788b2ef327d005b4048f0807334"
- }
- Frame {
- msec: 5968
- hash: "dda2beda1253bd477d04cada4ec4df27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "d659d1724637d90497c8e417764d3477"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 230; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 225; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "bdc53613cad59416ed79287874eb59f8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "54efe0acb07fb69827024a566773a36e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "860530a5ac3d89193f3cf234e21f8f6a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "ade5f8e28159304b22866f688efdbb46"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "7d5f5cf34910527d899e89ea07fb7254"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "c201ed0f2419396a229d8396152aba01"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "b99135e2cb03ab252ff379c8001c26ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "768aaf4ef2b13b40b75bdf15787966b6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "71a5bed1a87e16c986b2f4b245e956b8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "7155607add8c7254286097cda52b5888"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "e516e4d8a4ef0195ae04b3287f536ffd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "afa06d10b37d8ad8b57e392142ff50f2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 205; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "88c3fe68f7251d87a5bf197b9d59b899"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6288
- hash: "b2687baf5148539ee2181b18077e0a3d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6304
- hash: "457aed68cee2b9f3ff3c7d5f0eb2b6aa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6320
- hash: "48bb4683718a3b7c34baea29260fbe8c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6336
- hash: "7c32fbf799bbfc10d0fbdd96bcfa9d95"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 197; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6352
- hash: "68cee3b8213a9d38e2ed431d06eb6756"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6368
- hash: "596c732c40a86d16bc649f164b919457"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6384
- hash: "d9cb5bf69d4f8aaebefae6d680a99185"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6400
- hash: "bb6759f3aff00f027f4f426efb775d2d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6416
- hash: "a408d88f97c30ab8ab12a222b03571b4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6432
- hash: "bb2e8994dc014eb6d4e4e33257269c2a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6448
- hash: "190e9df0b8d20b0f37a198e9f3976416"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6464
- hash: "aa7be52534c8550948deea6ae174330d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6480
- hash: "533caac613ea1279a51a5b5b29acdccc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6496
- hash: "288cc34879d9ed8ed381ba6cc31de3e7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6512
- hash: "2a57602c47ab788f288daa81b985fc1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "fa3540fafa1a9e3c5e796b598dce8fb1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6544
- hash: "7e9b17ae7c10cb30153539911ac6eb13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6560
- hash: "9e62b16c858e80ff1294ec53e2390498"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6576
- hash: "287470e6cf9bd4b9acfd1cd1512307e3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "4086c7c7a573a1b9f98d22ebf9b46c5f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "7d0868f000a1102916720a29a332543f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6624
- hash: "bda3cfdca81f7cba54514c512eb6b12e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6640
- hash: "923ff9fac39c3fba2c9cf7b52fc652ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6656
- hash: "269718e3586affbbdf0b9599e12f5677"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6672
- hash: "d12e03b5da6ea7b162d7dec6930c1a54"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "70ce229fae6985dd49de8cca01c031e6"
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "56215b7d24ac382ff1ed256c80d14091"
- }
- Frame {
- msec: 6752
- hash: "ac132304e072806431803d26e345b264"
- }
- Frame {
- msec: 6768
- hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151"
- }
- Frame {
- msec: 6784
- hash: "43906030c2572af0f8f0577dbc86e346"
- }
- Frame {
- msec: 6800
- hash: "d64b58801430d5063225dceac1603bca"
- }
- Frame {
- msec: 6816
- hash: "56b81435dc4ce193bb98c3d02c781242"
- }
- Frame {
- msec: 6832
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 6848
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 6864
- hash: "fb7ad9156658f3866d19e43f006cf013"
- }
- Frame {
- msec: 6880
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Frame {
- msec: 6896
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Frame {
- msec: 6912
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Frame {
- msec: 6928
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Frame {
- msec: 6944
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Frame {
- msec: 6960
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Frame {
- msec: 6976
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Frame {
- msec: 6992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7088
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Frame {
- msec: 7104
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Frame {
- msec: 7120
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Frame {
- msec: 7136
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Frame {
- msec: 7152
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Frame {
- msec: 7168
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Frame {
- msec: 7184
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Frame {
- msec: 7200
- hash: "fb7ad9156658f3866d19e43f006cf013"
- }
- Frame {
- msec: 7216
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 7232
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 7248
- hash: "56b81435dc4ce193bb98c3d02c781242"
- }
- Frame {
- msec: 7264
- hash: "d64b58801430d5063225dceac1603bca"
- }
- Frame {
- msec: 7280
- hash: "43906030c2572af0f8f0577dbc86e346"
- }
- Frame {
- msec: 7296
- hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151"
- }
- Frame {
- msec: 7312
- hash: "ac132304e072806431803d26e345b264"
- }
- Frame {
- msec: 7328
- hash: "56215b7d24ac382ff1ed256c80d14091"
- }
- Frame {
- msec: 7344
- hash: "4d5c97925b21d699f1c3720a3f51ebbb"
- }
- Frame {
- msec: 7360
- hash: "70ce229fae6985dd49de8cca01c031e6"
- }
- Frame {
- msec: 7376
- hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d"
- }
- Frame {
- msec: 7392
- hash: "d12e03b5da6ea7b162d7dec6930c1a54"
- }
- Frame {
- msec: 7408
- hash: "269718e3586affbbdf0b9599e12f5677"
- }
- Frame {
- msec: 7424
- hash: "42d19ea6dd328c505da5a4eee23a257d"
- }
- Frame {
- msec: 7440
- hash: "e4d9d77859759dd95cf3ffee8f142cd8"
- }
- Frame {
- msec: 7456
- hash: "445e4c6e9872b63a1461e3277dd8185c"
- }
- Frame {
- msec: 7472
- hash: "d6343c629acd987179eae0d158d2504c"
- }
- Frame {
- msec: 7488
- hash: "a5340087baa2c3694ed0cc2bbc3e2ad9"
- }
- Frame {
- msec: 7504
- hash: "205973c30aaca71d1f20e740ce971d82"
- }
- Frame {
- msec: 7520
- hash: "ed28c7e07755e177222c7e322116bfb4"
- }
- Frame {
- msec: 7536
- hash: "6cebfc407a985694c803940608ab1303"
- }
- Frame {
- msec: 7552
- hash: "87f825fc820d3942e4d9b5ece5be3714"
- }
- Frame {
- msec: 7568
- hash: "9aa56dfe90ed2eba58eee0ff6ff3822c"
- }
- Frame {
- msec: 7584
- hash: "c93acf87a918f21a55cf39ea255315a3"
- }
- Frame {
- msec: 7600
- hash: "f8ce1bec5d5016c56fc66d52c28e69d1"
- }
- Frame {
- msec: 7616
- hash: "a365dba2f7c4be77ea98b727813c2f03"
- }
- Frame {
- msec: 7632
- hash: "e8d1c35ee9ef74c4070adfce5e4560f1"
- }
- Frame {
- msec: 7648
- hash: "f5f2dbb041eeb4de1821761f4fbca506"
- }
- Frame {
- msec: 7664
- hash: "f4ea6e9dff51778e9b5d1321453617ec"
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Frame {
- msec: 7696
- hash: "f2869791dde1eb4c2ea24e04dc3ac653"
- }
- Frame {
- msec: 7712
- hash: "9bd70e91b765de22b70fe295adc4f87f"
- }
- Frame {
- msec: 7728
- hash: "c0338d0a5c72ba63bff666a76ab3242c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "cb2a643eed9b5658260e04495820cd3d"
- }
- Frame {
- msec: 7760
- hash: "6dda51f2e611b1f589c75820fd8c7295"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "98d8692afd47c61421ddcae62414a72e"
- }
- Frame {
- msec: 7792
- hash: "2c533bcdd9df45c6f942d47509ebf20e"
- }
- Frame {
- msec: 7808
- hash: "d28f231fb1e128329e8985689deac882"
- }
- Frame {
- msec: 7824
- hash: "ea73450baf98a2f629ce1c203cfcd728"
- }
- Frame {
- msec: 7840
- hash: "959a31d38edc343b5e081fd0cddc81df"
- }
- Frame {
- msec: 7856
- hash: "9b1ae10ee8e9b3f176357733af9e6735"
- }
- Frame {
- msec: 7872
- hash: "89b0dd11f456bbb321e0bd2e1614c193"
- }
- Frame {
- msec: 7888
- hash: "a0a3aa6d8d4c677894e745ee432084e2"
- }
- Frame {
- msec: 7904
- hash: "f63207b8903085b19de1c9b6a9ff90e0"
- }
- Frame {
- msec: 7920
- hash: "c8f2126fece8c2b473c6511aa568dddb"
- }
- Frame {
- msec: 7936
- hash: "6ccd1f30e85dbad74468c228d92a9a3c"
- }
- Frame {
- msec: 7952
- hash: "bae09fe9f29e0f6ebda298cae753ddab"
- }
- Frame {
- msec: 7968
- hash: "cde4abae868488345fb124b927f46b45"
- }
- Frame {
- msec: 7984
- hash: "a88ccf9c8ae34ffcfd15af4e66102040"
- }
- Frame {
- msec: 8000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8080
- hash: "a88ccf9c8ae34ffcfd15af4e66102040"
- }
- Frame {
- msec: 8096
- hash: "cde4abae868488345fb124b927f46b45"
- }
- Frame {
- msec: 8112
- hash: "bae09fe9f29e0f6ebda298cae753ddab"
- }
- Frame {
- msec: 8128
- hash: "6ccd1f30e85dbad74468c228d92a9a3c"
- }
- Frame {
- msec: 8144
- hash: "c8f2126fece8c2b473c6511aa568dddb"
- }
- Frame {
- msec: 8160
- hash: "f63207b8903085b19de1c9b6a9ff90e0"
- }
- Frame {
- msec: 8176
- hash: "a0a3aa6d8d4c677894e745ee432084e2"
- }
- Frame {
- msec: 8192
- hash: "89b0dd11f456bbb321e0bd2e1614c193"
- }
- Frame {
- msec: 8208
- hash: "9b1ae10ee8e9b3f176357733af9e6735"
- }
- Frame {
- msec: 8224
- hash: "959a31d38edc343b5e081fd0cddc81df"
- }
- Frame {
- msec: 8240
- hash: "ea73450baf98a2f629ce1c203cfcd728"
- }
- Frame {
- msec: 8256
- hash: "d28f231fb1e128329e8985689deac882"
- }
- Frame {
- msec: 8272
- hash: "2c533bcdd9df45c6f942d47509ebf20e"
- }
- Frame {
- msec: 8288
- hash: "98d8692afd47c61421ddcae62414a72e"
- }
- Frame {
- msec: 8304
- hash: "6dda51f2e611b1f589c75820fd8c7295"
- }
- Frame {
- msec: 8320
- hash: "cb2a643eed9b5658260e04495820cd3d"
- }
- Frame {
- msec: 8336
- hash: "88afd2fa1182fbb2aab100d4587a1006"
- }
- Frame {
- msec: 8352
- hash: "bc657c5181a11a9ff9565f134bdccb8d"
- }
- Frame {
- msec: 8368
- hash: "a296634d814a6e12f9d09f4d8a9fa097"
- }
- Frame {
- msec: 8384
- hash: "f05a2deeb12722904c4f31d641dffeb4"
- }
- Frame {
- msec: 8400
- hash: "75823698247e39dd10a70fe224e13597"
- }
- Frame {
- msec: 8416
- hash: "244fa06c168f7a7401b8ec7f5ddb0e52"
- }
- Frame {
- msec: 8432
- hash: "a78e0f88d269290e9086d1d854618f0c"
- }
- Frame {
- msec: 8448
- hash: "57b1281d29d5c5fdc15d9cf1e3a5545c"
- }
- Frame {
- msec: 8464
- hash: "a24ac211ef29dcf7f22ac95991f1af3f"
- }
- Frame {
- msec: 8480
- hash: "361f978ea3597fd518c25c0069c22e8b"
- }
- Frame {
- msec: 8496
- hash: "ac8e2c01eb58aac0eb4feb6aba9b9628"
- }
- Frame {
- msec: 8512
- hash: "6099612934b5eb90296f1cc3cb5c1a84"
- }
- Frame {
- msec: 8528
- hash: "7c3f08291168065fc9c1d62108022d33"
- }
- Frame {
- msec: 8544
- hash: "8bf57ba445d668af5f3e59276c4f8800"
- }
- Frame {
- msec: 8560
- hash: "c8ed352cbfbc472ea4802a9e03d40052"
- }
- Frame {
- msec: 8576
- hash: "11e5546b30e47d2f3067c0364b9f0877"
- }
- Frame {
- msec: 8592
- hash: "9df0f136fca92d4a05f17ee68f0cd286"
- }
- Frame {
- msec: 8608
- hash: "39f47838a622ba328548cad57cca9e12"
- }
- Frame {
- msec: 8624
- hash: "c891d582be4b23c01e29032fe861081f"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "c3820dfd382c4568d9fbd2ee95889eda"
- }
- Frame {
- msec: 8672
- hash: "528cf8778318bf7216b54f983dadb2b4"
- }
- Frame {
- msec: 8688
- hash: "419518a3c63aa36f6070e95eb93e58a3"
- }
- Frame {
- msec: 8704
- hash: "11b22e2853c0a9ea6e4ac764348698c9"
- }
- Frame {
- msec: 8720
- hash: "8018329c4b57647942ae34a5f83c2b12"
- }
- Frame {
- msec: 8736
- hash: "c37e9fd5c3d664c2e4911c8cb9fcabf7"
- }
- Frame {
- msec: 8752
- hash: "4e7895f802c9fc249894ba0db25959f7"
- }
- Frame {
- msec: 8768
- hash: "5fed71d99ef70432bc6be8caaea36f17"
- }
- Frame {
- msec: 8784
- hash: "69976d074acbd7a5731c70b33c8f084b"
- }
- Frame {
- msec: 8800
- hash: "c88952348da3df0627b12b8bb05ca13e"
- }
- Frame {
- msec: 8816
- hash: "cc5222da7a17c66d4db146c406492701"
- }
- Frame {
- msec: 8832
- hash: "8915e752776da27cb86019c9decc8a8c"
- }
- Frame {
- msec: 8848
- hash: "d8a77ccc7c01cf187e846a2903e1c55e"
- }
- Frame {
- msec: 8864
- hash: "3cf3f02f98a199c81ef73e8905e7f7ee"
- }
- Frame {
- msec: 8880
- hash: "7a1d47e0109fc370bf63714040cbef96"
- }
- Frame {
- msec: 8896
- hash: "2ca8b8ddbe73b29327e474da34a14a87"
- }
- Frame {
- msec: 8912
- hash: "ee75214865fca848aa38cc05b6049d8f"
- }
- Frame {
- msec: 8928
- hash: "05ab7d8118a806f2215160f5f266a082"
- }
- Frame {
- msec: 8944
- hash: "31e63095b7be56d0bf75e9cff832feb7"
- }
- Frame {
- msec: 8960
- hash: "3ffda2c2f154f1eb806e9f0963057fa1"
- }
- Frame {
- msec: 8976
- hash: "4e805203b58e8f6f331f2e878704fa01"
- }
- Frame {
- msec: 8992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9088
- hash: "4e805203b58e8f6f331f2e878704fa01"
- }
- Frame {
- msec: 9104
- hash: "3ffda2c2f154f1eb806e9f0963057fa1"
- }
- Frame {
- msec: 9120
- hash: "31e63095b7be56d0bf75e9cff832feb7"
- }
- Frame {
- msec: 9136
- hash: "05ab7d8118a806f2215160f5f266a082"
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..e69860ebbc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png
new file mode 100644
index 0000000000..1db3c262d8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..fbef8052a6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png
new file mode 100644
index 0000000000..dc56c7e1de
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png
new file mode 100644
index 0000000000..04ea496431
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png
new file mode 100644
index 0000000000..98bf7dee1e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png
new file mode 100644
index 0000000000..d95b8952c5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png
new file mode 100644
index 0000000000..9954344363
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png
new file mode 100644
index 0000000000..d49c2ff1f8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml
new file mode 100644
index 0000000000..94891e5d07
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 32
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 48
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 64
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 80
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 96
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 112
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 128
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 144
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 160
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 176
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 192
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 208
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 224
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 240
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 256
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 272
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 288
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 304
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 320
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 352
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 368
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 384
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 400
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 432
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 448
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 464
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 480
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 496
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 512
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 528
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 544
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 560
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 576
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 592
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 608
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 624
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 640
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 672
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 704
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 720
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 736
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 752
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 768
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 784
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 800
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 816
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 832
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 848
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 864
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 880
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 896
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 912
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 928
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 944
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 960
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 992
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1008
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1024
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1040
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1056
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1072
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1088
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1104
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1120
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1136
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1152
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1168
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1184
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1200
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1216
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1232
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1248
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1264
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1280
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1296
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1328
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1344
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1360
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1376
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1424
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1440
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1456
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1488
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1504
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1520
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1536
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1552
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1584
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1600
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1648
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1664
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1680
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1696
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1728
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1760
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1776
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1808
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1824
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1856
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1872
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1888
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1904
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1952
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1968
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Frame {
+ msec: 2000
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2048
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2080
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2096
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2112
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2144
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2176
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2192
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2208
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2224
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2240
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2272
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2288
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2304
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2320
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2352
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2384
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2400
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2416
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2464
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2480
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2496
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2512
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2528
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2576
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2592
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2608
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2640
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2656
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2672
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2688
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2720
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2736
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2752
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2768
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2784
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2832
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2848
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2864
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2912
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2928
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2960
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2976
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3008
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3024
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3040
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3088
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3104
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3152
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3184
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3200
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3216
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3264
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3280
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3296
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3344
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3360
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3376
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3392
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3440
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3456
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3472
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3488
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3520
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3536
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3552
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3568
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3584
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3632
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3648
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3664
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3712
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3728
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3760
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3776
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3792
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3808
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3824
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3840
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3872
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3888
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3904
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3920
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3936
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3952
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3968
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4000
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4016
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4032
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4048
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4096
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4112
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4128
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4160
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4192
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4208
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4240
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4272
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4304
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4320
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4336
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4352
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4368
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4400
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4416
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4432
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4448
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4496
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4512
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4528
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4544
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4576
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4592
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4624
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4640
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4656
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4672
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4688
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4704
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4720
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4736
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4752
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4768
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4784
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4800
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4832
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4864
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4880
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4896
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4912
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4928
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4944
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4976
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4992
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5008
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5040
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5056
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5072
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5088
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5104
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5120
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5136
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5152
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5168
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5184
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5200
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5216
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5232
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5248
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5264
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5280
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5296
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5312
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5328
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5344
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5360
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5376
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5392
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5408
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5424
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5440
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5456
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5472
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5488
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5504
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5520
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5536
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5552
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5568
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5584
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5600
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5616
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5632
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5648
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5664
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5680
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5696
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5712
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5728
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5744
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5760
+ image: "usingMultilineEdit.5.png"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5792
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5808
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5824
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "4e620c1b847274f691e80a384eac5320"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "1a246aa1be0878c38da2eaac6befb738"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "7d6d4a33aacd1d2f530834af31069793"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "eba517141a4dc94025801fabc8c5e813"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6208
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6224
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6240
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6256
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "d8a1bee2a0e57944d8268a2ce7e6c3c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "a609d3c9cb375240e66dd316af27543c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "0d376060ba0f9843ed814a8d8150d047"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "9ad787bf41f0ab66beffff056a115c23"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6608
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6624
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6640
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6656
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6672
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ image: "usingMultilineEdit.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6912
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6928
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6944
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6960
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6976
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6992
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7008
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7024
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7040
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7056
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7072
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7088
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7120
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7136
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7152
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7168
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7200
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7216
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7232
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7248
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7264
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7280
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7296
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7312
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7328
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7344
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7360
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7376
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7392
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7408
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7424
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7440
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7456
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7472
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7488
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7504
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7520
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7536
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7552
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7568
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7600
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7616
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7648
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7664
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7680
+ image: "usingMultilineEdit.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7712
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7744
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7760
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7776
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7792
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7808
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7824
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7840
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7856
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7872
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7888
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7904
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7920
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7936
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7952
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Frame {
+ msec: 7984
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "a62df700f3209668a813e765a79e7859"
+ }
+ Frame {
+ msec: 8016
+ hash: "a62df700f3209668a813e765a79e7859"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "e8928770969b82523e828e3036bbe106"
+ }
+ Frame {
+ msec: 8048
+ hash: "e8928770969b82523e828e3036bbe106"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8080
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8112
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8128
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8144
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8160
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8176
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8192
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8224
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8240
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8256
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8288
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8304
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8320
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8352
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8368
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8384
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8416
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8432
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8448
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8464
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8496
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8512
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8528
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8560
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8576
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8592
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8608
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8624
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8640
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8688
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8704
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8720
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8736
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8752
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8768
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8784
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8800
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8816
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8832
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8848
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8864
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8880
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8896
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8912
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8928
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8944
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8960
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8976
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8992
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9008
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9024
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9040
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9056
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9072
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9088
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9104
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9120
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9136
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9152
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9168
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9184
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9200
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9232
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9312
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9328
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9344
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9360
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9376
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9392
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9408
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9424
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9440
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9472
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9488
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9504
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9520
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9536
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9568
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9584
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9600
+ image: "usingMultilineEdit.9.png"
+ }
+ Frame {
+ msec: 9616
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9632
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9648
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9664
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9696
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9712
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9728
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9744
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9760
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9776
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9792
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9808
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9824
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9840
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9856
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9872
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9888
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9904
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9920
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9936
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9952
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9968
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9984
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10000
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10016
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10032
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10048
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10064
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10080
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10096
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10128
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10144
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10160
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10176
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10192
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10208
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10224
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10256
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10272
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10288
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10304
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10320
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10336
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10352
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10384
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10400
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10416
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10432
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10448
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10480
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10496
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10512
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10528
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10544
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10560
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10592
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10608
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10624
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10640
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10672
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10688
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10704
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10720
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10736
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10752
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10768
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10784
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10800
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10816
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10832
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10848
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10864
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10880
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10896
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10912
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10928
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10944
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10960
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10976
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10992
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11008
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11024
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11040
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11056
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11072
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11088
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11104
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11120
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11136
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11152
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11168
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11184
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11200
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11216
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11232
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11248
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11264
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11280
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11296
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11312
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11328
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11344
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11360
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11376
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11392
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11408
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11424
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11440
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11456
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11472
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11488
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11504
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11520
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 11536
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11552
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11568
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11584
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11600
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11616
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
index b5bb102fea..5f80234646 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
@@ -1,17 +1,17 @@
import QtQuick 1.0
+import "../shared" 1.0
Rectangle {
Component { id: testableCursor
- //Doesn't blink
+ //This shouldn't blink
Rectangle {
color:"black"
width:1
}
}
- color: "green"
- width:400;
+ width:300;
height:40;
- TextEdit {
+ TestTextEdit {
focus: true;
cursorDelegate: testableCursor
text: "Jackdaws love my big sphinx of Quartz"
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
index 4cf7e97d86..bf5e7a0198 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
Rectangle{
- width: 600
- height: 200
- Column{
- MultilineEdit{
+ width: 280
+ height: 140
+ Column {
+ MultilineEdit {
text: 'I am the very model of a modern major general. I\'ve information vegetable, animal and mineral. I know the kings of england and I quote the fights historical - from Marathon to Waterloo in order categorical.';
width: 182; height: 60;
}
- MultilineEdit{text: 'Hello world'}
+ Rectangle {height: 20; width: 20;}//Spacer
+ MultilineEdit {text: 'Hello world'}
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
index 4afe417e2f..63400f1b35 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
@@ -1,30 +1,31 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
height:400
width: 200
- TextEdit {
+ TestTextEdit {
width: 200
height: 100
wrapMode: TextEdit.WordWrap
focus: true
}
//With QTBUG-6273 only the bottom one would be wrapped
- TextEdit {
+ TestTextEdit {
width: 200
height: 100
wrapMode: TextEdit.WordWrap
text: "This is a test that text edit wraps correctly."
y:100
}
- TextEdit {
+ TestTextEdit {
width: 150
height: 100
wrapMode: TextEdit.WrapAnywhere
text: "This is a test that text edit wraps correctly. thisisaverylongstringwithnospaces"
y:200
}
- TextEdit {
+ TestTextEdit {
width: 150
height: 100
wrapMode: TextEdit.Wrap
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
index 74c16e2c90..50c3cb47a4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
id:lineedit
@@ -7,16 +8,16 @@ Item {
width: textInp.width + 11
height: 13 + 11
- Rectangle{
+ Rectangle {
color: 'lightsteelblue'
anchors.fill: parent
}
clip: true
Component.onCompleted: textInp.cursorPosition = 0;
- TextInput{
+ TestTextInput {
id:textInp
- cursorDelegate: Item{
- Rectangle{
+ cursorDelegate: Item {
+ Rectangle {
visible: parent.parent.focus
color: "#009BCE"
height: 13
@@ -42,7 +43,7 @@ Item {
horizontalAlignment: TextInput.AlignLeft
font.pixelSize:15
}
- MouseArea{
+ MouseArea {
//Implements all line edit mouse handling
id: mainMouseArea
anchors.fill: parent;
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
index 973462a2df..f2a34b7cc5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
@@ -1,5 +1,7 @@
import QtQuick 1.0
- Rectangle {
+import "../shared" 1.0
+
+Rectangle {
resources: [
Component { id: cursorA
Item { id: cPage;
@@ -11,8 +13,8 @@ import QtQuick 1.0
Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;}
opacity: 1
SequentialAnimation on opacity { running: cPage.parent.focus == true; loops: Animation.Infinite;
- NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"}
- NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"}
+ NumberAnimation { to: 1; duration: 500; easing.type: "InQuad"}
+ NumberAnimation { to: 0; duration: 500; easing.type: "OutQuad"}
}
}
width: 1;
@@ -22,7 +24,7 @@ import QtQuick 1.0
width: 400
height: 200
color: "white"
- TextInput { id: mainText
+ TestTextInput { id: mainText
text: "Hello World"
cursorDelegate: cursorA
focus: true
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
index 9d0bab2705..1d96795608 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
index db66ff79b3..a3a9bfafd0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
index cbcca68d43..b50028c4dc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
index c22196b6bf..1c4876e222 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
index a1d051e6bd..9d110cbc82 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
index 208d05f203..bd4af6a804 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
@@ -6,134 +6,146 @@ VisualTest {
}
Frame {
msec: 16
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 32
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 48
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 64
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 80
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 96
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 112
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 128
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 144
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 160
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 176
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 192
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 208
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 224
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 240
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 256
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 272
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 288
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 304
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 320
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 336
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 352
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 368
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 384
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 400
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 416
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 432
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 448
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 464
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 480
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 496
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 512
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
+ }
+ Frame {
+ msec: 528
+ hash: "227cbfe5fc07906060951e19ebb3ad30"
}
Key {
- type: 6
+ type: 7
key: 16777234
modifiers: 0
text: ""
@@ -141,36 +153,44 @@ VisualTest {
count: 1
}
Frame {
- msec: 528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
msec: 544
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "066256a59ad290b3725193955e3c48a6"
}
Frame {
msec: 560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "6709f77cbcde82886d1c5a07f06b55a5"
}
Frame {
msec: 576
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "da0028083048837b4756a2d3ff468378"
}
Frame {
msec: 592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "5f265351bed34357d603794d868dbcbc"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "3b8030849229e90b69842219e8b2d3f1"
}
Frame {
msec: 624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "0b08356d9b00313b2d892175dd93095a"
}
Frame {
msec: 640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "4780555b277d65e3e4c0c60817b63eb4"
+ }
+ Frame {
+ msec: 656
+ hash: "6b31c8f0569d01d97a371423a0f379c0"
}
Key {
type: 7
@@ -181,67 +201,47 @@ VisualTest {
count: 1
}
Frame {
- msec: 656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
msec: 672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "e9a5695636f7957d33f1c902a37a605d"
}
Frame {
msec: 688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "27a783cd4ef5caab382721a98f7966da"
+ }
+ Frame {
+ msec: 704
+ hash: "c50598c0a5f8d501fd3ac9cddecee506"
+ }
+ Frame {
+ msec: 720
+ hash: "2a2d0e202bc3bf7991409391a2ce2934"
}
Key {
type: 6
- key: 16777236
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
- msec: 704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
msec: 736
- hash: "48969edab07b942480d93ac2d383ca24"
+ hash: "2d97b8503c739b210615971ad08c2714"
}
Frame {
msec: 752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "f27fd7f1d8c6dfb7393ab0d39ed5cd02"
}
Frame {
msec: 768
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
+ hash: "32d256543e3e1ba722860e5143af9f09"
}
Frame {
msec: 784
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 800
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 816
- hash: "c464d501e3935ec0f53eb780bd1a8289"
+ hash: "9123b724613ef4d3d8431afde6e9eb6b"
}
Key {
type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Key {
- type: 6
key: 16777234
modifiers: 0
text: ""
@@ -249,28 +249,44 @@ VisualTest {
count: 1
}
Frame {
+ msec: 800
+ hash: "be5249a7effc94ec2be3d6053eba7b45"
+ }
+ Frame {
+ msec: 816
+ hash: "57f2c119c9eca3d1e4acd2f775af5207"
+ }
+ Frame {
msec: 832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "23b79a2630448e99f27a657fd9789354"
}
Frame {
msec: 848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "c8faab137cbc014aef5e3212889d00b8"
}
Frame {
msec: 864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "c9616f6fde5d6a8ecf346ece9952f09b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "11a861ca71d789e3d97d599608a793be"
}
Frame {
msec: 896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "5a6c57df0c33b83985aeb194f291ad6c"
}
Frame {
msec: 912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "2c047359db6946cb740462b0d6c695be"
}
Key {
type: 7
@@ -282,11 +298,11 @@ VisualTest {
}
Frame {
msec: 928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "d0bb54caf661be021be8fe2691de24e8"
}
Frame {
msec: 944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "80f0a60239f4d81b18b9cb3e80faf346"
}
Frame {
msec: 960
@@ -294,207 +310,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Key {
- type: 6
- key: 16777248
+ type: 7
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
- Key {
- type: 6
- key: 16777249
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ Frame {
+ msec: 1056
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "5f6cc0c97e4748aeeaa4a00c8a8c8928"
}
Frame {
msec: 1088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "b1d71160d9a8a8edeb4cf7e00df36cfc"
}
Frame {
msec: 1104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "5bfd4269145cc0962e0fa9c294e8f5aa"
}
Frame {
msec: 1120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "4e22c95802d83f0099017c6be9d93214"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "0f31d8f4867af7c2f4fb8e86aa077afd"
}
Frame {
msec: 1152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "21a552133320008a4d4f77752a3cfb55"
}
Frame {
msec: 1168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "3a30a4a785de21da0ff939e303202a81"
}
Frame {
msec: 1184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "b0e3ed2468538aacec354cb96d90c362"
}
Frame {
msec: 1200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "56bf6e3fe47e52046b443481fc17a3ec"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "ce80807cde9b902ebf33281fce50d9fb"
}
Frame {
msec: 1232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "ed67b18b5f7b90d3bcd9f662e70dc7b8"
}
Frame {
msec: 1248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "930950ce5c6b12da47eea1b92d5176eb"
}
Frame {
msec: 1264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "5a2eeca0f1533d323cc4d7ffbb7ad6aa"
}
Frame {
msec: 1280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "3f7f3ef2d4c1353dfe7027930505f4fd"
}
Frame {
msec: 1296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "1a3a781ac5a1e90a4415944e0c54ea4e"
}
- Frame {
- msec: 1312
- hash: "4a646d76b706698a02cead560b1f8d57"
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
- msec: 1328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ msec: 1312
+ hash: "d11dae0dd461fc82a73bf319905320d4"
}
Key {
type: 6
- key: 16777234
- modifiers: 100663296
+ key: 16777248
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 1328
+ hash: "00957049ea51866138cfc33451f12e17"
+ }
+ Frame {
msec: 1344
- hash: "12b5e016bad990d1f2bf427ee8e3e6d9"
+ hash: "386847af9b173db7ef1554d2c85c748e"
}
Frame {
msec: 1360
- hash: "66a2ba3f9e005cd58aa50cfa0000cd15"
+ hash: "4b715060d29d6228a40217bc769fc140"
}
Frame {
msec: 1376
- hash: "a2e9e42e09dadbd0791f52bb96e0e0dc"
+ hash: "e58a9a3623afa08819351c22435ba03f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "ac68396566ea85a157e944e601dd8d18"
+ hash: "6378e3faf5578818fc282de2a077da59"
}
Frame {
msec: 1408
- hash: "b9bfdebec8dd1a93de7ef2768b2542ba"
+ hash: "07efb3687d29e65680e1cc831762348f"
}
Frame {
msec: 1424
- hash: "2e0a4b960803770acb34ef56ccf2be35"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "5292e7c95b3c5b11e4088b5010984257"
}
Frame {
msec: 1440
- hash: "df1643f0f8b7aa2dc080958822aeb3d0"
+ hash: "ffe95603f5fe9d63abb3b77c399c3b11"
}
Frame {
msec: 1456
- hash: "15bb91195adfaf83e88fd93e41ff3e17"
+ hash: "ad7cb73893c27b69704c5b821738a3c1"
}
Frame {
msec: 1472
- hash: "dc0476c27bd7eef3a59637df9a3fecd8"
+ hash: "e25971a61888ded93b651891ec9661b0"
}
Frame {
msec: 1488
- hash: "a271f69e9dc6d1e0362c3e10760895df"
+ hash: "80f90b3623bf34544438dd00abee7037"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "7fe66bcc6bada354b4dd7baf8c977740"
+ hash: "797dd70572e532d4acb374230b2c8efe"
}
Frame {
msec: 1520
- hash: "6b502dbd5ac8ff010df326cb9b593dce"
+ hash: "0673db1283d874a5711520f272572cf8"
}
Frame {
msec: 1536
- hash: "a9dd21649a95a6a6e8daea91bc6e2a5f"
+ hash: "fbc8434912f08a93b5f884258bc754b7"
}
Frame {
msec: 1552
- hash: "374686590eaa02b7b436caa40cc0b0a0"
+ hash: "e41ebaf8f2114a6e8f38f731ea164e8a"
}
Frame {
msec: 1568
- hash: "09ac3c5d413b1f650407eaa971aade81"
+ hash: "d14bdb5bf1b4756166ecf6f3255bf3cc"
}
Frame {
msec: 1584
- hash: "39f84e04f1ae58600591c0de40558d2c"
+ hash: "5fb04569aa0e530b898a3c11725b947e"
}
Frame {
msec: 1600
- hash: "0336ea1799835af2185c361e221a9661"
+ hash: "03d24457fae160864fec985765f6d8d1"
}
Frame {
msec: 1616
- hash: "8c7ab13e499d7f31107cf0f899334259"
+ hash: "56dad740bb9032d113a0dacbe986c9c0"
}
Frame {
msec: 1632
- hash: "bad5899324e52c9e6eadb72f3e7c2150"
+ hash: "70d9acda83aa7db59780cf56f03e38ec"
}
Frame {
msec: 1648
- hash: "4b78f451ecb22cfbed9f5998d61018eb"
+ hash: "a272e39bc1af0f4d1bab9c3f64e746e2"
+ }
+ Frame {
+ msec: 1664
+ hash: "cf0379de604b9bb33b4456cb89e09afd"
+ }
+ Frame {
+ msec: 1680
+ hash: "332e7a10d75c0d21a24fc8be34269629"
}
Key {
type: 6
@@ -505,76 +561,84 @@ VisualTest {
count: 1
}
Frame {
- msec: 1664
- hash: "6c913bc712eee18947a43dd1c0a6516b"
- }
- Frame {
- msec: 1680
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
- }
- Frame {
msec: 1696
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "c07eb71d90e74393205338bc946c1e43"
}
Frame {
msec: 1712
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "984477de7c103ff3aebc2634785dce09"
}
Frame {
msec: 1728
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "958f79dd7c57387042746df2ca01779e"
}
Frame {
msec: 1744
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "53bb3f0718d6333ca40dc279b6300b85"
}
Frame {
msec: 1760
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "c16877cb99997cc47f1fff5af1d22bd7"
}
Frame {
msec: 1776
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "dea3e1eb6c72f0d37398e3e301a23c19"
}
Frame {
msec: 1792
- hash: "7411784774fdc3b324644395f7beb013"
+ hash: "6bb7918f0794e6a7cbdb8847cdcf6e35"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1808
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "6858cd874abb1ed2fec34862f76044fa"
}
Frame {
msec: 1824
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "47b546ea0d5b1d4573991d4738c37f4d"
}
Frame {
msec: 1840
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "6c9e636dee2bb5f2a72a2c08ab9fb970"
}
Frame {
msec: 1856
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "42c2b2a7f41c88ae7bb19403e2460a17"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1872
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "80b7986af693b89dc4d4f9533dae85cb"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
}
Frame {
msec: 1904
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 1920
@@ -582,527 +646,623 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 1952
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 1968
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
- }
- Key {
- type: 7
- key: 16777249
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 2080
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 2096
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 2112
- hash: "5a647962e016d15daa417d88524d6061"
+ hash: "2cd264339edc0338fc610e0d766425cc"
}
Frame {
msec: 2128
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 2144
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 2176
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 2192
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 2208
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 2224
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 2240
- hash: "7411784774fdc3b324644395f7beb013"
- }
- Frame {
- msec: 2256
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Key {
type: 7
- key: 16777248
- modifiers: 33554432
+ key: 16777236
+ modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2256
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
+ }
+ Frame {
msec: 2272
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 2288
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 2304
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 2320
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 2336
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 2352
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Key {
type: 6
- key: 16777236
+ key: 16777249
modifiers: 0
text: ""
autorep: false
count: 1
}
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 2368
- hash: "6c913bc712eee18947a43dd1c0a6516b"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 2384
- hash: "2c518a32ca3b5ca924709cc6990fb039"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 2400
- hash: "7f40db00bd3e6d0b39454eefa1403f44"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 2416
- hash: "98db32e0d1812e9584105dc4dbceff80"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 2432
- hash: "c2150a67391bb574141c16cb011847bf"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2448
- hash: "f9ea21d894fa2dace4d43ce99a580b90"
+ hash: "0e1e9a2cf891cf65f30ead539becf408"
}
Frame {
msec: 2464
- hash: "2f580c3244499fc6ecd2121693f463fd"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "46602c03632f6a47c9d523e1ea61baaf"
}
Frame {
msec: 2480
- hash: "2f7f421d3e6a895a9efa6b0e8feb81c4"
+ hash: "5c758ee2aa3f92b6506533f6d615bc20"
}
Frame {
msec: 2496
- hash: "35a18447f319431ed0a645d05a1d03d1"
+ hash: "25edbdaae72e03426c9dfa75c08c33e6"
}
Frame {
msec: 2512
- hash: "54e36fb4014be554d13709b48b9bdce7"
+ hash: "a4bd11f15594932b996a069f3098c596"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2528
- hash: "dbe3456536a729b268850a6ee5d1fb47"
+ hash: "e4090b920ce2456149155f61fb586a6f"
}
Frame {
msec: 2544
- hash: "4c148434cf3868db5dc98f426d9fb913"
+ hash: "ce71f4dc76f90fa300d715ed77e8a5a8"
}
Frame {
msec: 2560
- hash: "2eb6da3ebfd531037523347603a805e2"
+ hash: "59414694d42a3942c4832fd7a3e93145"
}
Frame {
msec: 2576
- hash: "fefbb2f4671f8a36f9d2207ced8c0bfb"
+ hash: "1213fc9d9c1d58ceefc213a59f970679"
}
Frame {
msec: 2592
- hash: "1ab596339afc1f96136ee69c4b7688e1"
+ hash: "bbfa8471ab3fa5fc146946a6c8e0ce86"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2608
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
+ hash: "22a49c3b5234b4b7a2b935d58027f834"
}
Frame {
msec: 2624
- hash: "a7dccada1080487cab2d0a916676c5cb"
+ hash: "7b81c14d5350fb55775c1cb0f3945c46"
}
Frame {
msec: 2640
- hash: "ac5939eb4379394fab829b307cbfe7ec"
+ hash: "8ebf266de0df228e47cc6e5a8758a6ea"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2656
- hash: "9329d353c678d2bc61d08f63029d1b9b"
+ hash: "6344eb333dc28672f863bcb7ca5d6cfe"
}
Frame {
msec: 2672
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
+ hash: "8efc9b4a6c27b8918cba629a5a1c0f24"
}
Frame {
msec: 2688
- hash: "e2eb18af82c85ea78ba438163e922df3"
+ hash: "b586c24ce0c04391a9095c0ac4b7a05a"
}
Frame {
msec: 2704
- hash: "91b2695e4915238ae8610a64e279b0f4"
+ hash: "191413fe51a6887ae92c135252fdeeae"
}
Frame {
msec: 2720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 2736
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 2752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "fc0b37abf12827af41e7037eab8ba5c8"
}
Key {
type: 6
key: 16777234
- modifiers: 0
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2736
+ hash: "5efe28d02b93e094192d7fd6fe753acd"
+ }
+ Frame {
+ msec: 2752
+ hash: "dadc1f7b14fbf9f8a174821c4197da46"
+ }
+ Frame {
msec: 2768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "124deac57a3eeaef4cb3c0c802bacc05"
}
Frame {
msec: 2784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "e022a6d66a7b37d72885a7a7f6919433"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "5faa6543469753948b1636351d044329"
}
Frame {
msec: 2816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "a7dcf5a0b9bb00105eed173b498cb95c"
}
Frame {
msec: 2832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "29ac83d169af2c74ffd134d771c88718"
}
Frame {
msec: 2848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "0a04648fdc90ec86fb55ad3a165573c4"
}
Frame {
msec: 2864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "d699c713ba939612f1e552e48db19b18"
}
Frame {
msec: 2880
image: "cursorDelegate.2.png"
}
- Key {
- type: 7
- key: 16777234
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
Frame {
msec: 2896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "adf564652cfae394869755ff2fe5b534"
}
Frame {
msec: 2912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "d1453f663217ee45a8462b7d077d7f6a"
}
Frame {
msec: 2928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "9f1461d63ccc49f83e58245ba75685e1"
}
Frame {
msec: 2944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "8cece1543e7e9190eefaa92c2024cbd1"
}
Frame {
msec: 2960
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 3152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 3184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 3200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 3216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 3232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "29db710e47b13f26e2bf92568d52bf52"
}
Frame {
msec: 3248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 3280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 3296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 3312
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 3328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 3344
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 3360
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3376
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 3392
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 3408
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 3424
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 3440
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 3456
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 3472
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 3488
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 3504
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "b686f4013f45885ab794aba9ff491286"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3520
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 3536
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "2bb72f191201572308e461021872fb4c"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3552
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 3568
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 3584
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 3600
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 3616
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 3632
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 3648
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 3664
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 3680
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 3696
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 3712
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 3728
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 3744
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 3760
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 3776
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 3792
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 3808
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 3824
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 3840
@@ -1110,271 +1270,239 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 3872
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 3888
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 3904
- hash: "aa329519eba4dad9589bff095528c535"
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 3920
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 3936
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 3952
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3968
- hash: "82cb92d7940d13deee97e4ccda9210fb"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4064
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 4080
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 4096
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 4112
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 4128
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 4144
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 4160
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 4176
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 4192
- hash: "367391b2a124e2c818510567d0884d18"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 4208
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 4224
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 4240
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 4256
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 4272
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 4288
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 4304
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 4320
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 4336
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 4352
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 4368
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 4384
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 4400
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 4416
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 4432
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 4448
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 4464
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 4480
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 4496
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "2bb72f191201572308e461021872fb4c"
}
Frame {
msec: 4512
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 4528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "b686f4013f45885ab794aba9ff491286"
}
Frame {
msec: 4544
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 4560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 4576
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Key {
- type: 6
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 4592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 4608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 4624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 4640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 4656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 4672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
}
Frame {
msec: 4688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 4704
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 4720
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 4736
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 4752
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 4768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 4784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
}
Frame {
msec: 4800
@@ -1382,1998 +1510,42 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 4832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 4848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 4864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 4880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
}
Frame {
msec: 4896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 4912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 4928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 4944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 4960
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
- }
- Frame {
- msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
- }
- Frame {
- msec: 5088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
- }
- Frame {
- msec: 5104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
- }
- Frame {
- msec: 5120
- hash: "4f6dbc7b249c37390518cc263832b587"
- }
- Frame {
- msec: 5136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
- }
- Frame {
- msec: 5152
- hash: "34bc703c915b49b0450ece1d18306df8"
- }
- Frame {
- msec: 5168
- hash: "46fed264c233490b477e3a7c22183e18"
- }
- Frame {
- msec: 5184
- hash: "d94054222fd37a350bd8abd592a332e3"
- }
- Frame {
- msec: 5200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
- }
- Frame {
- msec: 5216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
- }
- Frame {
- msec: 5232
- hash: "0f500339c81ca3621d13910017b84b7b"
- }
- Frame {
- msec: 5248
- hash: "702864de569e6a5648ee174d5ef891f8"
- }
- Frame {
- msec: 5264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
- }
- Frame {
- msec: 5280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
- }
- Frame {
- msec: 5296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
- }
- Frame {
- msec: 5312
- hash: "4a646d76b706698a02cead560b1f8d57"
- }
- Frame {
- msec: 5328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
- }
- Frame {
- msec: 5344
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
- }
- Frame {
- msec: 5360
- hash: "788d8962f311adf57a3acc876b0e8804"
- }
- Frame {
- msec: 5376
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
- msec: 5392
- hash: "a2ea272b45d8de225826d9381015ff2e"
- }
- Frame {
- msec: 5408
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Frame {
- msec: 5424
- hash: "4e875ba8703b690a17e445f2b3810435"
- }
- Frame {
- msec: 5440
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
- }
- Frame {
- msec: 5456
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Frame {
- msec: 5472
- hash: "d23bdd94019477d8378cde580d8765ad"
- }
- Frame {
- msec: 5488
- hash: "6032aada2c48092000ecb93e52656414"
- }
- Frame {
- msec: 5504
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
- msec: 5520
- hash: "3af60972e7d5d4320a549e5df52a1228"
- }
- Frame {
- msec: 5536
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
- }
- Frame {
- msec: 5552
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
- }
- Frame {
- msec: 5568
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
- }
- Frame {
- msec: 5584
- hash: "bdfb42dc3879099e402784238c2cdddb"
- }
- Frame {
- msec: 5600
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
- }
- Frame {
- msec: 5616
- hash: "8159bda651d95a320ac09aa6feb377a1"
- }
- Frame {
- msec: 5632
- hash: "ceda37af96bd02baae218d3bfaed93f7"
- }
- Frame {
- msec: 5648
- hash: "4b81757a105aa7c5ac6148455eea66c3"
- }
- Frame {
- msec: 5664
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
- }
- Frame {
- msec: 5680
- hash: "9b174cd9a87ff193ce646408946b310c"
- }
- Frame {
- msec: 5696
- hash: "89fa590b47ee77021dedf7938439ce69"
- }
- Frame {
- msec: 5712
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
- }
- Frame {
- msec: 5728
- hash: "c6de6b9203673c77427ab84ce86daaf5"
- }
- Frame {
- msec: 5744
- hash: "198f8e912c19debd51f837627d1171e9"
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Frame {
- msec: 5776
- hash: "254942e12b8a31420d2243b7e2529ae8"
- }
- Frame {
- msec: 5792
- hash: "ebf121910a5318c284f8e964d63aed40"
- }
- Frame {
- msec: 5808
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
- }
- Frame {
- msec: 5824
- hash: "4a6596da390380dbafc1cdaceca1101e"
- }
- Frame {
- msec: 5840
- hash: "367391b2a124e2c818510567d0884d18"
- }
- Frame {
- msec: 5856
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
- }
- Frame {
- msec: 5872
- hash: "52350ac5d10f8fe7571d12193b861d3f"
- }
- Frame {
- msec: 5888
- hash: "f286a35d7f4a022315f69a5db72da388"
- }
- Frame {
- msec: 5904
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Frame {
- msec: 5920
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
- }
- Frame {
- msec: 5936
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
- }
- Frame {
- msec: 5952
- hash: "3655b992097b433071ec9dd69e086c70"
- }
- Frame {
- msec: 5968
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Frame {
- msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6064
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Frame {
- msec: 6080
- hash: "3655b992097b433071ec9dd69e086c70"
- }
- Frame {
- msec: 6096
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
- }
- Frame {
- msec: 6112
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
- }
- Frame {
- msec: 6128
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Frame {
- msec: 6144
- hash: "f286a35d7f4a022315f69a5db72da388"
- }
- Frame {
- msec: 6160
- hash: "52350ac5d10f8fe7571d12193b861d3f"
- }
- Frame {
- msec: 6176
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
- }
- Frame {
- msec: 6192
- hash: "367391b2a124e2c818510567d0884d18"
- }
- Frame {
- msec: 6208
- hash: "4a6596da390380dbafc1cdaceca1101e"
- }
- Frame {
- msec: 6224
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
- }
- Frame {
- msec: 6240
- hash: "ebf121910a5318c284f8e964d63aed40"
- }
- Frame {
- msec: 6256
- hash: "254942e12b8a31420d2243b7e2529ae8"
- }
- Frame {
- msec: 6272
- hash: "3b380dcb6815698241f3dcccb52785c2"
- }
- Frame {
- msec: 6288
- hash: "198f8e912c19debd51f837627d1171e9"
- }
- Frame {
- msec: 6304
- hash: "c6de6b9203673c77427ab84ce86daaf5"
- }
- Frame {
- msec: 6320
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
- }
- Frame {
- msec: 6336
- hash: "89fa590b47ee77021dedf7938439ce69"
- }
- Frame {
- msec: 6352
- hash: "9b174cd9a87ff193ce646408946b310c"
- }
- Frame {
- msec: 6368
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
- }
- Frame {
- msec: 6384
- hash: "4b81757a105aa7c5ac6148455eea66c3"
- }
- Frame {
- msec: 6400
- hash: "ceda37af96bd02baae218d3bfaed93f7"
- }
- Frame {
- msec: 6416
- hash: "8159bda651d95a320ac09aa6feb377a1"
- }
- Frame {
- msec: 6432
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
- }
- Frame {
- msec: 6448
- hash: "bdfb42dc3879099e402784238c2cdddb"
- }
- Frame {
- msec: 6464
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
- }
- Frame {
- msec: 6480
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
- }
- Frame {
- msec: 6496
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
- }
- Frame {
- msec: 6512
- hash: "3af60972e7d5d4320a549e5df52a1228"
- }
- Frame {
- msec: 6528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
- msec: 6544
- hash: "6032aada2c48092000ecb93e52656414"
- }
- Frame {
- msec: 6560
- hash: "d23bdd94019477d8378cde580d8765ad"
- }
- Frame {
- msec: 6576
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Frame {
- msec: 6592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
- }
- Frame {
- msec: 6608
- hash: "4e875ba8703b690a17e445f2b3810435"
- }
- Frame {
- msec: 6624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Frame {
- msec: 6640
- hash: "a2ea272b45d8de225826d9381015ff2e"
- }
- Frame {
- msec: 6656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
- msec: 6672
- hash: "788d8962f311adf57a3acc876b0e8804"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 271; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 270; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 269; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 268; y: 107
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6752
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6784
- hash: "702864de569e6a5648ee174d5ef891f8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 265; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6800
- hash: "0f500339c81ca3621d13910017b84b7b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 263; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 261; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 259; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6848
- hash: "58693aa1a3616310b7ae1e529c4c461a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 250; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 243; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6864
- hash: "96afccd7ec697c9c10840f0effaa448d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 235; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6880
- hash: "a00d49e2a9069b1be41f95f6ff4c0312"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6896
- hash: "a0ff4b93291fc12054d3989a20335a87"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6912
- hash: "a86e1347bb25489547514955762d92d3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6928
- hash: "e5cba3c1e41e38117508c84e894beb11"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6944
- hash: "2560f53b8ac0a84fef895dbb8f0e393e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 181; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 172; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6960
- hash: "c1b8bfc008319b793b6bd9345d34ccf5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 123; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 118; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7072
- hash: "a9f2804ac7918971f237c4cfa6339c24"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 108; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7088
- hash: "bc9c96855f048cb6c86d480e501322ab"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7104
- hash: "706730602364bfb4d0193d1728a6d350"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7120
- hash: "df80fe3e3ba35ab3fafca929b9101e13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7136
- hash: "aa8fa1baf61919004a4f14948826882e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7152
- hash: "1829dfa3615d6ae430ba81a2df9a9e15"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7168
- hash: "c4ea5c767192bbd3bfac58d07594016a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7184
- hash: "319aede65b3473f28a4ca62a524e4a76"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7200
- hash: "e1de653161e3348e083267c9082bc0f0"
- }
- Frame {
- msec: 7216
- hash: "de5f2d5147c600d2cb44072801c2338e"
- }
- Frame {
- msec: 7232
- hash: "6db41d704d2e28f36b206bdb317ee361"
- }
- Frame {
- msec: 7248
- hash: "a500b87efea241cdf8adf97ae86e10c3"
- }
- Frame {
- msec: 7264
- hash: "86c4eb0164a5b57eb22de4c9d58345f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7280
- hash: "2dbb1e3a1374b7c4aecd5a891be4573d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7296
- hash: "07bcafdf5ca28a1416a20ed375ec3ea6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "e79def41bbf7e544d64cf19d74524d3a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "20aff98618d16c00dc9b76035e9523f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "12b5e016bad990d1f2bf427ee8e3e6d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "66a2ba3f9e005cd58aa50cfa0000cd15"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "a2e9e42e09dadbd0791f52bb96e0e0dc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "ac68396566ea85a157e944e601dd8d18"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 113; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 117; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "b9bfdebec8dd1a93de7ef2768b2542ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "2e0a4b960803770acb34ef56ccf2be35"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "df1643f0f8b7aa2dc080958822aeb3d0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "af8ce877d953727d37fd6f7e4962f45a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "b9de04c0d7532d67404a5a773d9fab99"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "7904312a7efe0b545070c5a5615011df"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "0069a8f088c83c6716bac15567a5b38d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "8c17c78d663097e275ed2f80d6479caf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "9e8781569e07fca7def229b76189082d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 165; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "8dba2f259740d869bfa20205d2e14433"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "4e7ad066aadbad3f71a08962ba1379c0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "a5d1554a6fb311239acc077f01adc597"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "e91b45c430f7e10c2205af620350ddb6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "6c731f4dbdec441cd36b1e9727758d73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "31634e757bdec45feb1f021e35746d65"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 193; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "846dcb42fa85719223eb19f7af3d0630"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "a5826c5d7d1b9161cc7fb76f59021fdd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 211; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "bdfb9b949489744bc77905249eb647f9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "307d4fb47604c00e213f8d9616e0da13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "74201a80a9032cb18b0c9e26bb67363f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "38ca918199552a525fb7f3a3773761d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "d64c06c25229b3b64b779ca1bef7d2cb"
- }
- Frame {
- msec: 7776
- hash: "4ba0117db1ff431de20c06c79866d509"
- }
- Frame {
- msec: 7792
- hash: "ca56899ded0e5ea361aac24493793f58"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "ebce1d3b4d088278b6f36dac444c7ca6"
- }
- Frame {
- msec: 7824
- hash: "16c52065169bffc4648eda0226dba13a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "7a5a6a02f57545d9f2336ff18dd118d6"
- }
- Frame {
- msec: 7856
- hash: "328c8133c68fc2e86dc2193d1bee3259"
- }
- Frame {
- msec: 7872
- hash: "fcad1d2819e3cede6081b4dfbb5a4a65"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "85ff2968ba06443f300c9c0ef36c7054"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "871025c33fa769a790fc460a95b183ec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "5b96f2673e0ccd2b198b9f99c65b4b12"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7936
- hash: "5fc6f30a2dd019c4f2af056b51cfaa27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7952
- hash: "fc6bf3bcde1f89f0bff40e3e019aed33"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7968
- hash: "703beec7b035080146131936da8c0fb3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8064
- hash: "703beec7b035080146131936da8c0fb3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "fc6bf3bcde1f89f0bff40e3e019aed33"
- }
- Frame {
- msec: 8096
- hash: "5fc6f30a2dd019c4f2af056b51cfaa27"
- }
- Frame {
- msec: 8112
- hash: "5b96f2673e0ccd2b198b9f99c65b4b12"
- }
- Frame {
- msec: 8128
- hash: "871025c33fa769a790fc460a95b183ec"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8144
- hash: "85ff2968ba06443f300c9c0ef36c7054"
- }
- Frame {
- msec: 8160
- hash: "fcad1d2819e3cede6081b4dfbb5a4a65"
- }
- Frame {
- msec: 8176
- hash: "328c8133c68fc2e86dc2193d1bee3259"
- }
- Frame {
- msec: 8192
- hash: "7a5a6a02f57545d9f2336ff18dd118d6"
- }
- Frame {
- msec: 8208
- hash: "16c52065169bffc4648eda0226dba13a"
- }
- Frame {
- msec: 8224
- hash: "ebce1d3b4d088278b6f36dac444c7ca6"
- }
- Frame {
- msec: 8240
- hash: "ca56899ded0e5ea361aac24493793f58"
- }
- Frame {
- msec: 8256
- hash: "4ba0117db1ff431de20c06c79866d509"
- }
- Frame {
- msec: 8272
- hash: "d64c06c25229b3b64b779ca1bef7d2cb"
- }
- Frame {
- msec: 8288
- hash: "38ca918199552a525fb7f3a3773761d9"
- }
- Frame {
- msec: 8304
- hash: "74201a80a9032cb18b0c9e26bb67363f"
- }
- Frame {
- msec: 8320
- hash: "307d4fb47604c00e213f8d9616e0da13"
- }
- Frame {
- msec: 8336
- hash: "9ad660f83ed62b964b676106f8aa7114"
- }
- Frame {
- msec: 8352
- hash: "457fc0df515f9813e98a6a86f4ab5231"
- }
- Frame {
- msec: 8368
- hash: "372cbc6ad4edc85319743627ced05671"
- }
- Frame {
- msec: 8384
- hash: "4e08beac6ee40acaa4de6963522d63d0"
- }
- Frame {
- msec: 8400
- hash: "5e790c2199a5e95fc17f8c0b49809cc9"
- }
- Frame {
- msec: 8416
- hash: "e36310e1866d4a95bac60084fa4aa2c1"
- }
- Frame {
- msec: 8432
- hash: "b7182b171316cc2db4de2b23de93dc41"
- }
- Frame {
- msec: 8448
- hash: "6aaf7f8e6e238973dfd4030eb146198b"
- }
- Frame {
- msec: 8464
- hash: "901ead3167e602dfe043c56c6c805d54"
- }
- Frame {
- msec: 8480
- hash: "5a97542680475b1382ad5b7c3f6fa96a"
- }
- Frame {
- msec: 8496
- hash: "fb34d93127f3c3ad0c7bacce0200753b"
- }
- Frame {
- msec: 8512
- hash: "993c97dc85e83e241538356e317b7767"
- }
- Frame {
- msec: 8528
- hash: "fb11a9edb3a613be5cb6949c76c5c715"
- }
- Frame {
- msec: 8544
- hash: "e68b7461f94adeaf330f67d36d0d3b3e"
- }
- Frame {
- msec: 8560
- hash: "7ed043cc027fdb467bd16847187cd48d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 277; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8576
- hash: "fefbb2f4671f8a36f9d2207ced8c0bfb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 277; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8592
- hash: "1ab596339afc1f96136ee69c4b7688e1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8608
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8624
- hash: "a7dccada1080487cab2d0a916676c5cb"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "9329d353c678d2bc61d08f63029d1b9b"
- }
- Frame {
- msec: 8672
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
- }
- Frame {
- msec: 8688
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Frame {
- msec: 8704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 8720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 8736
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 8752
- hash: "ecfd9d6d5873001f0c67806544a14983"
- }
- Frame {
- msec: 8768
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
- }
- Frame {
- msec: 8784
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 8800
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 8816
- hash: "c464d501e3935ec0f53eb780bd1a8289"
- }
- Frame {
- msec: 8832
- hash: "2be4fd986de19f6f76dfddec75b26804"
- }
- Frame {
- msec: 8848
- hash: "a1280e9fb86ca96b2340bb70aa774806"
- }
- Frame {
- msec: 8864
- hash: "cce4c17a387893478bcfa547f7561aba"
- }
- Frame {
- msec: 8880
- hash: "7094db3e04895d8d7f5f58caf0658592"
- }
- Frame {
- msec: 8896
- hash: "edb1f644757f9ba0a39549d77141c280"
- }
- Frame {
- msec: 8912
- hash: "cd381e847ecfce2db111bdf94a437cbc"
- }
- Frame {
- msec: 8928
- hash: "6a089603b641b683a744b88f2ebe82d1"
- }
- Frame {
- msec: 8944
- hash: "8c0e47f7c87a1a11cd733a453b31c780"
- }
- Frame {
- msec: 8960
- hash: "b53c892d62e787eb2565820d79739de6"
- }
- Frame {
- msec: 8976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9072
- hash: "b53c892d62e787eb2565820d79739de6"
- }
- Frame {
- msec: 9088
- hash: "8c0e47f7c87a1a11cd733a453b31c780"
- }
- Frame {
- msec: 9104
- hash: "6a089603b641b683a744b88f2ebe82d1"
- }
- Frame {
- msec: 9120
- hash: "cd381e847ecfce2db111bdf94a437cbc"
- }
- Frame {
- msec: 9136
- hash: "edb1f644757f9ba0a39549d77141c280"
- }
- Frame {
- msec: 9152
- hash: "7094db3e04895d8d7f5f58caf0658592"
- }
- Frame {
- msec: 9168
- hash: "cce4c17a387893478bcfa547f7561aba"
- }
- Frame {
- msec: 9184
- hash: "a1280e9fb86ca96b2340bb70aa774806"
- }
- Frame {
- msec: 9200
- hash: "2be4fd986de19f6f76dfddec75b26804"
- }
- Frame {
- msec: 9216
- hash: "c464d501e3935ec0f53eb780bd1a8289"
- }
- Frame {
- msec: 9232
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 9248
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 9264
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
- }
- Frame {
- msec: 9280
- hash: "ecfd9d6d5873001f0c67806544a14983"
- }
- Frame {
- msec: 9296
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 9312
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 9328
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 9344
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Frame {
- msec: 9360
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
- }
- Frame {
- msec: 9376
- hash: "9329d353c678d2bc61d08f63029d1b9b"
- }
- Frame {
- msec: 9392
- hash: "ac5939eb4379394fab829b307cbfe7ec"
- }
- Frame {
- msec: 9408
- hash: "a7dccada1080487cab2d0a916676c5cb"
- }
- Frame {
- msec: 9424
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
+ hash: "264f34128dfe563126b9f187c65df61e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
new file mode 100644
index 0000000000..57a1599c59
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
new file mode 100644
index 0000000000..d327d5b74b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
new file mode 100644
index 0000000000..c1e3dce7ef
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
new file mode 100644
index 0000000000..9a26f570d5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
@@ -0,0 +1,1043 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 32
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 48
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 64
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 80
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 96
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 112
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 128
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 144
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 160
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 176
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 192
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 208
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 224
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 240
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 256
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 272
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 288
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 304
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 320
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 336
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 352
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Key {
+ type: 6
+ key: 74
+ modifiers: 33554432
+ text: "4a"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 368
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 384
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 400
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 416
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 432
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 7
+ key: 74
+ modifiers: 33554432
+ text: "4a"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 464
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 480
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 496
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 512
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 528
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 560
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 576
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 592
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 608
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 624
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 640
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 656
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 672
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 688
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 704
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 720
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 736
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 752
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 768
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 784
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 800
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 816
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 832
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 848
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 880
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 896
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 928
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 944
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 960
+ image: "echoMode.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 992
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1008
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1024
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1040
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1056
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1072
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1088
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1104
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1120
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1136
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1152
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1168
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1184
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1200
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1216
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1232
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1248
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1264
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1280
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1312
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1328
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1344
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1360
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1376
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1392
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1408
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1424
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1440
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1456
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1472
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1488
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1520
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1536
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1552
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1584
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1600
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1616
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1632
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1648
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1664
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1680
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1696
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1712
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1728
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1760
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1776
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1792
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1808
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1824
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1840
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1856
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1872
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1888
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1904
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1920
+ image: "echoMode.1.png"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1936
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1952
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1968
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1984
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 2000
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 2016
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Frame {
+ msec: 2048
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Frame {
+ msec: 2080
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Key {
+ type: 6
+ key: 86
+ modifiers: 0
+ text: "76"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2096
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2112
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2128
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2144
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 86
+ modifiers: 0
+ text: "76"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2176
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2192
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2208
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2256
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2272
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2288
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2304
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2336
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 6
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2352
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2368
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2384
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2400
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2416
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2432
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Key {
+ type: 7
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2464
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2480
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2496
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2512
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2528
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2544
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2576
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2592
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2608
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2624
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2640
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2656
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2672
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2688
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2704
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2720
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2736
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2752
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2768
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2784
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2800
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2816
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2832
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2848
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2864
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2880
+ image: "echoMode.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2912
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2928
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2944
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2960
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2976
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2992
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3008
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3024
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3040
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3056
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml
new file mode 100644
index 0000000000..4c402eaf17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml
@@ -0,0 +1,107 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 32
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 48
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 64
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 80
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 96
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 112
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 128
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 144
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 160
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 176
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 192
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 208
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 224
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 240
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 256
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 272
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 288
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 304
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 320
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 336
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 352
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 368
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 384
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 400
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png
new file mode 100644
index 0000000000..5ab78c0ea4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png
new file mode 100644
index 0000000000..3cd1c11149
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png
new file mode 100644
index 0000000000..c0e738e193
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png
new file mode 100644
index 0000000000..a373ded9f9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png
new file mode 100644
index 0000000000..647984d82b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml
new file mode 100644
index 0000000000..6eb74eaf56
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml
@@ -0,0 +1,1551 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 32
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 48
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 64
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 80
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 96
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 112
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 128
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 144
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 160
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 176
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 192
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 208
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 224
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 240
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 256
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 272
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 288
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 304
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 320
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 336
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 352
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 368
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 384
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 400
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 416
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 432
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Frame {
+ msec: 448
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 464
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 480
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 496
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 512
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 528
+ hash: "87902d32dba1439e71ce5f57f514748e"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "cad95931a38718eb481a9175fdfec305"
+ }
+ Frame {
+ msec: 560
+ hash: "1dc99e5c7e4d2fa6b624b6df250b78fc"
+ }
+ Frame {
+ msec: 576
+ hash: "5d5739beb039a83bebb2c41489166edf"
+ }
+ Frame {
+ msec: 592
+ hash: "6320c9a1c0013f5aa6180992b934ca59"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 608
+ hash: "9d9837c1f3779e5dab0dfeb1d11fdea1"
+ }
+ Frame {
+ msec: 624
+ hash: "9d868112eaf70ce02ce93603278a565d"
+ }
+ Frame {
+ msec: 640
+ hash: "d2bccb3184d3bb42b91017410a8655b6"
+ }
+ Frame {
+ msec: 656
+ hash: "68f8be3e16637fd39a35f0cebb62b74a"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 672
+ hash: "04f5781b57ed9fee32d5ef80dc33f4ff"
+ }
+ Frame {
+ msec: 688
+ hash: "06cc2e24a848d441074de5ddff1c739a"
+ }
+ Frame {
+ msec: 704
+ hash: "94526186deb7248ac9c747ede15b106d"
+ }
+ Frame {
+ msec: 720
+ hash: "1ac130517df314f4f44b9bde2d3dcc53"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 736
+ hash: "270ecf4900e94d60599ded230633aa02"
+ }
+ Frame {
+ msec: 752
+ hash: "ef2093584cbce9182b99f297fcd2465d"
+ }
+ Frame {
+ msec: 768
+ hash: "c445cf5f56213a712585934681d8af55"
+ }
+ Frame {
+ msec: 784
+ hash: "9f0edb3871e015a549622e1b70d1b748"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "144c51d7aa47ea8cc8d79a97efa4b430"
+ }
+ Frame {
+ msec: 816
+ hash: "34f768a7c99dfb3c8f0e1fb1a08a37ac"
+ }
+ Frame {
+ msec: 832
+ hash: "4f3970c4ad02b69f96c11610494e8a50"
+ }
+ Frame {
+ msec: 848
+ hash: "815a1cf66f0c9eb47e244753eebb83ba"
+ }
+ Frame {
+ msec: 864
+ hash: "5db11f795c000b382fdc30726a711c65"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 880
+ hash: "67976ee172d0d55992c0e4734fbb7ccf"
+ }
+ Frame {
+ msec: 896
+ hash: "c764e4d5317acbbf5118a08565e5d5fd"
+ }
+ Frame {
+ msec: 912
+ hash: "a83f566d01b990e91f43bb63a58fb5b8"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 928
+ hash: "031282f352e01f23bc5f73bf8ce82c9a"
+ }
+ Frame {
+ msec: 944
+ hash: "1f3dc1d3ad0304376eac5d60d3c226ee"
+ }
+ Frame {
+ msec: 960
+ image: "cursorDelegate.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 992
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1008
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 1024
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 1040
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1056
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 1072
+ hash: "a2ad07326fafcb3012cdb869f39af466"
+ }
+ Frame {
+ msec: 1088
+ hash: "8622eb25a6da44926b5161bce213a483"
+ }
+ Frame {
+ msec: 1104
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
+ }
+ Frame {
+ msec: 1120
+ hash: "775cd79b012f79b773449a0ad8457149"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1136
+ hash: "2a4ed061e512c5afd11072c4b707f707"
+ }
+ Frame {
+ msec: 1152
+ hash: "c855df7b17811f25fd17e4fb108c02e1"
+ }
+ Frame {
+ msec: 1168
+ hash: "46c37d8e67ece5cae4f766acf50f3ca3"
+ }
+ Frame {
+ msec: 1184
+ hash: "95a70f14ce01aae61190080ed3d55c77"
+ }
+ Frame {
+ msec: 1200
+ hash: "87da182d1285f3613bb2e4673e701757"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1216
+ hash: "5b97f13f43e713a6fbe96bdca8969191"
+ }
+ Frame {
+ msec: 1232
+ hash: "4d003182e7b7b0a05413b80f82a0fc41"
+ }
+ Frame {
+ msec: 1248
+ hash: "dba09e038291a8dfdc61911d6b4b9bdf"
+ }
+ Frame {
+ msec: 1264
+ hash: "a2ae1e5cc6cd72fae70804e07df5a8a1"
+ }
+ Frame {
+ msec: 1280
+ hash: "f1c2a24b6f0ebcf98122e8db1cdcb66f"
+ }
+ Frame {
+ msec: 1296
+ hash: "142dade1639655132435ae260b7935a0"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "e80c0175d947bceef4bf53b60bf7eac0"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1328
+ hash: "de912cd8bd2fe762ec6b1ec819732507"
+ }
+ Frame {
+ msec: 1344
+ hash: "d3fa9dfab37ee26572d25bcbe8c66b72"
+ }
+ Frame {
+ msec: 1360
+ hash: "33bdb2817a2858ce430813d0774f0172"
+ }
+ Frame {
+ msec: 1376
+ hash: "4f10f0ffb6b1c87155eedd53af36c74f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "1b94be0de8412bd9380689895f290af7"
+ }
+ Frame {
+ msec: 1408
+ hash: "48b3a5e2b04c86a75f4b6595eb2c1f55"
+ }
+ Frame {
+ msec: 1424
+ hash: "d092fabd3dd51c718486e1e7dadaa0dc"
+ }
+ Frame {
+ msec: 1440
+ hash: "243359437235563f1a60b8eaf63365b6"
+ }
+ Frame {
+ msec: 1456
+ hash: "a986c8ed8ad2d8b6aab2a001906ba2ad"
+ }
+ Frame {
+ msec: 1472
+ hash: "da5e06dc481e9cb7d9159a84d0cc150a"
+ }
+ Frame {
+ msec: 1488
+ hash: "1d70a05fce3a05477e21d22b127ae96a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "913448213a07f6c8427c8e310d2026de"
+ }
+ Frame {
+ msec: 1520
+ hash: "51bef5ae52977a935b66af4baf1da4e6"
+ }
+ Frame {
+ msec: 1536
+ hash: "367bc25f868c23005d7fe903a9ea681b"
+ }
+ Frame {
+ msec: 1552
+ hash: "3c25181652e788d128ed571ca4fea0b1"
+ }
+ Frame {
+ msec: 1568
+ hash: "0218f939ff2b8c0bc22a537ed0f053f0"
+ }
+ Frame {
+ msec: 1584
+ hash: "a3b765a823b2b3811273a1be90850533"
+ }
+ Frame {
+ msec: 1600
+ hash: "2a42a29774eb4f962d299f8c2c213d55"
+ }
+ Frame {
+ msec: 1616
+ hash: "1f0ad54d0fe8fc27cadbaaeaa37364e0"
+ }
+ Frame {
+ msec: 1632
+ hash: "04d6028d1b1a1178e5bf774db8eef2c6"
+ }
+ Frame {
+ msec: 1648
+ hash: "c325e46e89e8df04e2c3d8bf111c5f09"
+ }
+ Frame {
+ msec: 1664
+ hash: "70e6223ce16a797e2c56e21ad74b188b"
+ }
+ Frame {
+ msec: 1680
+ hash: "0fb8762fd28564b84b83c17d749a3645"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1696
+ hash: "ef5d19b59792ea8822e2391fe0d91dbd"
+ }
+ Frame {
+ msec: 1712
+ hash: "70ad15030164be8afbb4ab22d1ae5f5f"
+ }
+ Frame {
+ msec: 1728
+ hash: "a5dfb8bd4b681e0d8d2c082821a2a976"
+ }
+ Frame {
+ msec: 1744
+ hash: "864781fbb8673b1e603df015f2d88601"
+ }
+ Frame {
+ msec: 1760
+ hash: "0bdb6a155cdd14f4dce9fde3c5116dde"
+ }
+ Frame {
+ msec: 1776
+ hash: "5421f521a9bdccc8478fcee97e0dbc99"
+ }
+ Frame {
+ msec: 1792
+ hash: "c5f29693dd017932767f37e2fb2f22f2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1808
+ hash: "b5e8abeaec33407e673f8021212528b1"
+ }
+ Frame {
+ msec: 1824
+ hash: "917c968e5ee8f0b25fdb175719d7dbfa"
+ }
+ Frame {
+ msec: 1840
+ hash: "56495c63676b9f73004e76e38d60567e"
+ }
+ Frame {
+ msec: 1856
+ hash: "86f1ccdd7ff408c5b141d79797eea1fa"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1872
+ hash: "9e9b32a9f71ab1aa4e87ddc323ccda03"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1888
+ hash: "360aef37452ce8f045659c227285cb82"
+ }
+ Frame {
+ msec: 1904
+ hash: "805949377c620fa4310aa4328eba1f23"
+ }
+ Frame {
+ msec: 1920
+ image: "cursorDelegate.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
+ }
+ Frame {
+ msec: 1952
+ hash: "835f6f723577071461e41da1fd2e990a"
+ }
+ Frame {
+ msec: 1968
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
+ }
+ Frame {
+ msec: 1984
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Frame {
+ msec: 2000
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Frame {
+ msec: 2016
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Frame {
+ msec: 2032
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2048
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
+ }
+ Frame {
+ msec: 2080
+ hash: "835f6f723577071461e41da1fd2e990a"
+ }
+ Frame {
+ msec: 2096
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
+ }
+ Frame {
+ msec: 2112
+ hash: "627206a252bd6fcbf57d9f1cde0506bb"
+ }
+ Frame {
+ msec: 2128
+ hash: "805949377c620fa4310aa4328eba1f23"
+ }
+ Frame {
+ msec: 2144
+ hash: "360aef37452ce8f045659c227285cb82"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
+ }
+ Frame {
+ msec: 2176
+ hash: "520a544fd92f17a14380803e253b396f"
+ }
+ Frame {
+ msec: 2192
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
+ }
+ Frame {
+ msec: 2208
+ hash: "e83642b0793f5a790efca65ccf20a720"
+ }
+ Frame {
+ msec: 2224
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
+ }
+ Frame {
+ msec: 2240
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
+ }
+ Frame {
+ msec: 2272
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
+ }
+ Frame {
+ msec: 2288
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
+ }
+ Frame {
+ msec: 2304
+ hash: "c0eb56c72311263d892ce65331547531"
+ }
+ Frame {
+ msec: 2320
+ hash: "585ad3efb7330de889b8cf56a51a0899"
+ }
+ Frame {
+ msec: 2336
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
+ }
+ Frame {
+ msec: 2352
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
+ }
+ Frame {
+ msec: 2384
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
+ }
+ Frame {
+ msec: 2400
+ hash: "062091bc7a5f3296c669614318b80fe7"
+ }
+ Frame {
+ msec: 2416
+ hash: "836f37fe92a46233640e0bd2c0932fea"
+ }
+ Frame {
+ msec: 2432
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "2d549b5fea734e47682415df1717e6a6"
+ }
+ Frame {
+ msec: 2464
+ hash: "824c5960260dd3ed7527709ebfb06d27"
+ }
+ Frame {
+ msec: 2480
+ hash: "258f034fe1e71f25a92e667e05f53e82"
+ }
+ Frame {
+ msec: 2496
+ hash: "c432e758e19c44d788cb38df6e4c6d69"
+ }
+ Frame {
+ msec: 2512
+ hash: "a1856592208f9a00385b13c44e1c4503"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2528
+ hash: "2b4d40a0555df0b86f52d13790185459"
+ }
+ Frame {
+ msec: 2544
+ hash: "b153143e6b16c47fa06663dc6b1034d6"
+ }
+ Frame {
+ msec: 2560
+ hash: "ac52236c5d73aeae7c0834df1e6bd84e"
+ }
+ Frame {
+ msec: 2576
+ hash: "136eeb348b0b96edc9aaf9fbea741973"
+ }
+ Frame {
+ msec: 2592
+ hash: "4f8a1dfa8906de2bcdfbf5c3b29fbf9b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2608
+ hash: "7dc9726df2d112b46f4d9dbe66d534c7"
+ }
+ Frame {
+ msec: 2624
+ hash: "f64086ca0e83fa8bb0fae28065260fdc"
+ }
+ Frame {
+ msec: 2640
+ hash: "5237dd2b79d71bbfa0a0d3963a7f42b7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2656
+ hash: "8dd435b577bb258979d33034885a8cd8"
+ }
+ Frame {
+ msec: 2672
+ hash: "2609c066b8f102b4189991bf7d01eaad"
+ }
+ Frame {
+ msec: 2688
+ hash: "986fab22391264d04df9a55b18aee645"
+ }
+ Frame {
+ msec: 2704
+ hash: "0256423680aa0843fe8ec84f5e68fc9b"
+ }
+ Frame {
+ msec: 2720
+ hash: "b822bdcad69aa868f48b2bbf2d62e297"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2736
+ hash: "14effed70ca60233be9b2f6d0a1b5e6c"
+ }
+ Frame {
+ msec: 2752
+ hash: "1abaf2c36a0fb9f04606c0e191d113cf"
+ }
+ Frame {
+ msec: 2768
+ hash: "cffb8ca29b0369d183d6461bf9e63fdf"
+ }
+ Frame {
+ msec: 2784
+ hash: "9378bebddb09036bec98ff7018dcf7c1"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "0c3823994ee8f838c26040118ba62622"
+ }
+ Frame {
+ msec: 2816
+ hash: "d374547f47adc81a18428c7a79cb9cf2"
+ }
+ Frame {
+ msec: 2832
+ hash: "449c2996a2d0e74f2300adad619700bc"
+ }
+ Frame {
+ msec: 2848
+ hash: "14379a320b6fc36de5d2a6776f1dc963"
+ }
+ Frame {
+ msec: 2864
+ hash: "cb010a99ffa3b6df26c6cd263a21cfcd"
+ }
+ Frame {
+ msec: 2880
+ image: "cursorDelegate.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "a445d23288d462009916e31f370a2068"
+ }
+ Frame {
+ msec: 2912
+ hash: "8b3f2811300830e837797056f262bec2"
+ }
+ Frame {
+ msec: 2928
+ hash: "2303a27e72334cae84b4fe51a62974ba"
+ }
+ Frame {
+ msec: 2944
+ hash: "f3a9f3e74d2d83e38aee78cab7209bd6"
+ }
+ Frame {
+ msec: 2960
+ hash: "ca4777127a535655f057af57cf3e8c7b"
+ }
+ Frame {
+ msec: 2976
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 2992
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 3008
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 3024
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 3040
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 3056
+ hash: "de2b65920fa9177a79019f33712c2275"
+ }
+ Frame {
+ msec: 3072
+ hash: "ca4777127a535655f057af57cf3e8c7b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3088
+ hash: "83cfb141f6b77fa062443a442a5b2e9e"
+ }
+ Frame {
+ msec: 3104
+ hash: "b3e262864238d03f988c9750cc74e48f"
+ }
+ Frame {
+ msec: 3120
+ hash: "6ed2086ae01be46f0684bbecc05484c4"
+ }
+ Frame {
+ msec: 3136
+ hash: "91f6dad8f05577af6e4f5f0aceb06b4b"
+ }
+ Frame {
+ msec: 3152
+ hash: "1bfb0c299c3c0db0518eaa54137c22b0"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "37cc96ef4b760faadf76cc471f6ba49a"
+ }
+ Frame {
+ msec: 3184
+ hash: "67c848bf93e845eaf5eebc9b8e57482c"
+ }
+ Frame {
+ msec: 3200
+ hash: "e3906ad9b1dfbd1170364c11ff4b286f"
+ }
+ Frame {
+ msec: 3216
+ hash: "24dd59673c5659e3bf6f52723e1bcd07"
+ }
+ Frame {
+ msec: 3232
+ hash: "4b694f05f147bcf901a16807d4e3ec7c"
+ }
+ Frame {
+ msec: 3248
+ hash: "9d9dbf34f6a67a49210caa249b8a1abb"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3264
+ hash: "5381cde4763aa45c97793124e42db6f5"
+ }
+ Frame {
+ msec: 3280
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
+ }
+ Frame {
+ msec: 3296
+ hash: "cc1767ec13803959333cd35bfb2d9119"
+ }
+ Frame {
+ msec: 3312
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
+ }
+ Frame {
+ msec: 3328
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
+ }
+ Frame {
+ msec: 3344
+ hash: "d08dc22ddc707316483f09b796ea0380"
+ }
+ Frame {
+ msec: 3360
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3376
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
+ }
+ Frame {
+ msec: 3392
+ hash: "700bd56ecea646bbec2017007bbb5b84"
+ }
+ Frame {
+ msec: 3408
+ hash: "874a65c2069f4ba89301c129f884f217"
+ }
+ Frame {
+ msec: 3424
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
+ }
+ Frame {
+ msec: 3440
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
+ }
+ Frame {
+ msec: 3456
+ hash: "87c129a5bf08536d3fca90375283e26b"
+ }
+ Frame {
+ msec: 3472
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
+ }
+ Frame {
+ msec: 3488
+ hash: "61a3475bef5fd276b836cf3483526f57"
+ }
+ Frame {
+ msec: 3504
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3520
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
+ }
+ Frame {
+ msec: 3536
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3552
+ hash: "f243d823fc9977e69a008010d8db8a01"
+ }
+ Frame {
+ msec: 3568
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
+ }
+ Frame {
+ msec: 3584
+ hash: "bd5b206097f30dfce884a8c74856857d"
+ }
+ Frame {
+ msec: 3600
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
+ }
+ Frame {
+ msec: 3616
+ hash: "836f37fe92a46233640e0bd2c0932fea"
+ }
+ Frame {
+ msec: 3632
+ hash: "062091bc7a5f3296c669614318b80fe7"
+ }
+ Frame {
+ msec: 3648
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
+ }
+ Frame {
+ msec: 3664
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
+ }
+ Frame {
+ msec: 3680
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
+ }
+ Frame {
+ msec: 3696
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
+ }
+ Frame {
+ msec: 3712
+ hash: "585ad3efb7330de889b8cf56a51a0899"
+ }
+ Frame {
+ msec: 3728
+ hash: "c0eb56c72311263d892ce65331547531"
+ }
+ Frame {
+ msec: 3744
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
+ }
+ Frame {
+ msec: 3760
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
+ }
+ Frame {
+ msec: 3776
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
+ }
+ Frame {
+ msec: 3792
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
+ }
+ Frame {
+ msec: 3808
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
+ }
+ Frame {
+ msec: 3824
+ hash: "e83642b0793f5a790efca65ccf20a720"
+ }
+ Frame {
+ msec: 3840
+ image: "cursorDelegate.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "520a544fd92f17a14380803e253b396f"
+ }
+ Frame {
+ msec: 3872
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
+ }
+ Frame {
+ msec: 3888
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
+ }
+ Frame {
+ msec: 3904
+ hash: "69720bcca91f99f229aebc74c5e74261"
+ }
+ Frame {
+ msec: 3920
+ hash: "41d8f4031223f7c833d50208e231964a"
+ }
+ Frame {
+ msec: 3936
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
+ }
+ Frame {
+ msec: 3952
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
+ }
+ Frame {
+ msec: 3968
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
+ }
+ Frame {
+ msec: 3984
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4000
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4016
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4032
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4048
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Frame {
+ msec: 4064
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
+ }
+ Frame {
+ msec: 4080
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
+ }
+ Frame {
+ msec: 4096
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
+ }
+ Frame {
+ msec: 4112
+ hash: "41d8f4031223f7c833d50208e231964a"
+ }
+ Frame {
+ msec: 4128
+ hash: "69720bcca91f99f229aebc74c5e74261"
+ }
+ Frame {
+ msec: 4144
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
+ }
+ Frame {
+ msec: 4160
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
+ }
+ Frame {
+ msec: 4176
+ hash: "520a544fd92f17a14380803e253b396f"
+ }
+ Frame {
+ msec: 4192
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
+ }
+ Frame {
+ msec: 4208
+ hash: "e83642b0793f5a790efca65ccf20a720"
+ }
+ Frame {
+ msec: 4224
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
+ }
+ Frame {
+ msec: 4240
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
+ }
+ Frame {
+ msec: 4256
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
+ }
+ Frame {
+ msec: 4272
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
+ }
+ Frame {
+ msec: 4288
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
+ }
+ Frame {
+ msec: 4304
+ hash: "c0eb56c72311263d892ce65331547531"
+ }
+ Frame {
+ msec: 4320
+ hash: "585ad3efb7330de889b8cf56a51a0899"
+ }
+ Frame {
+ msec: 4336
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
+ }
+ Frame {
+ msec: 4352
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
+ }
+ Frame {
+ msec: 4368
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
+ }
+ Frame {
+ msec: 4384
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
+ }
+ Frame {
+ msec: 4400
+ hash: "062091bc7a5f3296c669614318b80fe7"
+ }
+ Frame {
+ msec: 4416
+ hash: "836f37fe92a46233640e0bd2c0932fea"
+ }
+ Frame {
+ msec: 4432
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
+ }
+ Frame {
+ msec: 4448
+ hash: "bd5b206097f30dfce884a8c74856857d"
+ }
+ Frame {
+ msec: 4464
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
+ }
+ Frame {
+ msec: 4480
+ hash: "f243d823fc9977e69a008010d8db8a01"
+ }
+ Frame {
+ msec: 4496
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
+ }
+ Frame {
+ msec: 4512
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
+ }
+ Frame {
+ msec: 4528
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
+ }
+ Frame {
+ msec: 4544
+ hash: "61a3475bef5fd276b836cf3483526f57"
+ }
+ Frame {
+ msec: 4560
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
+ }
+ Frame {
+ msec: 4576
+ hash: "87c129a5bf08536d3fca90375283e26b"
+ }
+ Frame {
+ msec: 4592
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
+ }
+ Frame {
+ msec: 4608
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
+ }
+ Frame {
+ msec: 4624
+ hash: "874a65c2069f4ba89301c129f884f217"
+ }
+ Frame {
+ msec: 4640
+ hash: "700bd56ecea646bbec2017007bbb5b84"
+ }
+ Frame {
+ msec: 4656
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
+ }
+ Frame {
+ msec: 4672
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
+ }
+ Frame {
+ msec: 4688
+ hash: "d08dc22ddc707316483f09b796ea0380"
+ }
+ Frame {
+ msec: 4704
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
+ }
+ Frame {
+ msec: 4720
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
+ }
+ Frame {
+ msec: 4736
+ hash: "cc1767ec13803959333cd35bfb2d9119"
+ }
+ Frame {
+ msec: 4752
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
+ }
+ Frame {
+ msec: 4768
+ hash: "5381cde4763aa45c97793124e42db6f5"
+ }
+ Frame {
+ msec: 4784
+ hash: "99940d6744ac1245f82d62f08c371285"
+ }
+ Frame {
+ msec: 4800
+ image: "cursorDelegate.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "77bbed46c7eb023252cdd80d0a15f38a"
+ }
+ Frame {
+ msec: 4832
+ hash: "36ee4da72825e96d5f670c94865a30d8"
+ }
+ Frame {
+ msec: 4848
+ hash: "c64d56c1b7df0a5c63ab8ff08ae6daf9"
+ }
+ Frame {
+ msec: 4864
+ hash: "942e038a3426fa318212a8f245141225"
+ }
+ Frame {
+ msec: 4880
+ hash: "c033ebaee12dd8fe953e91160f986c3d"
+ }
+ Frame {
+ msec: 4896
+ hash: "07e64024cf7eda082297f6f83dba8067"
+ }
+ Frame {
+ msec: 4912
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
+ }
+ Frame {
+ msec: 4928
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
+ }
+ Frame {
+ msec: 4944
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
+ }
+ Frame {
+ msec: 4960
+ hash: "87ca0584879b25336a1023ac3252fc9a"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
index f30ee4f17b..551a3de99e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
index 7ae3b94a57..826d99a044 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
index 636afe8f92..727e873b5e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
index b5a48373e3..c8f1f2795f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
@@ -6,11 +6,11 @@ VisualTest {
}
Frame {
msec: 16
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 32
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Key {
type: 6
@@ -22,83 +22,83 @@ VisualTest {
}
Frame {
msec: 48
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 64
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 80
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 96
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 112
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 128
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 144
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 160
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 176
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 192
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 208
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 224
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 240
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 256
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 272
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 288
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 304
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 320
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 336
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 352
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Key {
type: 6
@@ -110,23 +110,23 @@ VisualTest {
}
Frame {
msec: 368
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 384
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 400
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 416
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 432
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Key {
type: 7
@@ -138,27 +138,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 464
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 480
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 496
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 512
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 528
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Key {
type: 7
@@ -170,43 +170,43 @@ VisualTest {
}
Frame {
msec: 544
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 560
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 576
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 592
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 608
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 624
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 640
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 656
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 672
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 688
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Key {
type: 6
@@ -218,23 +218,23 @@ VisualTest {
}
Frame {
msec: 704
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 720
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 736
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 752
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 768
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Key {
type: 7
@@ -246,23 +246,23 @@ VisualTest {
}
Frame {
msec: 784
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 800
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 816
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 832
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 848
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Key {
type: 6
@@ -274,15 +274,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 880
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 896
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Key {
type: 7
@@ -294,15 +294,15 @@ VisualTest {
}
Frame {
msec: 912
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 928
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 944
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 960
@@ -310,7 +310,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Key {
type: 6
@@ -322,19 +322,19 @@ VisualTest {
}
Frame {
msec: 992
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1008
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1024
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1040
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Key {
type: 7
@@ -346,51 +346,51 @@ VisualTest {
}
Frame {
msec: 1056
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1072
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1088
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1104
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1120
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1136
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1152
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1168
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1184
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1200
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1216
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1232
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Key {
type: 6
@@ -402,15 +402,15 @@ VisualTest {
}
Frame {
msec: 1248
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Frame {
msec: 1264
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Frame {
msec: 1280
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Key {
type: 7
@@ -422,15 +422,15 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Frame {
msec: 1312
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Frame {
msec: 1328
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "fd2dfea0c188c624ad6eec189d677d8e"
}
Key {
type: 6
@@ -442,39 +442,39 @@ VisualTest {
}
Frame {
msec: 1344
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1360
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1376
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1392
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1408
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1424
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1440
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1456
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Frame {
msec: 1472
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Key {
type: 7
@@ -486,7 +486,7 @@ VisualTest {
}
Frame {
msec: 1488
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "8c3642f420ecc94e77cbaee8b218bddb"
}
Key {
type: 6
@@ -498,19 +498,19 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "fe0e4e097f655e0b330ed6fcfce669c2"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1520
- hash: "fe0e4e097f655e0b330ed6fcfce669c2"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1536
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1552
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Key {
type: 7
@@ -522,27 +522,27 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1584
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1600
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1616
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1632
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1648
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Key {
type: 6
@@ -554,23 +554,23 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1680
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1696
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1712
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1728
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Key {
type: 6
@@ -582,7 +582,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 7
@@ -594,15 +594,15 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1776
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1792
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 7
@@ -614,19 +614,19 @@ VisualTest {
}
Frame {
msec: 1808
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1824
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1840
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1856
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 6
@@ -638,15 +638,15 @@ VisualTest {
}
Frame {
msec: 1872
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1888
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1904
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1920
@@ -662,27 +662,27 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1952
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1968
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1984
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 2000
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 2016
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Key {
type: 6
@@ -694,11 +694,11 @@ VisualTest {
}
Frame {
msec: 2032
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "f87d1f15df169e08cdd3dff50d596492"
}
Frame {
msec: 2048
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "f87d1f15df169e08cdd3dff50d596492"
}
Key {
type: 7
@@ -710,11 +710,11 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "f87d1f15df169e08cdd3dff50d596492"
}
Frame {
msec: 2080
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "f87d1f15df169e08cdd3dff50d596492"
}
Key {
type: 6
@@ -726,19 +726,19 @@ VisualTest {
}
Frame {
msec: 2096
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "a50ab62d526aef826ad883f712a22325"
}
Frame {
msec: 2112
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "a50ab62d526aef826ad883f712a22325"
}
Frame {
msec: 2128
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "a50ab62d526aef826ad883f712a22325"
}
Frame {
msec: 2144
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "a50ab62d526aef826ad883f712a22325"
}
Key {
type: 6
@@ -758,19 +758,19 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "f0c34703a0b5a0631654482fbc785b57"
}
Frame {
msec: 2176
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "f0c34703a0b5a0631654482fbc785b57"
}
Frame {
msec: 2192
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "f0c34703a0b5a0631654482fbc785b57"
}
Frame {
msec: 2208
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "f0c34703a0b5a0631654482fbc785b57"
}
Key {
type: 6
@@ -782,7 +782,7 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Key {
type: 7
@@ -794,23 +794,23 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Frame {
msec: 2256
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Frame {
msec: 2272
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Frame {
msec: 2288
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Frame {
msec: 2304
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Key {
type: 7
@@ -822,11 +822,11 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Frame {
msec: 2336
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "0921766e0d224b70d2c3f9f282c51143"
}
Key {
type: 6
@@ -838,27 +838,27 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2368
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2384
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2400
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2416
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2432
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Key {
type: 7
@@ -870,19 +870,19 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2464
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2480
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Frame {
msec: 2496
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "91b44cdde36433cac6644c476e34d4f9"
}
Key {
type: 6
@@ -894,15 +894,15 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2528
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2544
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Key {
type: 7
@@ -914,83 +914,83 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2576
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2592
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2608
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2624
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2640
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2656
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2672
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2688
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2704
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2720
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2736
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2752
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2768
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2784
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2800
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2816
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2832
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2848
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2864
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2880
@@ -998,46 +998,46 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2912
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2928
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2944
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2960
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2976
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2992
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3008
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3024
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3040
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3056
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
deleted file mode 100644
index 87c2e07ec3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
index a0351e87fd..32330f49bf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
@@ -6,102 +6,102 @@ VisualTest {
}
Frame {
msec: 16
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 32
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 48
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 64
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 80
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 96
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 112
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 128
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 144
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 160
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 176
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 192
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 208
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 224
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 240
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 256
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 272
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 288
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 304
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 320
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 336
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 352
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 368
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 384
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
Frame {
msec: 400
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "09298802dfc053e2bb1b3bb2192ca5b2"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
index b064e79745..313fcc20d9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
index 7dd1bd857c..81798cc02a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
index d8e55e2bad..3e37ebb828 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
index f9f17446d1..313fcc20d9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
index 70ae713009..dc3abe66e1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
index 9ce28db647..62b464a75a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
index 2ef2ac0427..ee26c353bb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
index 2a614f8b2c..2ea9142d94 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
index f916c97dc2..fb0be3ceb5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
index 56bf00babd..0122645353 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
index 97847d9aa6..24da450457 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
index cdc5153eda..f014a3034c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
@@ -6,235 +6,235 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 32
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 48
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 64
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 80
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 96
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 112
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 128
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 144
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 160
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 176
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 192
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 208
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 224
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 240
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 256
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 272
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 288
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 304
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 320
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 336
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 352
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 368
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 384
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 400
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 416
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 432
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 448
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 464
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 480
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 496
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 512
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 528
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 544
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 560
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 576
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 592
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 608
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 624
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 640
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 656
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 672
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 688
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 704
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 720
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 736
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 752
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 768
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 784
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 800
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 816
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 832
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 848
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 864
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 880
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 896
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 912
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Frame {
msec: 928
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "9d5b9f785409527b8f315fef560a4688"
}
Mouse {
type: 2
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 944
- hash: "c83faf1ed7b59715046e1abef04fa546"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Mouse {
type: 3
@@ -270,27 +270,27 @@ VisualTest {
}
Frame {
msec: 976
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 992
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1008
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1024
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1040
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1056
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Mouse {
type: 3
@@ -302,79 +302,79 @@ VisualTest {
}
Frame {
msec: 1072
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1088
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1104
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1120
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1136
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1152
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1168
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1184
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1200
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1216
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1232
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1248
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1264
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1280
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1296
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1312
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1328
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1344
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1360
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Key {
type: 6
@@ -386,139 +386,139 @@ VisualTest {
}
Frame {
msec: 1376
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1392
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1408
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1424
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1440
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1456
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1472
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1488
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1504
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1520
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1536
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1552
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1568
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1584
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1600
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1616
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1632
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1648
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1664
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1680
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1696
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1712
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1728
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1744
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1760
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1776
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1792
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1808
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1824
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1840
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1856
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1872
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1888
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1904
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1920
@@ -526,19 +526,19 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1952
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1968
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 1984
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Key {
type: 6
@@ -550,35 +550,35 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2016
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2032
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2048
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2064
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2080
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2096
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2112
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Key {
type: 7
@@ -598,95 +598,95 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2144
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2160
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2176
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2192
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2208
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2224
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2240
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2256
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2272
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2288
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2304
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2320
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2336
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2352
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2368
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2384
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2400
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2416
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2432
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2448
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2464
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Frame {
msec: 2480
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "957c85bfa6586d5d92aa3689c178944f"
}
Key {
type: 6
@@ -698,27 +698,27 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2512
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2528
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2544
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2560
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2576
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Key {
type: 7
@@ -730,55 +730,55 @@ VisualTest {
}
Frame {
msec: 2592
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2608
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2624
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2640
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2656
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2672
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2688
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2704
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2720
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2736
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2752
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2768
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2784
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Key {
type: 6
@@ -790,23 +790,23 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2816
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2832
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2848
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2864
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2880
@@ -814,87 +814,87 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2912
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2928
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2944
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2960
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2976
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 2992
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3008
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3024
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3040
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3056
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3072
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3088
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3104
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3120
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3136
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3152
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3168
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3184
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3200
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Frame {
msec: 3216
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "ebd6e6bbd0edaffed688dd5fa2328393"
}
Key {
type: 6
@@ -906,31 +906,31 @@ VisualTest {
}
Frame {
msec: 3232
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3248
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3264
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3280
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3296
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3312
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3328
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Key {
type: 7
@@ -942,59 +942,59 @@ VisualTest {
}
Frame {
msec: 3344
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3360
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3376
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3392
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3408
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3424
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3440
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3456
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3472
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3488
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3504
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3520
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3536
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Frame {
msec: 3552
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "923335b8fdb038fe10c8c557845c2ae1"
}
Key {
type: 6
@@ -1006,35 +1006,35 @@ VisualTest {
}
Frame {
msec: 3568
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3584
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3600
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3616
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3632
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3648
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3664
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3680
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Key {
type: 7
@@ -1046,39 +1046,39 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3712
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3728
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3744
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3760
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3776
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3792
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3808
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3824
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3840
@@ -1086,91 +1086,91 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3872
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3888
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3904
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3920
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3936
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3952
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3968
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 3984
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4000
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4016
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4032
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4048
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4064
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4080
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4096
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4112
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4128
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4144
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4160
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4176
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4192
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Key {
type: 7
@@ -1182,131 +1182,131 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4224
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4240
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4256
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4272
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4288
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4304
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4320
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4336
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4352
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4368
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4384
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4400
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4416
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4432
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4448
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4464
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4480
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4496
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4512
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4528
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4544
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4560
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4576
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4592
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4608
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4624
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4640
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4656
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4672
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4688
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Frame {
msec: 4704
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "3e9cbf56be37f593e907759285ddebdb"
}
Mouse {
type: 2
@@ -1318,23 +1318,23 @@ VisualTest {
}
Frame {
msec: 4720
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4736
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4752
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4768
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4784
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4800
@@ -1350,143 +1350,143 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4832
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4848
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4864
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4880
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4896
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4912
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4928
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4944
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4960
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4976
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 4992
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5008
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5024
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5040
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5056
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5072
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5088
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5104
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5120
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5136
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5152
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5168
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5184
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5200
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5216
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5232
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5248
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5264
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5280
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5296
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5312
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5328
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5344
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Frame {
msec: 5360
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "39ce4d31df138a329a21056b8d397fd7"
}
Key {
type: 6
@@ -1498,67 +1498,67 @@ VisualTest {
}
Frame {
msec: 5376
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5392
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5408
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5424
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5440
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5456
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5472
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5488
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5504
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5520
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5536
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5552
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5568
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5584
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5600
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Frame {
msec: 5616
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "ed58b79d6459243c991a2f941279f88e"
}
Key {
type: 7
@@ -1578,11 +1578,11 @@ VisualTest {
}
Frame {
msec: 5632
- hash: "baa42bc9d5e16c3e7af81e126d37655a"
+ hash: "c5d53d11b73e52746d8cdc7de15198cb"
}
Frame {
msec: 5648
- hash: "baa42bc9d5e16c3e7af81e126d37655a"
+ hash: "c5d53d11b73e52746d8cdc7de15198cb"
}
Key {
type: 7
@@ -1602,11 +1602,11 @@ VisualTest {
}
Frame {
msec: 5664
- hash: "aa876e6d6ff0f169bcc3cf25be5e7a81"
+ hash: "ba3ef31e650737ec5b7477baa4ab5ecf"
}
Frame {
msec: 5680
- hash: "aa876e6d6ff0f169bcc3cf25be5e7a81"
+ hash: "ba3ef31e650737ec5b7477baa4ab5ecf"
}
Key {
type: 7
@@ -1626,11 +1626,11 @@ VisualTest {
}
Frame {
msec: 5696
- hash: "8ec4c1a8ae28af44dcabf338fc056717"
+ hash: "59098eca4502479da33d40ec82896330"
}
Frame {
msec: 5712
- hash: "8ec4c1a8ae28af44dcabf338fc056717"
+ hash: "59098eca4502479da33d40ec82896330"
}
Key {
type: 7
@@ -1650,11 +1650,11 @@ VisualTest {
}
Frame {
msec: 5728
- hash: "ec0da333c0bc090eec0ded5e4d18bd6e"
+ hash: "9c1888b9575771f653d672c19ab4083f"
}
Frame {
msec: 5744
- hash: "ec0da333c0bc090eec0ded5e4d18bd6e"
+ hash: "9c1888b9575771f653d672c19ab4083f"
}
Key {
type: 7
@@ -1678,7 +1678,7 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "325ba5789a6150ec0fef81fa5b005c09"
+ hash: "48bb05f44207f641b573d43043882aa2"
}
Key {
type: 7
@@ -1698,11 +1698,11 @@ VisualTest {
}
Frame {
msec: 5792
- hash: "023dd8fe428b1ed0f4c994f7e67ac3cd"
+ hash: "f5cb70509c060343a8c9b57d26ecf4ea"
}
Frame {
msec: 5808
- hash: "023dd8fe428b1ed0f4c994f7e67ac3cd"
+ hash: "f5cb70509c060343a8c9b57d26ecf4ea"
}
Key {
type: 7
@@ -1722,11 +1722,11 @@ VisualTest {
}
Frame {
msec: 5824
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "5bdfe389421df56140d27a21bbcc10d4"
}
Frame {
msec: 5840
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "5bdfe389421df56140d27a21bbcc10d4"
}
Key {
type: 7
@@ -1738,7 +1738,7 @@ VisualTest {
}
Frame {
msec: 5856
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "5bdfe389421df56140d27a21bbcc10d4"
}
Key {
type: 6
@@ -1750,11 +1750,11 @@ VisualTest {
}
Frame {
msec: 5872
- hash: "8e7ad34802a0ced493e88b779c73cc47"
+ hash: "0f48c779e033240e87675b43cfca02c5"
}
Frame {
msec: 5888
- hash: "8e7ad34802a0ced493e88b779c73cc47"
+ hash: "0f48c779e033240e87675b43cfca02c5"
}
Key {
type: 7
@@ -1774,7 +1774,7 @@ VisualTest {
}
Frame {
msec: 5904
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Key {
type: 7
@@ -1786,39 +1786,39 @@ VisualTest {
}
Frame {
msec: 5920
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 5936
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 5952
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 5968
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 5984
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6000
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6016
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6032
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6048
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Key {
type: 6
@@ -1830,27 +1830,27 @@ VisualTest {
}
Frame {
msec: 6064
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6080
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6096
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6112
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6128
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Frame {
msec: 6144
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "f5e148d32ec832bb9c4fb49016da7903"
}
Key {
type: 6
@@ -1862,67 +1862,67 @@ VisualTest {
}
Frame {
msec: 6160
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6176
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6192
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6208
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6224
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6240
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6256
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6272
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6288
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6304
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6320
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6336
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6352
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6368
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6384
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Frame {
msec: 6400
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "ac4c53142eea27d7148c74de76cdc4d4"
}
Key {
type: 7
@@ -1942,11 +1942,11 @@ VisualTest {
}
Frame {
msec: 6416
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6432
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Key {
type: 7
@@ -1966,11 +1966,11 @@ VisualTest {
}
Frame {
msec: 6448
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6464
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Key {
type: 7
@@ -1998,63 +1998,63 @@ VisualTest {
}
Frame {
msec: 6480
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6496
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6512
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6528
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6544
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6560
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6576
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6592
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6608
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6624
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6640
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6656
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6672
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6688
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6704
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6720
@@ -2062,19 +2062,19 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6752
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6768
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6784
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Key {
type: 6
@@ -2086,7 +2086,7 @@ VisualTest {
}
Frame {
msec: 6800
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Key {
type: 7
@@ -2098,39 +2098,39 @@ VisualTest {
}
Frame {
msec: 6816
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6832
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6848
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6864
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6880
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6896
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6912
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6928
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Frame {
msec: 6944
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "ecfa95feb59486098b758894cba272c8"
}
Key {
type: 6
@@ -2142,19 +2142,19 @@ VisualTest {
}
Frame {
msec: 6960
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 6976
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 6992
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 7008
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Key {
type: 7
@@ -2166,23 +2166,23 @@ VisualTest {
}
Frame {
msec: 7024
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 7040
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 7056
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 7072
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Frame {
msec: 7088
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "012fbe791afb6bb8b97091fbec1b0add"
}
Key {
type: 6
@@ -2194,19 +2194,19 @@ VisualTest {
}
Frame {
msec: 7104
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7120
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7136
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7152
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Key {
type: 7
@@ -2218,31 +2218,31 @@ VisualTest {
}
Frame {
msec: 7168
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7184
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7200
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7216
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7232
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7248
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Frame {
msec: 7264
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "d1246ecb1e587b9618d4affb6303581b"
}
Key {
type: 6
@@ -2254,23 +2254,23 @@ VisualTest {
}
Frame {
msec: 7280
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7296
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7312
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7328
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7344
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Key {
type: 7
@@ -2282,47 +2282,47 @@ VisualTest {
}
Frame {
msec: 7360
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7376
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7392
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7408
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7424
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7440
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7456
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7472
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7488
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7504
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7520
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Key {
type: 7
@@ -2334,39 +2334,39 @@ VisualTest {
}
Frame {
msec: 7536
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7552
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7568
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7584
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7600
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7616
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7632
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7648
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7664
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7680
@@ -2374,207 +2374,207 @@ VisualTest {
}
Frame {
msec: 7696
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7712
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7728
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7744
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7760
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7776
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7792
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7808
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7824
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7840
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7856
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7872
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7888
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7904
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7920
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7936
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7952
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7968
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 7984
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8000
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8016
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8032
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8048
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8064
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8080
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8096
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8112
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8128
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8144
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8160
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8176
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8192
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8208
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8224
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8240
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8256
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8272
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8288
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8304
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8320
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8336
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8352
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8368
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8384
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8400
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8416
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8432
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8448
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8464
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8480
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Frame {
msec: 8496
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "28b1455bb7b150afb4bec88f3328a1f6"
}
Mouse {
type: 2
@@ -2586,19 +2586,19 @@ VisualTest {
}
Frame {
msec: 8512
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "edb037dfb1fe973df3896e4a2d649b8c"
}
Frame {
msec: 8528
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "edb037dfb1fe973df3896e4a2d649b8c"
}
Frame {
msec: 8544
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "edb037dfb1fe973df3896e4a2d649b8c"
}
Frame {
msec: 8560
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "edb037dfb1fe973df3896e4a2d649b8c"
}
Mouse {
type: 5
@@ -2618,7 +2618,7 @@ VisualTest {
}
Frame {
msec: 8576
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "edb037dfb1fe973df3896e4a2d649b8c"
}
Mouse {
type: 5
@@ -2630,7 +2630,7 @@ VisualTest {
}
Frame {
msec: 8592
- hash: "7d4116a8689b6995702a042d974ef74b"
+ hash: "56e3c2d792e204e7d9758263edb6ab24"
}
Mouse {
type: 5
@@ -2650,7 +2650,7 @@ VisualTest {
}
Frame {
msec: 8608
- hash: "cb9221f27ac24e4b6b103ca53acad3b3"
+ hash: "74b47cf865838cdb3b29cd2104d990fe"
}
Mouse {
type: 5
@@ -2662,7 +2662,7 @@ VisualTest {
}
Frame {
msec: 8624
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ hash: "b7f624c97fc369c66314ecbb86549686"
}
Mouse {
type: 5
@@ -2694,7 +2694,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ hash: "b7f624c97fc369c66314ecbb86549686"
}
Mouse {
type: 5
@@ -2714,7 +2714,7 @@ VisualTest {
}
Frame {
msec: 8672
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ hash: "51219dfa7fc899bdba40d50b90ca3ca6"
}
Mouse {
type: 5
@@ -2726,7 +2726,7 @@ VisualTest {
}
Frame {
msec: 8688
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "51219dfa7fc899bdba40d50b90ca3ca6"
}
Mouse {
type: 5
@@ -2746,7 +2746,7 @@ VisualTest {
}
Frame {
msec: 8704
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "51219dfa7fc899bdba40d50b90ca3ca6"
}
Mouse {
type: 5
@@ -2766,7 +2766,7 @@ VisualTest {
}
Frame {
msec: 8720
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "51219dfa7fc899bdba40d50b90ca3ca6"
}
Mouse {
type: 5
@@ -2786,7 +2786,7 @@ VisualTest {
}
Frame {
msec: 8736
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "9320132e49323d536d435ce4f2263502"
}
Mouse {
type: 5
@@ -2806,7 +2806,7 @@ VisualTest {
}
Frame {
msec: 8752
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "9320132e49323d536d435ce4f2263502"
}
Mouse {
type: 5
@@ -2826,7 +2826,7 @@ VisualTest {
}
Frame {
msec: 8768
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "9320132e49323d536d435ce4f2263502"
}
Mouse {
type: 5
@@ -2846,7 +2846,7 @@ VisualTest {
}
Frame {
msec: 8784
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "ad318ee661054ed3b628c312467dc789"
}
Mouse {
type: 5
@@ -2866,7 +2866,7 @@ VisualTest {
}
Frame {
msec: 8800
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "ad318ee661054ed3b628c312467dc789"
}
Mouse {
type: 5
@@ -2886,7 +2886,7 @@ VisualTest {
}
Frame {
msec: 8816
- hash: "f5a185b954e8b181222cc50075d8ebb6"
+ hash: "ad318ee661054ed3b628c312467dc789"
}
Mouse {
type: 5
@@ -2906,7 +2906,7 @@ VisualTest {
}
Frame {
msec: 8832
- hash: "93a00b37c5027650791d1ff589408d0d"
+ hash: "6916d64662dd8accaa2c70cbd9b94af9"
}
Mouse {
type: 5
@@ -2926,7 +2926,7 @@ VisualTest {
}
Frame {
msec: 8848
- hash: "0b29f6006be3604ef862db7d31f9a434"
+ hash: "dd995b598e90d482291b94f9cbebace9"
}
Mouse {
type: 5
@@ -2946,7 +2946,7 @@ VisualTest {
}
Frame {
msec: 8864
- hash: "8390b63b71e1452cb93c576a3f2395e1"
+ hash: "8fb2e565879fdb7ef5ca53a142c1ea45"
}
Mouse {
type: 5
@@ -2966,7 +2966,7 @@ VisualTest {
}
Frame {
msec: 8880
- hash: "72298910946a4e1a9ccc4520d99e9420"
+ hash: "6cdab9c68965444420401bb95c2d059b"
}
Mouse {
type: 5
@@ -2986,7 +2986,7 @@ VisualTest {
}
Frame {
msec: 8896
- hash: "17d349b0ed29d6aa57bf8fda9a55abf8"
+ hash: "d11156abb2ef56ef6b8c4e78e2391d8a"
}
Mouse {
type: 5
@@ -3006,7 +3006,7 @@ VisualTest {
}
Frame {
msec: 8912
- hash: "01e8a877d51f5564aaf2f11e7aadbc4a"
+ hash: "2390c7bfd983c14a6ff4c3573741e2fa"
}
Mouse {
type: 5
@@ -3026,7 +3026,7 @@ VisualTest {
}
Frame {
msec: 8928
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3046,7 +3046,7 @@ VisualTest {
}
Frame {
msec: 8944
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3066,11 +3066,11 @@ VisualTest {
}
Frame {
msec: 8960
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 8976
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3090,7 +3090,7 @@ VisualTest {
}
Frame {
msec: 8992
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3102,55 +3102,55 @@ VisualTest {
}
Frame {
msec: 9008
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9024
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9040
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9056
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9072
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9088
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9104
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9120
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9136
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9152
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9168
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9184
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Frame {
msec: 9200
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3162,7 +3162,7 @@ VisualTest {
}
Frame {
msec: 9216
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3174,7 +3174,7 @@ VisualTest {
}
Frame {
msec: 9232
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3194,7 +3194,7 @@ VisualTest {
}
Frame {
msec: 9248
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3214,7 +3214,7 @@ VisualTest {
}
Frame {
msec: 9264
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3234,7 +3234,7 @@ VisualTest {
}
Frame {
msec: 9280
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3254,7 +3254,7 @@ VisualTest {
}
Frame {
msec: 9296
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3274,7 +3274,7 @@ VisualTest {
}
Frame {
msec: 9312
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3294,7 +3294,7 @@ VisualTest {
}
Frame {
msec: 9328
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3314,7 +3314,7 @@ VisualTest {
}
Frame {
msec: 9344
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3334,7 +3334,7 @@ VisualTest {
}
Frame {
msec: 9360
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3354,7 +3354,7 @@ VisualTest {
}
Frame {
msec: 9376
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "e7442142350b9fdaf7fc7e763cafbaf5"
}
Mouse {
type: 5
@@ -3374,7 +3374,7 @@ VisualTest {
}
Frame {
msec: 9392
- hash: "12e705f08ff90fd8ddb1937e5a7e23a0"
+ hash: "934022d70c2d094d6463d895803f2a79"
}
Mouse {
type: 5
@@ -3394,7 +3394,7 @@ VisualTest {
}
Frame {
msec: 9408
- hash: "12e705f08ff90fd8ddb1937e5a7e23a0"
+ hash: "934022d70c2d094d6463d895803f2a79"
}
Mouse {
type: 5
@@ -3414,7 +3414,7 @@ VisualTest {
}
Frame {
msec: 9424
- hash: "4daae0f05ff1b7ef68ed1d839b113dc4"
+ hash: "48caf4c2d3a5a6058b1ffa221ee77d83"
}
Mouse {
type: 5
@@ -3434,7 +3434,7 @@ VisualTest {
}
Frame {
msec: 9440
- hash: "a1186544d7f5576e6ccbbd7938c1c374"
+ hash: "8e22c6013721d350acf1635f1c00488d"
}
Mouse {
type: 5
@@ -3454,7 +3454,7 @@ VisualTest {
}
Frame {
msec: 9456
- hash: "6ce09c9a06135d2280e4f7bc1c81b70e"
+ hash: "c8dd72bfeec38d825dc7832f8bf7116d"
}
Mouse {
type: 5
@@ -3474,7 +3474,7 @@ VisualTest {
}
Frame {
msec: 9472
- hash: "6ce09c9a06135d2280e4f7bc1c81b70e"
+ hash: "f3e934f22fead73fd52ab26d4f3fd480"
}
Mouse {
type: 5
@@ -3494,7 +3494,7 @@ VisualTest {
}
Frame {
msec: 9488
- hash: "035b177c3cacd8cdef807d5673de4607"
+ hash: "7fc03d3341860a984be91feec0b67da2"
}
Mouse {
type: 5
@@ -3514,7 +3514,7 @@ VisualTest {
}
Frame {
msec: 9504
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "7fc03d3341860a984be91feec0b67da2"
}
Mouse {
type: 5
@@ -3534,7 +3534,7 @@ VisualTest {
}
Frame {
msec: 9520
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "a1eacc5be14a2c411660662dd9e78b2f"
}
Mouse {
type: 5
@@ -3546,7 +3546,7 @@ VisualTest {
}
Frame {
msec: 9536
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "a1eacc5be14a2c411660662dd9e78b2f"
}
Mouse {
type: 5
@@ -3566,7 +3566,7 @@ VisualTest {
}
Frame {
msec: 9552
- hash: "859950e1cf496ef830a30b3a0ec801ac"
+ hash: "a1eacc5be14a2c411660662dd9e78b2f"
}
Mouse {
type: 5
@@ -3586,7 +3586,7 @@ VisualTest {
}
Frame {
msec: 9568
- hash: "859950e1cf496ef830a30b3a0ec801ac"
+ hash: "6808d46fa17f9e359c38aeca72466c97"
}
Mouse {
type: 5
@@ -3606,7 +3606,7 @@ VisualTest {
}
Frame {
msec: 9584
- hash: "be7343825b6adcb16f49e20ee2bdf19f"
+ hash: "0b4b632291769b48d942f5aea91a8ae5"
}
Mouse {
type: 5
@@ -3638,7 +3638,7 @@ VisualTest {
}
Frame {
msec: 9616
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ hash: "0b4b632291769b48d942f5aea91a8ae5"
}
Mouse {
type: 5
@@ -3658,7 +3658,7 @@ VisualTest {
}
Frame {
msec: 9632
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ hash: "d730471882eacaf3280295d902c3927f"
}
Mouse {
type: 5
@@ -3678,7 +3678,7 @@ VisualTest {
}
Frame {
msec: 9648
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ hash: "d730471882eacaf3280295d902c3927f"
}
Mouse {
type: 5
@@ -3698,7 +3698,7 @@ VisualTest {
}
Frame {
msec: 9664
- hash: "2fc5c42f94350f28ae0117bc7f6daff1"
+ hash: "f2a17005ff90345b440475a772277495"
}
Mouse {
type: 5
@@ -3718,7 +3718,7 @@ VisualTest {
}
Frame {
msec: 9680
- hash: "4b4ec69d583151f1a64052d696966f9c"
+ hash: "62edb249cc9fcb08e5426f9acd54ad36"
}
Mouse {
type: 5
@@ -3738,7 +3738,7 @@ VisualTest {
}
Frame {
msec: 9696
- hash: "0882a25ac1c2b534367736d825a73630"
+ hash: "ef6497718983eb548ec2aa43781d2555"
}
Mouse {
type: 5
@@ -3758,7 +3758,7 @@ VisualTest {
}
Frame {
msec: 9712
- hash: "d5b6acc155f827c05b0c4c289a2e3eec"
+ hash: "d5b90efb68335fc4aa1fc222c67d1f53"
}
Mouse {
type: 5
@@ -3778,7 +3778,7 @@ VisualTest {
}
Frame {
msec: 9728
- hash: "a05b3f2f9f22249ab694ac45e1de7b85"
+ hash: "a8cbbbe9cffd27002e8a1b3851b23bb0"
}
Mouse {
type: 5
@@ -3798,7 +3798,7 @@ VisualTest {
}
Frame {
msec: 9744
- hash: "5b0e034813f8543627f370efdcf3591e"
+ hash: "a448d8d01e84961098d6b86319013d5f"
}
Mouse {
type: 5
@@ -3818,7 +3818,7 @@ VisualTest {
}
Frame {
msec: 9760
- hash: "5b8d80b9d7e2a8c1a24c28e127d0f7e5"
+ hash: "afa98074edfb7b0e904f5645f592efae"
}
Mouse {
type: 5
@@ -3838,7 +3838,7 @@ VisualTest {
}
Frame {
msec: 9776
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3858,7 +3858,7 @@ VisualTest {
}
Frame {
msec: 9792
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3870,7 +3870,7 @@ VisualTest {
}
Frame {
msec: 9808
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3882,7 +3882,7 @@ VisualTest {
}
Frame {
msec: 9824
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3894,7 +3894,7 @@ VisualTest {
}
Frame {
msec: 9840
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3906,11 +3906,11 @@ VisualTest {
}
Frame {
msec: 9856
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 9872
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3922,7 +3922,7 @@ VisualTest {
}
Frame {
msec: 9888
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3934,7 +3934,7 @@ VisualTest {
}
Frame {
msec: 9904
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3946,7 +3946,7 @@ VisualTest {
}
Frame {
msec: 9920
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3958,11 +3958,11 @@ VisualTest {
}
Frame {
msec: 9936
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 9952
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3974,7 +3974,7 @@ VisualTest {
}
Frame {
msec: 9968
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3986,7 +3986,7 @@ VisualTest {
}
Frame {
msec: 9984
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -3998,11 +3998,11 @@ VisualTest {
}
Frame {
msec: 10000
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10016
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 5
@@ -4014,59 +4014,59 @@ VisualTest {
}
Frame {
msec: 10032
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10048
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10064
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10080
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10096
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10112
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10128
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10144
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10160
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10176
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10192
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10208
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10224
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10240
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Mouse {
type: 3
@@ -4078,79 +4078,79 @@ VisualTest {
}
Frame {
msec: 10256
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10272
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10288
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10304
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10320
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10336
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10352
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10368
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10384
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10400
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10416
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10432
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10448
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10464
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10480
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10496
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10512
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10528
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10544
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10560
@@ -4158,178 +4158,178 @@ VisualTest {
}
Frame {
msec: 10576
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10592
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10608
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10624
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10640
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10656
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10672
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10688
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10704
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10720
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10736
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10752
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10768
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10784
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10800
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10816
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10832
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10848
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10864
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10880
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10896
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10912
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10928
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10944
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10960
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10976
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 10992
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11008
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11024
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11040
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11056
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11072
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11088
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11104
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11120
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11136
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11152
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11168
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11184
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11200
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11216
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11232
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11248
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
Frame {
msec: 11264
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "020ac5797abe98f97c4839afc67aac18"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
deleted file mode 100644
index f04f65ead0..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
deleted file mode 100644
index 46a703a194..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
deleted file mode 100644
index e4a38774ed..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
deleted file mode 100644
index 9ef842ae10..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
deleted file mode 100644
index 706e2b390d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
deleted file mode 100644
index bcc86cc407..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
deleted file mode 100644
index 51ddd44f40..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
deleted file mode 100644
index 0a2fddafdc..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
deleted file mode 100644
index 9c88bff24d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
index a1d998fc46..81f1bcc6c5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
@@ -6,134 +6,146 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 32
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 48
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 64
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 80
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 96
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 112
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 128
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 144
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 160
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 176
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 192
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 208
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 224
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 240
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 256
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 272
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 288
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 304
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 320
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 336
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 352
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 368
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 384
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 400
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 416
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 432
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 448
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 464
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 480
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 496
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 512
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 528
+ hash: "87902d32dba1439e71ce5f57f514748e"
}
Key {
- type: 6
+ type: 7
key: 16777234
modifiers: 0
text: ""
@@ -141,36 +153,44 @@ VisualTest {
count: 1
}
Frame {
- msec: 528
- hash: "56db24ad686d34e75a2d184e5b1da2a9"
- }
- Frame {
msec: 544
- hash: "c3487c7c7dcd392e7eacb74045dd4143"
+ hash: "cad95931a38718eb481a9175fdfec305"
}
Frame {
msec: 560
- hash: "70aedcda6c93875d18ee111d8a19549e"
+ hash: "1dc99e5c7e4d2fa6b624b6df250b78fc"
}
Frame {
msec: 576
- hash: "47ad557d366536ad457f6866241dba93"
+ hash: "5d5739beb039a83bebb2c41489166edf"
}
Frame {
msec: 592
- hash: "e715c2a82745829665226df78598b819"
+ hash: "6320c9a1c0013f5aa6180992b934ca59"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "2ff4bd5602c34c020162f0503d625049"
+ hash: "9d9837c1f3779e5dab0dfeb1d11fdea1"
}
Frame {
msec: 624
- hash: "a494b3b25a23daa858034ebccce0d1c7"
+ hash: "9d868112eaf70ce02ce93603278a565d"
}
Frame {
msec: 640
- hash: "59d2fb8e21802d256b11730b31919fb3"
+ hash: "d2bccb3184d3bb42b91017410a8655b6"
+ }
+ Frame {
+ msec: 656
+ hash: "68f8be3e16637fd39a35f0cebb62b74a"
}
Key {
type: 7
@@ -181,67 +201,47 @@ VisualTest {
count: 1
}
Frame {
- msec: 656
- hash: "5e09b95292d6d0afe76a5015b0ccebf1"
- }
- Frame {
msec: 672
- hash: "de3c911aec7e42557ece4bdcf02ce562"
+ hash: "04f5781b57ed9fee32d5ef80dc33f4ff"
}
Frame {
msec: 688
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
+ hash: "06cc2e24a848d441074de5ddff1c739a"
+ }
+ Frame {
+ msec: 704
+ hash: "94526186deb7248ac9c747ede15b106d"
+ }
+ Frame {
+ msec: 720
+ hash: "1ac130517df314f4f44b9bde2d3dcc53"
}
Key {
type: 6
- key: 16777236
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
- msec: 704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
msec: 736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
+ hash: "270ecf4900e94d60599ded230633aa02"
}
Frame {
msec: 752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
+ hash: "ef2093584cbce9182b99f297fcd2465d"
}
Frame {
msec: 768
- hash: "fd3fd655785c4e3c470f742451e3470f"
+ hash: "c445cf5f56213a712585934681d8af55"
}
Frame {
msec: 784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 800
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
+ hash: "9f0edb3871e015a549622e1b70d1b748"
}
Key {
type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Key {
- type: 6
key: 16777234
modifiers: 0
text: ""
@@ -249,28 +249,44 @@ VisualTest {
count: 1
}
Frame {
+ msec: 800
+ hash: "144c51d7aa47ea8cc8d79a97efa4b430"
+ }
+ Frame {
+ msec: 816
+ hash: "34f768a7c99dfb3c8f0e1fb1a08a37ac"
+ }
+ Frame {
msec: 832
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "4f3970c4ad02b69f96c11610494e8a50"
}
Frame {
msec: 848
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "815a1cf66f0c9eb47e244753eebb83ba"
}
Frame {
msec: 864
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "5db11f795c000b382fdc30726a711c65"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 880
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "67976ee172d0d55992c0e4734fbb7ccf"
}
Frame {
msec: 896
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "c764e4d5317acbbf5118a08565e5d5fd"
}
Frame {
msec: 912
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "a83f566d01b990e91f43bb63a58fb5b8"
}
Key {
type: 7
@@ -282,11 +298,11 @@ VisualTest {
}
Frame {
msec: 928
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "031282f352e01f23bc5f73bf8ce82c9a"
}
Frame {
msec: 944
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "1f3dc1d3ad0304376eac5d60d3c226ee"
}
Frame {
msec: 960
@@ -294,207 +310,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 992
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1008
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1024
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 1056
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Key {
- type: 6
- key: 16777248
- modifiers: 33554432
+ type: 7
+ key: 16777234
+ modifiers: 0
text: ""
autorep: false
count: 1
}
- Key {
- type: 6
- key: 16777249
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ Frame {
+ msec: 1056
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1072
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "a2ad07326fafcb3012cdb869f39af466"
}
Frame {
msec: 1088
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "8622eb25a6da44926b5161bce213a483"
}
Frame {
msec: 1104
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
}
Frame {
msec: 1120
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "775cd79b012f79b773449a0ad8457149"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "2a4ed061e512c5afd11072c4b707f707"
}
Frame {
msec: 1152
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "c855df7b17811f25fd17e4fb108c02e1"
}
Frame {
msec: 1168
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "46c37d8e67ece5cae4f766acf50f3ca3"
}
Frame {
msec: 1184
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "95a70f14ce01aae61190080ed3d55c77"
}
Frame {
msec: 1200
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "87da182d1285f3613bb2e4673e701757"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1216
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "5b97f13f43e713a6fbe96bdca8969191"
}
Frame {
msec: 1232
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "4d003182e7b7b0a05413b80f82a0fc41"
}
Frame {
msec: 1248
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "dba09e038291a8dfdc61911d6b4b9bdf"
}
Frame {
msec: 1264
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "a2ae1e5cc6cd72fae70804e07df5a8a1"
}
Frame {
msec: 1280
- hash: "de09380dd57c58ae99fbdba169a19975"
+ hash: "f1c2a24b6f0ebcf98122e8db1cdcb66f"
}
Frame {
msec: 1296
- hash: "bfc1b03df244839a012e8302dc07764f"
+ hash: "142dade1639655132435ae260b7935a0"
}
- Frame {
- msec: 1312
- hash: "d5f220e5337837ec0d07eb118e2f948e"
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
- msec: 1328
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
+ msec: 1312
+ hash: "e80c0175d947bceef4bf53b60bf7eac0"
}
Key {
type: 6
- key: 16777234
+ key: 16777248
modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 1328
+ hash: "de912cd8bd2fe762ec6b1ec819732507"
+ }
+ Frame {
msec: 1344
- hash: "c659fd76d632aac26d396809b57826dd"
+ hash: "d3fa9dfab37ee26572d25bcbe8c66b72"
}
Frame {
msec: 1360
- hash: "b5ba335eca37416970dcab53157d7ae6"
+ hash: "33bdb2817a2858ce430813d0774f0172"
}
Frame {
msec: 1376
- hash: "df498dac81260d8867221612ff3b7619"
+ hash: "4f10f0ffb6b1c87155eedd53af36c74f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "578c3a682278f4ead0ca894f029dbfb7"
+ hash: "1b94be0de8412bd9380689895f290af7"
}
Frame {
msec: 1408
- hash: "5fe9b2365b091047df1b18bcaa5b1bb4"
+ hash: "48b3a5e2b04c86a75f4b6595eb2c1f55"
}
Frame {
msec: 1424
- hash: "c513b8df83f1d1cc3c05769c41741653"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "d092fabd3dd51c718486e1e7dadaa0dc"
}
Frame {
msec: 1440
- hash: "ee70a2002f52a3f4a9fa32db668db3d0"
+ hash: "243359437235563f1a60b8eaf63365b6"
}
Frame {
msec: 1456
- hash: "3f299da38c2f3f9057df987d5d339e1f"
+ hash: "a986c8ed8ad2d8b6aab2a001906ba2ad"
}
Frame {
msec: 1472
- hash: "55f6adbd00910e5f39977162cfe8dcc5"
+ hash: "da5e06dc481e9cb7d9159a84d0cc150a"
}
Frame {
msec: 1488
- hash: "151fb386855954ae5143046cab314ddf"
+ hash: "1d70a05fce3a05477e21d22b127ae96a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "d9ec76b2c07077b5b6d6c3777d116164"
+ hash: "913448213a07f6c8427c8e310d2026de"
}
Frame {
msec: 1520
- hash: "ef3ba6c27d9b28de829360985505c185"
+ hash: "51bef5ae52977a935b66af4baf1da4e6"
}
Frame {
msec: 1536
- hash: "8eafd8f9aea08c172f40de3c4f2b3b59"
+ hash: "367bc25f868c23005d7fe903a9ea681b"
}
Frame {
msec: 1552
- hash: "2329d5b8182794bb8375f0de204c9b16"
+ hash: "3c25181652e788d128ed571ca4fea0b1"
}
Frame {
msec: 1568
- hash: "e6b25cf1a8c6858f6937e649b1315955"
+ hash: "0218f939ff2b8c0bc22a537ed0f053f0"
}
Frame {
msec: 1584
- hash: "3aeedff600509a138b0de31e10bbdd7b"
+ hash: "a3b765a823b2b3811273a1be90850533"
}
Frame {
msec: 1600
- hash: "0636dee0ddc551ce8ecf3a6c6300b020"
+ hash: "2a42a29774eb4f962d299f8c2c213d55"
}
Frame {
msec: 1616
- hash: "77f5b0dfdf0c631cf863be60bd09db9c"
+ hash: "1f0ad54d0fe8fc27cadbaaeaa37364e0"
}
Frame {
msec: 1632
- hash: "2e86762371ae933546e8b2154c78f74b"
+ hash: "04d6028d1b1a1178e5bf774db8eef2c6"
}
Frame {
msec: 1648
- hash: "1051ec29f94c31b257a5b1c922f8e93f"
+ hash: "c325e46e89e8df04e2c3d8bf111c5f09"
+ }
+ Frame {
+ msec: 1664
+ hash: "70e6223ce16a797e2c56e21ad74b188b"
+ }
+ Frame {
+ msec: 1680
+ hash: "0fb8762fd28564b84b83c17d749a3645"
}
Key {
type: 6
@@ -505,76 +561,84 @@ VisualTest {
count: 1
}
Frame {
- msec: 1664
- hash: "5c60da876c8cc9fa334905b5fc7c2a3d"
- }
- Frame {
- msec: 1680
- hash: "c0b0cddd62853ac3499b7ada200d206a"
- }
- Frame {
msec: 1696
- hash: "5bd588d64917f942e0f5ea1553acbf63"
+ hash: "ef5d19b59792ea8822e2391fe0d91dbd"
}
Frame {
msec: 1712
- hash: "bc5744ef5c81b7d5b365bf977f909be5"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "70ad15030164be8afbb4ab22d1ae5f5f"
}
Frame {
msec: 1728
- hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c"
+ hash: "a5dfb8bd4b681e0d8d2c082821a2a976"
}
Frame {
msec: 1744
- hash: "708799d2d834302c659958701e217b37"
+ hash: "864781fbb8673b1e603df015f2d88601"
}
Frame {
msec: 1760
- hash: "360d75bcc178bcfd4f93741d653fd821"
+ hash: "0bdb6a155cdd14f4dce9fde3c5116dde"
}
Frame {
msec: 1776
- hash: "1cfe03528b1cd84e69efc02b9677c748"
+ hash: "5421f521a9bdccc8478fcee97e0dbc99"
}
Frame {
msec: 1792
- hash: "6f45d7c37f1fb90138011b2af24aaf1e"
+ hash: "c5f29693dd017932767f37e2fb2f22f2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1808
- hash: "ba164375e7ac18cf2e1e613498158fbf"
+ hash: "b5e8abeaec33407e673f8021212528b1"
}
Frame {
msec: 1824
- hash: "14052b9da9e17a6f06fed05d4ed82b9c"
+ hash: "917c968e5ee8f0b25fdb175719d7dbfa"
}
Frame {
msec: 1840
- hash: "aac15ce22bfe38f44a46e4644913f144"
+ hash: "56495c63676b9f73004e76e38d60567e"
}
Frame {
msec: 1856
- hash: "c63aa02ba29ea18334b188185690948d"
+ hash: "86f1ccdd7ff408c5b141d79797eea1fa"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1872
- hash: "11ed187ccd4c2221f166851c08b6b467"
+ hash: "9e9b32a9f71ab1aa4e87ddc323ccda03"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "3543bd4e538981d4bb2c2313c9663a53"
+ hash: "360aef37452ce8f045659c227285cb82"
}
Frame {
msec: 1904
- hash: "a05fa618b094bde2b54b730f513bcabe"
+ hash: "805949377c620fa4310aa4328eba1f23"
}
Frame {
msec: 1920
@@ -582,527 +646,623 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "52fc4a32526a74f9a04d8795c7a47c6e"
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
}
Frame {
msec: 1952
- hash: "17623e1b0ffca3b7736ce930f078dbe0"
+ hash: "835f6f723577071461e41da1fd2e990a"
}
Frame {
msec: 1968
- hash: "75226dac5691627851d83c7370d7603c"
- }
- Key {
- type: 7
- key: 16777249
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
}
Frame {
msec: 1984
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2000
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2016
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2032
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2048
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "75226dac5691627851d83c7370d7603c"
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
}
Frame {
msec: 2080
- hash: "17623e1b0ffca3b7736ce930f078dbe0"
+ hash: "835f6f723577071461e41da1fd2e990a"
}
Frame {
msec: 2096
- hash: "52fc4a32526a74f9a04d8795c7a47c6e"
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
}
Frame {
msec: 2112
- hash: "89f2d3b4441faee557b8d5f44e1e1e18"
+ hash: "627206a252bd6fcbf57d9f1cde0506bb"
}
Frame {
msec: 2128
- hash: "a05fa618b094bde2b54b730f513bcabe"
+ hash: "805949377c620fa4310aa4328eba1f23"
}
Frame {
msec: 2144
- hash: "3543bd4e538981d4bb2c2313c9663a53"
+ hash: "360aef37452ce8f045659c227285cb82"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "11ed187ccd4c2221f166851c08b6b467"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 2176
- hash: "c63aa02ba29ea18334b188185690948d"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 2192
- hash: "aac15ce22bfe38f44a46e4644913f144"
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
}
Frame {
msec: 2208
- hash: "14052b9da9e17a6f06fed05d4ed82b9c"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 2224
- hash: "ba164375e7ac18cf2e1e613498158fbf"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 2240
- hash: "6f45d7c37f1fb90138011b2af24aaf1e"
- }
- Frame {
- msec: 2256
- hash: "1cfe03528b1cd84e69efc02b9677c748"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Key {
type: 7
- key: 16777248
+ key: 16777236
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2256
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
+ }
+ Frame {
msec: 2272
- hash: "360d75bcc178bcfd4f93741d653fd821"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 2288
- hash: "708799d2d834302c659958701e217b37"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 2304
- hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 2320
- hash: "bc5744ef5c81b7d5b365bf977f909be5"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 2336
- hash: "5bd588d64917f942e0f5ea1553acbf63"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 2352
- hash: "c0b0cddd62853ac3499b7ada200d206a"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Key {
type: 6
- key: 16777236
- modifiers: 0
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
msec: 2368
- hash: "5c60da876c8cc9fa334905b5fc7c2a3d"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 2384
- hash: "136a103a893991b97ec09f373c68c5b9"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 2400
- hash: "b2181ce0165ee060e1a8b713027011a9"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 2416
- hash: "e4836bbaf1834658e3ec4bf54a619b53"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 2432
- hash: "3072492f5f72427c8d45cf3c5d3ff919"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2448
- hash: "d897cba896239c77df4f7adb93ad5def"
+ hash: "2d549b5fea734e47682415df1717e6a6"
}
Frame {
msec: 2464
- hash: "ec9867a95de6d6f4c0f92af567d73771"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "824c5960260dd3ed7527709ebfb06d27"
}
Frame {
msec: 2480
- hash: "06b72e3180eb946622e4592de0fa6f91"
+ hash: "258f034fe1e71f25a92e667e05f53e82"
}
Frame {
msec: 2496
- hash: "33f109c026eaefed113cc12db5912a19"
+ hash: "c432e758e19c44d788cb38df6e4c6d69"
}
Frame {
msec: 2512
- hash: "ce72c4b4470394dc1c4efd4d9de9907f"
+ hash: "a1856592208f9a00385b13c44e1c4503"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2528
- hash: "64ac1105ea10ae1f6401e8421731c606"
+ hash: "2b4d40a0555df0b86f52d13790185459"
}
Frame {
msec: 2544
- hash: "ef977bd74941d3506b8f3ee4b1f587ad"
+ hash: "b153143e6b16c47fa06663dc6b1034d6"
}
Frame {
msec: 2560
- hash: "9278de91e10788ae5a80399ff5372460"
+ hash: "ac52236c5d73aeae7c0834df1e6bd84e"
}
Frame {
msec: 2576
- hash: "ddaaf945a5f714b856ed5155f4e502b2"
+ hash: "136eeb348b0b96edc9aaf9fbea741973"
}
Frame {
msec: 2592
- hash: "f6bb6ba15d996345df04825da71c2cf3"
+ hash: "4f8a1dfa8906de2bcdfbf5c3b29fbf9b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2608
- hash: "466c78a5a5052b39b113adeda761da6c"
+ hash: "7dc9726df2d112b46f4d9dbe66d534c7"
}
Frame {
msec: 2624
- hash: "db650537d773e0d8a737a7bf5f408a5e"
+ hash: "f64086ca0e83fa8bb0fae28065260fdc"
}
Frame {
msec: 2640
- hash: "64be9f85869f19defada296343895a2b"
+ hash: "5237dd2b79d71bbfa0a0d3963a7f42b7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2656
- hash: "5ac6d9751bfadbc7aa064ca0b4d78b2b"
+ hash: "8dd435b577bb258979d33034885a8cd8"
}
Frame {
msec: 2672
- hash: "a088b351dcc6fc3a8d29256f3a2410c3"
+ hash: "2609c066b8f102b4189991bf7d01eaad"
}
Frame {
msec: 2688
- hash: "a16a77170a6c969042024fa0868da12d"
+ hash: "986fab22391264d04df9a55b18aee645"
}
Frame {
msec: 2704
- hash: "3a2509d0d3a314d2ed72f811f4af741e"
+ hash: "0256423680aa0843fe8ec84f5e68fc9b"
}
Frame {
msec: 2720
- hash: "484db4e1954048cad7eea48bfea08267"
- }
- Frame {
- msec: 2736
- hash: "ad0f84634c5f99ab62ab6d12ad8d8c6a"
- }
- Frame {
- msec: 2752
- hash: "d99b590307f6910963257a1c41c50120"
+ hash: "b822bdcad69aa868f48b2bbf2d62e297"
}
Key {
type: 6
key: 16777234
- modifiers: 0
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2736
+ hash: "14effed70ca60233be9b2f6d0a1b5e6c"
+ }
+ Frame {
+ msec: 2752
+ hash: "1abaf2c36a0fb9f04606c0e191d113cf"
+ }
+ Frame {
msec: 2768
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "cffb8ca29b0369d183d6461bf9e63fdf"
}
Frame {
msec: 2784
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "9378bebddb09036bec98ff7018dcf7c1"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "0c3823994ee8f838c26040118ba62622"
}
Frame {
msec: 2816
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "d374547f47adc81a18428c7a79cb9cf2"
}
Frame {
msec: 2832
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "449c2996a2d0e74f2300adad619700bc"
}
Frame {
msec: 2848
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "14379a320b6fc36de5d2a6776f1dc963"
}
Frame {
msec: 2864
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "cb010a99ffa3b6df26c6cd263a21cfcd"
}
Frame {
msec: 2880
image: "cursorDelegate.2.png"
}
- Key {
- type: 7
- key: 16777234
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
Frame {
msec: 2896
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "a445d23288d462009916e31f370a2068"
}
Frame {
msec: 2912
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "8b3f2811300830e837797056f262bec2"
}
Frame {
msec: 2928
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "2303a27e72334cae84b4fe51a62974ba"
}
Frame {
msec: 2944
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "f3a9f3e74d2d83e38aee78cab7209bd6"
}
Frame {
msec: 2960
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "ca4777127a535655f057af57cf3e8c7b"
}
Frame {
msec: 2976
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 2992
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3008
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3024
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3040
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3056
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3072
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "ca4777127a535655f057af57cf3e8c7b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3088
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "83cfb141f6b77fa062443a442a5b2e9e"
}
Frame {
msec: 3104
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "b3e262864238d03f988c9750cc74e48f"
}
Frame {
msec: 3120
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "6ed2086ae01be46f0684bbecc05484c4"
}
Frame {
msec: 3136
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "91f6dad8f05577af6e4f5f0aceb06b4b"
}
Frame {
msec: 3152
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "1bfb0c299c3c0db0518eaa54137c22b0"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3168
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "37cc96ef4b760faadf76cc471f6ba49a"
}
Frame {
msec: 3184
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "67c848bf93e845eaf5eebc9b8e57482c"
}
Frame {
msec: 3200
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "e3906ad9b1dfbd1170364c11ff4b286f"
}
Frame {
msec: 3216
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "24dd59673c5659e3bf6f52723e1bcd07"
}
Frame {
msec: 3232
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "4b694f05f147bcf901a16807d4e3ec7c"
}
Frame {
msec: 3248
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "9d9dbf34f6a67a49210caa249b8a1abb"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3264
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "5381cde4763aa45c97793124e42db6f5"
}
Frame {
msec: 3280
- hash: "de09380dd57c58ae99fbdba169a19975"
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
}
Frame {
msec: 3296
- hash: "bfc1b03df244839a012e8302dc07764f"
+ hash: "cc1767ec13803959333cd35bfb2d9119"
}
Frame {
msec: 3312
- hash: "d5f220e5337837ec0d07eb118e2f948e"
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
}
Frame {
msec: 3328
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
}
Frame {
msec: 3344
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
+ hash: "d08dc22ddc707316483f09b796ea0380"
}
Frame {
msec: 3360
- hash: "de3c911aec7e42557ece4bdcf02ce562"
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3376
- hash: "5e09b95292d6d0afe76a5015b0ccebf1"
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
}
Frame {
msec: 3392
- hash: "59d2fb8e21802d256b11730b31919fb3"
+ hash: "700bd56ecea646bbec2017007bbb5b84"
}
Frame {
msec: 3408
- hash: "a494b3b25a23daa858034ebccce0d1c7"
+ hash: "874a65c2069f4ba89301c129f884f217"
}
Frame {
msec: 3424
- hash: "2ff4bd5602c34c020162f0503d625049"
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
}
Frame {
msec: 3440
- hash: "e715c2a82745829665226df78598b819"
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
}
Frame {
msec: 3456
- hash: "47ad557d366536ad457f6866241dba93"
+ hash: "87c129a5bf08536d3fca90375283e26b"
}
Frame {
msec: 3472
- hash: "70aedcda6c93875d18ee111d8a19549e"
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
}
Frame {
msec: 3488
- hash: "c3487c7c7dcd392e7eacb74045dd4143"
+ hash: "61a3475bef5fd276b836cf3483526f57"
}
Frame {
msec: 3504
- hash: "56db24ad686d34e75a2d184e5b1da2a9"
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3520
- hash: "436349a8371597a74404428983cd894c"
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
}
Frame {
msec: 3536
- hash: "6e1bb59ec518614a0414092f4939d5ad"
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3552
- hash: "f0aa02772df579b921e0c68f794d2327"
+ hash: "f243d823fc9977e69a008010d8db8a01"
}
Frame {
msec: 3568
- hash: "09ea1462da333c2aeaaa01e9e4f8d54b"
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
}
Frame {
msec: 3584
- hash: "46d23d8472ce833591dcff548a644288"
+ hash: "bd5b206097f30dfce884a8c74856857d"
}
Frame {
msec: 3600
- hash: "a7566d5d35a89078bb378bf3f6c78e13"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
}
Frame {
msec: 3616
- hash: "4c5f7155b20e34a5627387cdc466e890"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 3632
- hash: "e9b98922327c412db0116a56283d3c86"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 3648
- hash: "29ffede9c16c34ead5f291e69e388084"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 3664
- hash: "16958b8f0b1dbdc15333d99bd1349124"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 3680
- hash: "3408f8d6e4d6ef34d4d5a0cb51090c4c"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Frame {
msec: 3696
- hash: "b32b099b260789266d0a3c0edd61c04e"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 3712
- hash: "4dd3617b25e8b95cf2ec31db8b3bb80f"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 3728
- hash: "46b42a08c59909f067810d1984f7a04e"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 3744
- hash: "ab8c505601c381e8a44fa7b6eea6579d"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 3760
- hash: "73f56e6e1d2cbf3f559d679eb2c15529"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 3776
- hash: "b230c56da330823d7d7f7e081c304acb"
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
}
Frame {
msec: 3792
- hash: "9f3cbd0023dbd78ba4951c26f71c7d5d"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Frame {
msec: 3808
- hash: "9e9b11cf2695dd02c1ab175ff194f491"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 3824
- hash: "8fa6f8eb5deb0ab95c3454e5812ada1d"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 3840
@@ -1110,271 +1270,239 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "0b6b24ae8df7c3aa9abb48edb6619d8a"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 3872
- hash: "45805295dd2482fdf21ac8c9bfe47869"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 3888
- hash: "4893cd31a730d786f075edfd0afc0ad9"
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
}
Frame {
msec: 3904
- hash: "a3fbfe732568f5cf6e63809fd7e0c32e"
+ hash: "69720bcca91f99f229aebc74c5e74261"
}
Frame {
msec: 3920
- hash: "21d3327710d51f714e84b5a28df13e4f"
+ hash: "41d8f4031223f7c833d50208e231964a"
}
Frame {
msec: 3936
- hash: "ea065ab48f27f60505eab36debee3faa"
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
}
Frame {
msec: 3952
- hash: "fe4c2e368d2110374b7ba9e30f330713"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 3968
- hash: "723281f6c1a3f03cf170e4de93fa4dbf"
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 3984
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4000
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4016
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4032
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4048
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4064
- hash: "723281f6c1a3f03cf170e4de93fa4dbf"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 4080
- hash: "c779e46a89c3c9d0f8234a3192175b60"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 4096
- hash: "f223cfeba468e161943b24ac960196de"
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
}
Frame {
msec: 4112
- hash: "dd2f21f063d055edc23c874380149067"
+ hash: "41d8f4031223f7c833d50208e231964a"
}
Frame {
msec: 4128
- hash: "af580b32b67117eb062bbcefe262c719"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "69720bcca91f99f229aebc74c5e74261"
}
Frame {
msec: 4144
- hash: "991f76d483e033024932790f85bb3c5d"
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
}
Frame {
msec: 4160
- hash: "3d8aa66ab9533d14a468f0869b457033"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 4176
- hash: "a5540bd5d088ab1201b5f22b32579d7c"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 4192
- hash: "e0844f30578fef2cdcee4e4ff28ab7cf"
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
}
Frame {
msec: 4208
- hash: "710e7022b65a9b3fd3a7372bf7f37c7a"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 4224
- hash: "db553c856b11db7e6feb38b9d562a804"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 4240
- hash: "6ba56c4ec6e903b0d82235c230ed78cb"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Frame {
msec: 4256
- hash: "786de35a11c3fc1a228392195f509c28"
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
}
Frame {
msec: 4272
- hash: "cc6307597cea821b63391fc9bdbe038b"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 4288
- hash: "73d49e4d0bef103e11820d888bef0368"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 4304
- hash: "b2ed6ebf66252463326c2f220b3992fa"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 4320
- hash: "129b5bc6d55621e2366fc0d80f105df2"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 4336
- hash: "ae8fe55fa9b497cd6eff18a517c301d8"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 4352
- hash: "535210bd848a20db2966b06278198e07"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Frame {
msec: 4368
- hash: "1f4ea7783b5c60bfc424c73cea07a3a0"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 4384
- hash: "5b61f2e9308c4de2864bb7cf133ce545"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 4400
- hash: "f641f87e9556ecfd24f0f0a772295e52"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 4416
- hash: "36f28574c0b042647bc064d75afa9fbc"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 4432
- hash: "dba2ca165b8ab35113b8ec127b204ae9"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
}
Frame {
msec: 4448
- hash: "56324b95f63eabba718df588159f374d"
+ hash: "bd5b206097f30dfce884a8c74856857d"
}
Frame {
msec: 4464
- hash: "af65d67fef3c743e31acca03716040c4"
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
}
Frame {
msec: 4480
- hash: "105481b5becd127af4c28961d900148c"
+ hash: "f243d823fc9977e69a008010d8db8a01"
}
Frame {
msec: 4496
- hash: "4859d6bf9c456e52fd463e4c2f68d7f6"
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
}
Frame {
msec: 4512
- hash: "21c0958bd3c6a1056bb062165c9bc18b"
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
}
Frame {
msec: 4528
- hash: "287d258a79f45c26c92c69cce6b1a2f3"
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
}
Frame {
msec: 4544
- hash: "deabc5c7dd111adcb253eb833f118764"
+ hash: "61a3475bef5fd276b836cf3483526f57"
}
Frame {
msec: 4560
- hash: "4bad7380f6b645c551edbe06ff67cac9"
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
}
Frame {
msec: 4576
- hash: "67fc71c16d0b9405c35590bafdc5ea40"
- }
- Key {
- type: 6
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "87c129a5bf08536d3fca90375283e26b"
}
Frame {
msec: 4592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
}
Frame {
msec: 4608
- hash: "23edee3af8f1904558863d37c520555a"
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
}
Frame {
msec: 4624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "874a65c2069f4ba89301c129f884f217"
}
Frame {
msec: 4640
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
+ hash: "700bd56ecea646bbec2017007bbb5b84"
}
Frame {
msec: 4656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
}
Frame {
msec: 4672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
}
Frame {
msec: 4688
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
+ hash: "d08dc22ddc707316483f09b796ea0380"
}
Frame {
msec: 4704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
}
Frame {
msec: 4720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
}
Frame {
msec: 4736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
+ hash: "cc1767ec13803959333cd35bfb2d9119"
}
Frame {
msec: 4752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
}
Frame {
msec: 4768
- hash: "fd3fd655785c4e3c470f742451e3470f"
+ hash: "5381cde4763aa45c97793124e42db6f5"
}
Frame {
msec: 4784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
+ hash: "99940d6744ac1245f82d62f08c371285"
}
Frame {
msec: 4800
@@ -1382,1998 +1510,42 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
+ hash: "77bbed46c7eb023252cdd80d0a15f38a"
}
Frame {
msec: 4832
- hash: "36b65658073ac2687dbd88ec7a408a98"
+ hash: "36ee4da72825e96d5f670c94865a30d8"
}
Frame {
msec: 4848
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
+ hash: "c64d56c1b7df0a5c63ab8ff08ae6daf9"
}
Frame {
msec: 4864
- hash: "c11cfcfda6f161d058a3d9e93349b578"
+ hash: "942e038a3426fa318212a8f245141225"
}
Frame {
msec: 4880
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
+ hash: "c033ebaee12dd8fe953e91160f986c3d"
}
Frame {
msec: 4896
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
+ hash: "07e64024cf7eda082297f6f83dba8067"
}
Frame {
msec: 4912
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
}
Frame {
msec: 4928
- hash: "3cc8791e419986e1e913d4e153243fb2"
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
}
Frame {
msec: 4944
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
}
Frame {
msec: 4960
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 4976
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 4992
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5008
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5024
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5056
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5072
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 5088
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 5104
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 5120
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 5136
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 5152
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 5168
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 5184
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 5200
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 5216
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 5232
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 5248
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 5264
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 5280
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 5296
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 5312
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 5328
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 5344
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 5360
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 5376
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 5392
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 5408
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 5424
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Frame {
- msec: 5440
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Frame {
- msec: 5456
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Frame {
- msec: 5472
- hash: "679ee2b26a118ab53a84fa116de09edf"
- }
- Frame {
- msec: 5488
- hash: "b9dcdd88fba70636cbcae160edcc0136"
- }
- Frame {
- msec: 5504
- hash: "90af75eeef63ae67e9f6ff1a61d7cca3"
- }
- Frame {
- msec: 5520
- hash: "29d80ae32451c24b655c4d1fd01d3aa1"
- }
- Frame {
- msec: 5536
- hash: "c73fe137644cbc006d0b5274b72faa46"
- }
- Frame {
- msec: 5552
- hash: "8a4d76ae60f5d720a382cced2f6a2b5e"
- }
- Frame {
- msec: 5568
- hash: "a1efa0d424d568d338c6db9fc095c2fb"
- }
- Frame {
- msec: 5584
- hash: "205cafcabb29b78a6db3dcaf44a74ab6"
- }
- Frame {
- msec: 5600
- hash: "7507a3d2158d4cc68454c85922526871"
- }
- Frame {
- msec: 5616
- hash: "7135a6a7999e82cb81e39228805332ee"
- }
- Frame {
- msec: 5632
- hash: "ac2b714b5f32d2b911f31690d7082dc1"
- }
- Frame {
- msec: 5648
- hash: "5cb1ae6d86aafdf11284480c81b939dc"
- }
- Frame {
- msec: 5664
- hash: "ac705840cc94eb4af7a52d62649d0157"
- }
- Frame {
- msec: 5680
- hash: "8c2ebcd80e26ac7b9d25be486f54c4ce"
- }
- Frame {
- msec: 5696
- hash: "12b84aa02dbbab3592d3eb3cb6884b41"
- }
- Frame {
- msec: 5712
- hash: "675043ddde6ed65a3ec4ed093be1e760"
- }
- Frame {
- msec: 5728
- hash: "478126aeef5ddae9c0a77d08294cf3f2"
- }
- Frame {
- msec: 5744
- hash: "0b43af73d91a500ccdf27b4347b9bc47"
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Frame {
- msec: 5776
- hash: "a6d8708d08bedf0cab5230d6f2936936"
- }
- Frame {
- msec: 5792
- hash: "02e0646024aeef6f01b7541b15267baa"
- }
- Frame {
- msec: 5808
- hash: "da6717c94b46ad7a647c445c06314b0d"
- }
- Frame {
- msec: 5824
- hash: "2ed12d49d72884160ebbf6b6d0e15a9d"
- }
- Frame {
- msec: 5840
- hash: "a1fbc3333b7f742a8336a6fcbad156c9"
- }
- Frame {
- msec: 5856
- hash: "25cac33299d58cdd7775e8b75410085e"
- }
- Frame {
- msec: 5872
- hash: "5d81833eb342f632945c0571e18cb1f9"
- }
- Frame {
- msec: 5888
- hash: "23f6f2a7d971494af43a0fb97dbf8fb5"
- }
- Frame {
- msec: 5904
- hash: "216b70d02a4685dc07258454bb4e7c85"
- }
- Frame {
- msec: 5920
- hash: "1e06742af58d6e63facdc599c46e11b1"
- }
- Frame {
- msec: 5936
- hash: "00f8ac72d3794ed8d66db987402ecde0"
- }
- Frame {
- msec: 5952
- hash: "42ab5f162acba94f563823f5be1e37d2"
- }
- Frame {
- msec: 5968
- hash: "3272b97fdc54eb9f3590e7bbe4ac457d"
- }
- Frame {
- msec: 5984
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6000
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6016
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6032
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6048
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6064
- hash: "3272b97fdc54eb9f3590e7bbe4ac457d"
- }
- Frame {
- msec: 6080
- hash: "42ab5f162acba94f563823f5be1e37d2"
- }
- Frame {
- msec: 6096
- hash: "00f8ac72d3794ed8d66db987402ecde0"
- }
- Frame {
- msec: 6112
- hash: "1e06742af58d6e63facdc599c46e11b1"
- }
- Frame {
- msec: 6128
- hash: "216b70d02a4685dc07258454bb4e7c85"
- }
- Frame {
- msec: 6144
- hash: "23f6f2a7d971494af43a0fb97dbf8fb5"
- }
- Frame {
- msec: 6160
- hash: "5d81833eb342f632945c0571e18cb1f9"
- }
- Frame {
- msec: 6176
- hash: "25cac33299d58cdd7775e8b75410085e"
- }
- Frame {
- msec: 6192
- hash: "a1fbc3333b7f742a8336a6fcbad156c9"
- }
- Frame {
- msec: 6208
- hash: "2ed12d49d72884160ebbf6b6d0e15a9d"
- }
- Frame {
- msec: 6224
- hash: "da6717c94b46ad7a647c445c06314b0d"
- }
- Frame {
- msec: 6240
- hash: "02e0646024aeef6f01b7541b15267baa"
- }
- Frame {
- msec: 6256
- hash: "a6d8708d08bedf0cab5230d6f2936936"
- }
- Frame {
- msec: 6272
- hash: "68d459091a85f24ece39a207e395039b"
- }
- Frame {
- msec: 6288
- hash: "0b43af73d91a500ccdf27b4347b9bc47"
- }
- Frame {
- msec: 6304
- hash: "478126aeef5ddae9c0a77d08294cf3f2"
- }
- Frame {
- msec: 6320
- hash: "675043ddde6ed65a3ec4ed093be1e760"
- }
- Frame {
- msec: 6336
- hash: "12b84aa02dbbab3592d3eb3cb6884b41"
- }
- Frame {
- msec: 6352
- hash: "8c2ebcd80e26ac7b9d25be486f54c4ce"
- }
- Frame {
- msec: 6368
- hash: "ac705840cc94eb4af7a52d62649d0157"
- }
- Frame {
- msec: 6384
- hash: "5cb1ae6d86aafdf11284480c81b939dc"
- }
- Frame {
- msec: 6400
- hash: "ac2b714b5f32d2b911f31690d7082dc1"
- }
- Frame {
- msec: 6416
- hash: "7135a6a7999e82cb81e39228805332ee"
- }
- Frame {
- msec: 6432
- hash: "7507a3d2158d4cc68454c85922526871"
- }
- Frame {
- msec: 6448
- hash: "205cafcabb29b78a6db3dcaf44a74ab6"
- }
- Frame {
- msec: 6464
- hash: "a1efa0d424d568d338c6db9fc095c2fb"
- }
- Frame {
- msec: 6480
- hash: "8a4d76ae60f5d720a382cced2f6a2b5e"
- }
- Frame {
- msec: 6496
- hash: "c73fe137644cbc006d0b5274b72faa46"
- }
- Frame {
- msec: 6512
- hash: "29d80ae32451c24b655c4d1fd01d3aa1"
- }
- Frame {
- msec: 6528
- hash: "90af75eeef63ae67e9f6ff1a61d7cca3"
- }
- Frame {
- msec: 6544
- hash: "b9dcdd88fba70636cbcae160edcc0136"
- }
- Frame {
- msec: 6560
- hash: "679ee2b26a118ab53a84fa116de09edf"
- }
- Frame {
- msec: 6576
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Frame {
- msec: 6592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Frame {
- msec: 6608
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Frame {
- msec: 6624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 6640
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 6656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 6672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 271; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 270; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 269; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "bfc1b03df244839a012e8302dc07764f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 268; y: 107
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6752
- hash: "de09380dd57c58ae99fbdba169a19975"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6768
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6784
- hash: "4220dde85eb1c027366efd0798927e8d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 265; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6800
- hash: "512b9746ae4482557b8cef9f99905954"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 263; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 261; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6816
- hash: "e7346d8f223684143a0940def878b874"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 259; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6832
- hash: "7e7382302681cd29a2c6959a3a704660"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6848
- hash: "ef8f7dfdd4e70100ecaecca4055d8f52"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 250; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 243; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6864
- hash: "f5cacabb78b88c31af1a1b1e6f60069b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 235; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6880
- hash: "b016ef2306b0a721df86b6916e7953e4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6896
- hash: "a78e9b0b93569b77b0659c771336971a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6912
- hash: "b957ab07bcbaeffca963d9148130a965"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6928
- hash: "140bc4b078bac52d6903bdfdfc35a94c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6944
- hash: "047c3a7403ae88cceb7fc875793d1ed8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 181; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 172; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6960
- hash: "03d48446aaf94450a3a9a8f1e956493f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6976
- hash: "6672e47aa6a975fbd82d2fe5bc99bbaf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6992
- hash: "3bc73489d06e446d4c96117756a59227"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7008
- hash: "aed995a61df4a1c189ef2962000d02de"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7024
- hash: "aed995a61df4a1c189ef2962000d02de"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 123; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7040
- hash: "74f0bbe92a23146fbdbd365edd5741c8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 118; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7056
- hash: "74f0bbe92a23146fbdbd365edd5741c8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7072
- hash: "6456208c6367687b8dc701791eccd7d4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 108; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7088
- hash: "376b59dc6e00a51bc9f2d4cfa2718e57"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7104
- hash: "fb7bc3401f70ce6eee131c9c7510e1fe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7120
- hash: "675a419f0cd8351d6b2a65daf7d2707a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7136
- hash: "2f7951abac64e0f10d3b66d04966b6e9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7152
- hash: "1f8daa78c58ae11ec105bd87681c1762"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7168
- hash: "23ab196ed43219c26d94431698f6ac8d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7184
- hash: "9581e2695f4818e063ec032cb5bb6b7f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7200
- hash: "6752cd7c5383e0ccc9b08f79db6ac310"
- }
- Frame {
- msec: 7216
- hash: "51f5675e0fb1410c5a8ec03a86b42681"
- }
- Frame {
- msec: 7232
- hash: "c3c23213b2649b5ccabd8e420a251e00"
- }
- Frame {
- msec: 7248
- hash: "02ceab31171fe983a10e862b53aea16f"
- }
- Frame {
- msec: 7264
- hash: "8a774dda9a1bc16bd270724e570daf20"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7280
- hash: "2b6b892cebfcce14a9db485fecf16703"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7296
- hash: "8b8e6d3362f018cbd9b487f03cfb7a22"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "a8477a9429633384073618cc60841e6c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "59558c6665b73f02809259e039b4423a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "93540071bab8a970a929d209f628970e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "78cdb0a05583150ea33040d32d95de47"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "4b1ee34985d3f5b8dd4355678ad39af4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "5484e7699c388eabf0311de49706397f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 113; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 117; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "dee6c2380f398323002ebb43a38d27e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "d66a27728e7fd3c616842613a034c5a0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "5f851161f99fcf5b67cbe008a3faf411"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "013e949285cfa9edb34ab14e26753230"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "5b50acdcbd49969bcce2cfab6f9af380"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "d4aeb24211007cfc01512d289ae7aa01"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "6f1b7e12bbf54586e9a48989145f3274"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "0e09c7468bc03770c6cc7f0fba1ee9c0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "0fc4522bbf1a2e72002eb0a3c7224e1f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 165; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "91727292aaa314bf263c618a577b7f74"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "a78fb2545d11c521a50a10fd2d1700a7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "c207a291b47628921125acd4b8ed5ea8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "9a8e3df504ba36e82c51d71a3f5ce268"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "8cd9da94db91da50ae457d41866a32ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "9e52b6fdc3ce4ad9c5986e47ffa762fc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 193; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "a1aff55bffb76bd4e2ac9ee482a03978"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "ba52431b72683cfbf0cc795a2407630e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 211; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "eb5a19fbfbdceef233ed3c86c782817c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "7c8f3f2e96fa6a63867cb716061c8c77"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "96b0007f857aa19b41d184a7c7931f69"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "96201712b9ffbd9bfbebb5a5b7e23aba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "d75e13a7715d5c329a47fdb818dfdbe5"
- }
- Frame {
- msec: 7776
- hash: "c8fa0c2d9e6aa1f3a33e76a31534359d"
- }
- Frame {
- msec: 7792
- hash: "03b11cc517f84c58a681906fdda98347"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "74cdf8af5d56216ad422951a56661536"
- }
- Frame {
- msec: 7824
- hash: "fcac2575aad872eada547508f312f09c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "7d76aec1f29d2d6745585be8ef113be5"
- }
- Frame {
- msec: 7856
- hash: "2b4fe4f39433671a9bc440efa1c589a8"
- }
- Frame {
- msec: 7872
- hash: "55a166f920e76173e14121d848a11aa0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "f764df8ecd68161d3529800e922254f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "749caf21947e915b163f72e6fd190032"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "c350910df8ae4fea573a20d334fd3401"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7936
- hash: "d177da450f1d380a6d2406e2393b9582"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7952
- hash: "bf3da78d7cac19daf2d5150b77840b1e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7968
- hash: "22e337b0b81b18045a205355da6981ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7984
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8000
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8016
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Frame {
- msec: 8032
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Frame {
- msec: 8048
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8064
- hash: "22e337b0b81b18045a205355da6981ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "bf3da78d7cac19daf2d5150b77840b1e"
- }
- Frame {
- msec: 8096
- hash: "d177da450f1d380a6d2406e2393b9582"
- }
- Frame {
- msec: 8112
- hash: "c350910df8ae4fea573a20d334fd3401"
- }
- Frame {
- msec: 8128
- hash: "749caf21947e915b163f72e6fd190032"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8144
- hash: "f764df8ecd68161d3529800e922254f4"
- }
- Frame {
- msec: 8160
- hash: "55a166f920e76173e14121d848a11aa0"
- }
- Frame {
- msec: 8176
- hash: "2b4fe4f39433671a9bc440efa1c589a8"
- }
- Frame {
- msec: 8192
- hash: "7d76aec1f29d2d6745585be8ef113be5"
- }
- Frame {
- msec: 8208
- hash: "fcac2575aad872eada547508f312f09c"
- }
- Frame {
- msec: 8224
- hash: "74cdf8af5d56216ad422951a56661536"
- }
- Frame {
- msec: 8240
- hash: "03b11cc517f84c58a681906fdda98347"
- }
- Frame {
- msec: 8256
- hash: "c8fa0c2d9e6aa1f3a33e76a31534359d"
- }
- Frame {
- msec: 8272
- hash: "d75e13a7715d5c329a47fdb818dfdbe5"
- }
- Frame {
- msec: 8288
- hash: "96201712b9ffbd9bfbebb5a5b7e23aba"
- }
- Frame {
- msec: 8304
- hash: "96b0007f857aa19b41d184a7c7931f69"
- }
- Frame {
- msec: 8320
- hash: "bff5b731de7c93fa0cdcefbf99beeb5e"
- }
- Frame {
- msec: 8336
- hash: "ce76704964873be1bc6a324d8a3381be"
- }
- Frame {
- msec: 8352
- hash: "a31b4f2a3defc968098029328de9352d"
- }
- Frame {
- msec: 8368
- hash: "295e3f40a511bd30e1c6599ead93619a"
- }
- Frame {
- msec: 8384
- hash: "3cd74da8b04de8ec7446490dea0e4e6c"
- }
- Frame {
- msec: 8400
- hash: "78a7db5a316609136d1b873d20d5dd3e"
- }
- Frame {
- msec: 8416
- hash: "0f176fb11bfe26f872ef7103011df9e6"
- }
- Frame {
- msec: 8432
- hash: "47866013e79bc77607e0c40bf8457bed"
- }
- Frame {
- msec: 8448
- hash: "5f35467db5c5e0baf5caff90b97e2d0c"
- }
- Frame {
- msec: 8464
- hash: "fefa89763cc1ad8323fdf37b1f5f63d3"
- }
- Frame {
- msec: 8480
- hash: "b9823f88fa51944075ce6dedd695f097"
- }
- Frame {
- msec: 8496
- hash: "72521de21fcc57d6ccf16350b0df8eee"
- }
- Frame {
- msec: 8512
- hash: "fcd591a2e56ba5efa95b315b7bd10532"
- }
- Frame {
- msec: 8528
- hash: "5d437d59995741030e0975829712f85d"
- }
- Frame {
- msec: 8544
- hash: "e7189d174b181985b6aef10b8642726f"
- }
- Frame {
- msec: 8560
- hash: "cefadbae14e573f6c83d07ffc3a5152e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 277; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8576
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 277; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8608
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 8672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 8688
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 8704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 8720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 8736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 8752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 8768
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 8784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 8800
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 8816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 8832
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 8848
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 8864
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 8880
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 8896
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 8912
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 8928
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 8944
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 8960
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 8976
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 8992
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9008
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9024
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9056
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9072
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 9088
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 9104
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 9120
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 9136
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 9152
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 9168
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 9184
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 9200
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 9216
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 9232
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 9248
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 9264
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 9280
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 9296
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 9312
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 9328
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 9344
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 9360
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 9376
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 9392
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 9408
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 9424
- hash: "23edee3af8f1904558863d37c520555a"
+ hash: "87ca0584879b25336a1023ac3252fc9a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
deleted file mode 100644
index 2b45a061da..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
deleted file mode 100644
index 1f5bae01c3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
deleted file mode 100644
index cb2b5a4aa3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png
deleted file mode 100644
index 87c2e07ec3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
index 5d11403232..83ec088a79 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
+import "../shared" 1.0
-Item{
+Item {
height: 50; width: 200
- Column{
+ Column {
//Not an exhaustive echo mode test, that's in QLineEdit (since the functionality is in QLineControl)
- TextInput{ id: main; focus: true; echoMode: TextInput.Password; passwordCharacter: '.' }
- Text{ text: main.text }
+ TestTextInput { id: main; focus: true; echoMode: TextInput.Password; passwordCharacter: '.' }
+ TestText { text: main.text }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
index 17e13fd31f..f36a752ff2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
@@ -1,38 +1,40 @@
import QtQuick 1.0
+import "../shared" 1.0
Item{
width:600;
height:300;
- Column{
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ Column {
+ //Because they have auto width, these three should look the same
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignLeft;
}
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignHCenter;
}
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignRight;
}
Rectangle{ width: 600; height: 10; color: "pink" }
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignLeft;
}
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignHCenter;
}
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignRight;
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
index 318af0f7f9..758717ea2b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
@@ -3,8 +3,8 @@ import QtQuick 1.0
Rectangle{
width: 600
height: 200
- Column{
- LineEdit{text: 'Hello world'}
- LineEdit{text: 'Hello underwhelmingly verbose world'; width: 80; height: 24;}
+ Column {
+ LineEdit {text: 'Hello world'}
+ LineEdit {text: 'Hello underwhelmingly verbose world'; width: 80; height: 24;}
}
}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png
new file mode 100644
index 0000000000..2ca5d2821d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml
new file mode 100644
index 0000000000..116ab2ae35
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "GradientRect.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png b/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png
new file mode 100644
index 0000000000..3eb9a8d52f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml b/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml
new file mode 100644
index 0000000000..72141c830c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "MyRect.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
index 3b7970d24e..391e76051a 100644
--- a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
+++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
index 7c42d1366a..9fc073caf7 100644
--- a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
+++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
@@ -6,282 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 32
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 48
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 64
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 80
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 96
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 112
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 128
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 144
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 160
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 176
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 192
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 208
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 224
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 240
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 256
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 272
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 288
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 304
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 320
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 336
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 352
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 368
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 384
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 400
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 416
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 432
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 448
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 464
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 480
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 496
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 512
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 528
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 544
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 560
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 576
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 592
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 608
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 624
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 640
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 656
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 672
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 688
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 704
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 720
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 736
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 752
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 768
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 784
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 800
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 816
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 832
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 848
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 864
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 880
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 896
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 912
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 928
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 944
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 960
image: "rect-painting.0.png"
}
- Frame {
- msec: 976
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 992
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1008
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1024
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1040
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1056
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1072
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1088
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/basic1.qml
index 7f1ba84c26..5d994b96a0 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic1.qml
@@ -1,25 +1,29 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
- Row {
- Repeater {
+ color: "white"
+ width: 120
+ height: 240
+ id: page
+ Column{
+ Repeater{
delegate: Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/basic2.qml
index b10420cc7b..ea14e92e21 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic2.qml
@@ -1,29 +1,33 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
Component {
id: delegate
Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
- Row {
- Repeater {
+ Column{
+ Repeater{
delegate: delegate
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/basic3.qml
index a296801af3..0193db30c0 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic3.qml
@@ -1,27 +1,31 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
ListModel {
- id: dataSource
+ id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
- Row {
- Repeater {
- model: dataSource
+ Column{
+ Repeater{
+ model: model
delegate: Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/basic4.qml
index fa858356cf..c7c0d29682 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic4.qml
@@ -1,32 +1,36 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
ListModel {
- id: dataSource
+ id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
Component {
id: delegate
Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
- Row {
- Repeater {
- model: dataSource
+ Column{
+ Repeater{
+ model: model
delegate: delegate
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml
deleted file mode 100644
index d11a9ddc64..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml
+++ /dev/null
@@ -1,323 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic1.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml
deleted file mode 100644
index 9b36f60165..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml
+++ /dev/null
@@ -1,331 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic2.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml
deleted file mode 100644
index 9752b72400..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml
+++ /dev/null
@@ -1,347 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic3.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1280
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1296
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1312
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1328
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml
deleted file mode 100644
index 8492621d27..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml
+++ /dev/null
@@ -1,419 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic4.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1280
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1296
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1312
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1328
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1344
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1360
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1376
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1392
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1408
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1440
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1456
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1472
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1488
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1504
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1520
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1536
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1552
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1568
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1584
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1600
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1616
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml
deleted file mode 100644
index f9880f830f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml
+++ /dev/null
@@ -1,323 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic1.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml
deleted file mode 100644
index cc980e1ec0..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml
+++ /dev/null
@@ -1,331 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic2.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml
deleted file mode 100644
index e395dde5ca..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml
+++ /dev/null
@@ -1,347 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic3.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1280
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1296
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1312
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1328
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml
deleted file mode 100644
index b0dc6b80c8..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml
+++ /dev/null
@@ -1,419 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic4.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1280
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1296
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1312
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1328
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1344
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1360
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1376
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1392
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1408
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1440
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1456
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1472
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1488
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1504
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1520
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1536
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1552
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1568
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1584
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1600
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1616
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
index f0950d71af..aad4858ca4 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
@@ -6,318 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic1.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
index fcf3feebce..373ad27cb3 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
@@ -6,326 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic2.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
index 8447aca3b9..f5dbf65a43 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
@@ -6,342 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic3.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1280
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1296
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1312
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1328
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
index eeb60fa218..5e494d13a7 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
@@ -6,414 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic4.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1280
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1296
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1312
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1328
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1344
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1360
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1376
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1392
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1408
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1440
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1456
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1472
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1488
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1504
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1520
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1536
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1552
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1568
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1584
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1600
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1616
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/shared/README b/tests/auto/declarative/qmlvisual/shared/README
new file mode 100644
index 0000000000..56a88ae57c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/README
@@ -0,0 +1,7 @@
+These components provide a standard set of what would otherwise be system dependant settings. These are
+-default font
+-default fontSize
+-cursor blink time (unblinking cursor)
+
+This should probably be replaced with a Test Style/Theme once QtComponents is done.
+Note that having multiple font loaders is probably quite inefficient, so don't use these for performance tests.
diff --git a/tests/auto/declarative/qmlvisual/shared/TestText.qml b/tests/auto/declarative/qmlvisual/shared/TestText.qml
new file mode 100644
index 0000000000..be401124ba
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestText.qml
@@ -0,0 +1,8 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+Text{
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml b/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml
new file mode 100644
index 0000000000..e19e4187e5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml
@@ -0,0 +1,14 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+TextEdit {
+ id: edit
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+ cursorDelegate: Rectangle {
+ width: 1;
+ color: "black";
+ visible: edit.cursorVisible
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml b/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml
new file mode 100644
index 0000000000..e01c2c2d03
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml
@@ -0,0 +1,14 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+TextInput {
+ id: inp
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+ cursorDelegate: Rectangle {
+ width: 1;
+ color: "black";
+ visible: parent.cursorVisible//bug that 'inp' doesn't seem to work?
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/Vera.ttf b/tests/auto/declarative/qmlvisual/shared/Vera.ttf
new file mode 100644
index 0000000000..58cd6b5e61
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/Vera.ttf
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/shared/qmldir b/tests/auto/declarative/qmlvisual/shared/qmldir
new file mode 100644
index 0000000000..4aebb393e4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/qmldir
@@ -0,0 +1,3 @@
+TestText 1.0 TestText.qml
+TestTextEdit 1.0 TestTextEdit.qml
+TestTextInput 1.0 TestTextInput.qml
diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
index a2d32737df..ce08eabe89 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -102,7 +102,7 @@ void tst_qmlvisual::visual_data()
QTest::addColumn<QString>("testdata");
QStringList files;
- if (qgetenv("QMLVISUAL_ALL") != "")
+ if (qgetenv("QMLVISUAL_ALL") != "0")
files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
else {
//these are newly added tests we want to try out in CI (then move to the stable list)
@@ -157,7 +157,7 @@ void tst_qmlvisual::visual()
QStringList arguments;
arguments << "-script" << testdata
- << "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure"
+ << "-scriptopts" << "play,testimages,testerror,testskip,exitoncomplete,exitonfailure"
<< file;
#ifdef Q_WS_QWS
arguments << "-qws";
@@ -278,7 +278,7 @@ void action(Mode mode, const QString &file)
break;
case Play:
arguments << "-script" << testdata
- << "-scriptopts" << "play,testimages,testerror,exitoncomplete"
+ << "-scriptopts" << "play,testimages,testerror,testskip,exitoncomplete"
<< file;
break;
case TestVisuals:
@@ -345,6 +345,12 @@ void usage()
"If you ONLY wish to use the 'error' property, you can record your test with\n"
"-recordnovisuals, or discard existing visuals with -removevisuals; the test\n"
"will then only fail on a syntax error, crash, or non-empty 'error' property.\n"
+ "\n"
+ "If your test has anything set to the 'skip' property on the root object then\n"
+ "test failures will be ignored. This allows for an opt-out of automated\n"
+ "aggregation of test results. The value of the 'skip' property (usually a\n"
+ "string) will then be printed to stdout when the test is run as part of the\n"
+ "message saying the test has been skipped.\n"
);
}
diff --git a/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml b/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
index b6280a6f17..1cd0c7b50e 100644
--- a/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
+++ b/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
@@ -1,9 +1,10 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
// The WebView size is determined by the width, height,
// preferredWidth, and preferredHeight properties.
Rectangle {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
id: rect
color: "white"
width: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml b/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml
deleted file mode 100644
index 612213877f..0000000000
--- a/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml
+++ /dev/null
@@ -1,115 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "b2d863e57dee2a297d038e18acc70f92"
- }
- Frame {
- msec: 32
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 48
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 64
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 80
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 96
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 112
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 128
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 144
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 160
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 176
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 192
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 208
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 224
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 240
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 256
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 272
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 288
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 304
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 320
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 336
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 352
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 368
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 384
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 400
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 416
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 432
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
index bee261877a..9ea2b64b24 100644
--- a/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Column {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
WebView {
id: webview
width: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
index 9e22e20255..0b78539cda 100644
--- a/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Column {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
WebView {
width: 200
height: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
index 68accedd38..7c3270425e 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
id: web
width: 200
height: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
index 4a0db01ac3..988ff6416b 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Grid {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
columns: 3
Rectangle {
Text { color: "green"; text: "Normal" }
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
index 3d50664de6..c465be8bca 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Grid {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
columns: 2
Rectangle {
Text { id: label; x:10; y:170; color: "green"; text: "No image" }
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
index ae5ddd2ceb..11de161f55 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
url: "test.html"
width: 300
height: 300
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
index 1617bdab40..a2b11ac295 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
- width: 200
- height: 250
- url: "resolution.html"
- webPageWidth: 400
- preferredWidth: 200
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
+ //width: 200
+ //height: 250
+ //url: "resolution.html"
+ // webPageWidth: 400
+ // preferredWidth: 200
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
index e46f726c60..c07f1e1ac6 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Rectangle {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
clip: true
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
index e9189dbd6f..cf5f50f9a8 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
@@ -1,7 +1,9 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
+ /*
width: 200 * zoomFactor
height: 250 * zoomFactor
scale: 1/zoomFactor
@@ -13,4 +15,5 @@ WebView {
NumberAnimation { from: 1; to: 5; duration: 2000 }
NumberAnimation { from: 5; to: 1; duration: 2000 }
}
+ */
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
index 52222beb9f..03c925f82b 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
@@ -1,14 +1,17 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
url: "zoomTextOnly.html"
settings.zoomTextOnly: true
+ /*
SequentialAnimation on zoomFactor {
loops: Animation.Infinite
NumberAnimation { from: 2; to: 0.25; duration: 1000 }
NumberAnimation { from: 0.25; to: 2; duration: 1000 }
}
+ */
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
index dc973c22c5..03fd7809f2 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
// Note that zooming is better done using zoomFactor and careful
// control of rendering to avoid excessive re-rendering during
// zoom animations. This test is written for simplicity.
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
Behavior on x { NumberAnimation { } }
diff --git a/tests/auto/exceptionsafety/exceptionsafety.pro b/tests/auto/exceptionsafety/exceptionsafety.pro
index d162219f7c..52ba9e27bd 100644
--- a/tests/auto/exceptionsafety/exceptionsafety.pro
+++ b/tests/auto/exceptionsafety/exceptionsafety.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_exceptionsafety.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/guiapplauncher/guiapplauncher.pro b/tests/auto/guiapplauncher/guiapplauncher.pro
index 30f5cf4f75..1fe9c8b0f6 100644
--- a/tests/auto/guiapplauncher/guiapplauncher.pro
+++ b/tests/auto/guiapplauncher/guiapplauncher.pro
@@ -3,6 +3,7 @@
# -------------------------------------------------
# Link against gui for X11,etc.
+load(qttest_p4)
DEFINES += SRCDIR=\\\"$$PWD/\\\"
TARGET = tst_guiapplauncher
diff --git a/tests/auto/lancelot/.gitignore b/tests/auto/lancelot/.gitignore
new file mode 100644
index 0000000000..0a70416d57
--- /dev/null
+++ b/tests/auto/lancelot/.gitignore
@@ -0,0 +1 @@
+tst_lancelot
diff --git a/tests/auto/lancelot/lancelot.pro b/tests/auto/lancelot/lancelot.pro
new file mode 100644
index 0000000000..4535b83e27
--- /dev/null
+++ b/tests/auto/lancelot/lancelot.pro
@@ -0,0 +1,15 @@
+load(qttest_p4)
+QT += xml svg
+contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2):QT += opengl
+
+SOURCES += tst_lancelot.cpp \
+ $$QT_SOURCE_TREE/tests/arthur/common/paintcommands.cpp
+HEADERS += $$QT_SOURCE_TREE/tests/arthur/common/paintcommands.h
+RESOURCES += $$QT_SOURCE_TREE/tests/arthur/common/images.qrc
+
+include($$QT_SOURCE_TREE/tests/arthur/common/baselineprotocol.pri)
+win32|symbian*:MKSPEC=$$replace(QMAKESPEC, \\\\, /)
+else:MKSPEC=$$QMAKESPEC
+DEFINES += QMAKESPEC=\\\"$$MKSPEC\\\"
+
+!symbian:!wince*:DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/lancelot/scripts/aliasing.qps b/tests/auto/lancelot/scripts/aliasing.qps
new file mode 100644
index 0000000000..59878f9c4d
--- /dev/null
+++ b/tests/auto/lancelot/scripts/aliasing.qps
@@ -0,0 +1,156 @@
+
+path_moveTo convexPath 25 0
+path_lineTo convexPath 50 50
+path_lineTo convexPath 25 25
+path_lineTo convexPath 0 50
+path_closeSubpath convexPath
+
+pixmap_load border.png pixmap
+
+setRenderHint LineAntialiasing false
+translate 10 10
+
+begin_block drawing
+ setPen black 1
+ setBrush 7f7fff
+ drawPath convexPath
+
+ setFont "monospace" 8
+ setPen black
+ drawText 0 68 "QwErTy@"
+
+
+ setPen black 1
+ setBrush 7f7fff
+ drawRect 0 80 10 5
+
+ setPen black 1
+ setBrush noBrush
+ drawRect 20 80 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 80 10 5
+
+
+ setPen black 2
+ setBrush 7f7fff
+ drawRect 0 90 10 5
+
+ setPen black 2
+ setBrush noBrush
+ drawRect 20 90 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 90 10 5
+
+
+ setPen black 3
+ setBrush 7f7fff
+ drawRect 0 100 10 5
+
+ setPen black 3
+ setBrush noBrush
+ drawRect 20 100 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 100 10 5
+
+
+ setPen black 1
+ setBrush noBrush
+ drawLine 10 110 20 120
+ drawLine 30 120 40 110
+
+ setPen black 2
+ setBrush noBrush
+ drawLine 10 120 20 130
+ drawLine 30 130 40 120
+
+ setPen black 3
+ setBrush noBrush
+ drawLine 10 130 20 140
+ drawLine 30 140 40 130
+
+ drawPixmap pixmap 0 150
+
+ setRenderHint SmoothPixmapTransform false
+ drawPixmap pixmap 20 150 15 15 0 0 10 10
+
+end_block
+
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "0.0"
+
+resetMatrix
+translate 70.2 10.2
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.2 -0.2
+drawText 15 185 "0.2"
+
+
+resetMatrix
+translate 130.4 10.4
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.4 -0.4
+drawText 15 185 "0.4"
+
+
+resetMatrix
+translate 190.5 10.5
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.5 -0.5
+drawText 15 185 "0.5"
+
+
+resetMatrix
+translate 250.6 10.6
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.6 -0.6
+drawText 15 185 "0.6"
+
+
+resetMatrix
+translate 310.8 10.8
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.8 -0.8
+drawText 15 185 "0.8"
+
+
+resetMatrix
+translate 371 11
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "1.0"
+
+
+resetMatrix
+drawText 430 95 "Aliased"
+drawText 430 275 "Anti-Aliased" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/arcs.qps b/tests/auto/lancelot/scripts/arcs.qps
new file mode 100644
index 0000000000..8a7a468df1
--- /dev/null
+++ b/tests/auto/lancelot/scripts/arcs.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 5
+
+setRenderHint LineAntialiasing
+
+setPen red
+
+drawEllipse 0 0 600 400
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 0 10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 20 30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 60 45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 115 60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 180 90
+path_closeSubpath arcs
+
+path_moveTo arcs 590 200
+path_arcTo arcs 10 10 580 380 0 360
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 0 -10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -20 -30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -60 -45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -115 -60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -180 -90
+path_closeSubpath arcs
+
+setPen black 1 solidline
+setBrush #3f00ff00
+drawPath arcs
+
+# Then again with a matrix set...
+translate 200 400
+rotate 10
+scale 0.5 0.5
+setPen red
+setBrush nobrush
+drawEllipse 0 0 600 400
+
+setPen black 1 solidline
+setBrush #3f0000ff
+drawPath arcs \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/arcs2.qps b/tests/auto/lancelot/scripts/arcs2.qps
new file mode 100644
index 0000000000..411ff08014
--- /dev/null
+++ b/tests/auto/lancelot/scripts/arcs2.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5
+
+drawArc 100 100 100 100 0 1440
+drawArc 100 100 100 100 1440 1440
+drawArc 100 100 100 100 2880 1440
+drawArc 100 100 100 100 4320 1440
+
+drawArc 100 200 100 100 0 -1440
+drawArc 100 200 100 100 -1440 -1440
+drawArc 100 200 100 100 -2880 -1440
+drawArc 100 200 100 100 -4320 -1440
+
+drawArc 200 100 100 100 720 1440
+drawArc 200 100 100 100 2160 1440
+drawArc 200 100 100 100 3600 1440
+drawArc 200 100 100 100 5040 1440
+
+drawArc 200 200 100 100 -720 -1440
+drawArc 200 200 100 100 -2160 -1440
+drawArc 200 200 100 100 -3600 -1440
+drawArc 200 200 100 100 -5040 -1440
+
+
+drawArc 300 100 100 100 3840 480
+drawArc 300 200 100 100 -3840 -480
+
+drawArc 300 100 100 100 1600 1340
+
+setPen black
+drawArc 400 100 200 200 0 5760
+setPen white
+drawArc 400 100 200 200 960 960
+drawArc 400 100 200 200 2880 960
+drawArc 400 100 200 200 4800 960
+
+setPen black
+drawArc 100 350 300 300 160 5760
+drawArc 100 350 300 300 320 5760
+drawArc 100 350 300 300 1920 5760
+drawArc 100 350 300 300 2080 5760
+drawArc 100 350 300 300 3680 5760
+drawArc 100 350 300 300 3840 5760
+drawArc 100 350 300 300 5440 5760
+drawArc 100 350 300 300 5600 5760
+setPen white
+drawArc 100 350 300 300 0 5760
diff --git a/tests/auto/lancelot/scripts/background.qps b/tests/auto/lancelot/scripts/background.qps
new file mode 100644
index 0000000000..000cfcdd91
--- /dev/null
+++ b/tests/auto/lancelot/scripts/background.qps
@@ -0,0 +1,136 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 30
+setBackground 7f7fff
+setBackgroundMode Transparent
+setPen ff7f7f
+
+path_moveTo path 0 0
+path_lineTo path 25 0
+path_cubicTo path 50 0 25 25 25 50
+path_lineTo path 0 50
+
+bitmap_load bitmap.png bitmap
+
+begin_block drawing
+ save
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+
+ save
+ setRenderHint Antialiasing
+ translate 5 55
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+end_block
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Opaque
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode OpaqueMode
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+resetMatrix
+
+translate 5 5
+
+setBrush nobrush
+setPen black
+setBackgroundMode transparent
+drawText 10 15 "TransparentMode with solid 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 4-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with solid 4-width pen"
+drawRect 0 0 685 135
diff --git a/tests/auto/lancelot/scripts/background_brush.qps b/tests/auto/lancelot/scripts/background_brush.qps
new file mode 100644
index 0000000000..ca1f944964
--- /dev/null
+++ b/tests/auto/lancelot/scripts/background_brush.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush #00ff00 crosspattern
+import "background.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/beziers.qps b/tests/auto/lancelot/scripts/beziers.qps
new file mode 100644
index 0000000000..9b47cd05ac
--- /dev/null
+++ b/tests/auto/lancelot/scripts/beziers.qps
@@ -0,0 +1,147 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint LineAntialiasing
+
+translate 20 20
+path_moveTo fullSize 0 0
+path_cubicTo fullSize 200 100 -100 100 100 0
+
+path_moveTo fullSize 0 200
+path_cubicTo fullSize 0 100 100 100 100 200
+
+path_moveTo fullSize 0 250
+path_cubicTo fullSize 50 200 50 200 100 250
+drawPath fullSize
+
+translate 110 0
+scale 10 10
+path_moveTo medSize 0 0
+path_cubicTo medSize 20 10 -10 10 10 0
+
+path_moveTo medSize 0 20
+path_cubicTo medSize 0 10 10 10 10 20
+
+path_moveTo medSize 0 25
+path_cubicTo medSize 5 20 5 20 10 25
+drawPath medSize
+
+resetMatrix
+translate 240 20
+scale 100 100
+path_moveTo smallSize 0 0
+path_cubicTo smallSize 2 1 -1 1 1 0
+
+path_moveTo smallSize 0 2
+path_cubicTo smallSize 0 1 1 1 1 2
+
+path_moveTo smallSize 0 2.5
+path_cubicTo smallSize 0.5 2 0.5 2 1 2.5
+drawPath smallSize
+
+resetMatrix
+translate 20 300
+drawPath medSize
+
+resetMatrix
+translate 250 -100
+path_moveTo maxSize 0 500
+path_cubicTo maxSize 1000 0 -500 0 500 500
+drawPath maxSize
+
+setRenderHint Antialiasing off
+resetMatrix
+
+path_moveTo path1 0 0
+path_cubicTo path1 10 10 0 10 10 0
+
+path_moveTo path2 0 0
+path_cubicTo path2 15 15 -5 15 10 0
+
+path_moveTo path3 0 0
+path_cubicTo path3 20 20 -10 20 10 0
+
+path_moveTo path4 0 0
+path_cubicTo path4 0 5 10 10 0 15
+
+path_moveTo path5 0 10
+path_cubicTo path5 10 10 -10 20 0 0
+
+path_moveTo path6 0 0
+path_cubicTo path6 10 5 -10 10 0 15
+
+setPen black 2
+setBrush nobrush
+
+translate 10 500
+scale 3 3
+begin_block paths
+save
+drawPath path1
+translate 20 0
+drawPath path2
+translate 20 0
+drawPath path3
+translate 20 0
+drawPath path4
+translate 20 0
+drawPath path5
+translate 20 0
+drawPath path6
+restore
+end_block
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+setRenderHint Antialiasing
+
+setPen black 2
+setBrush nobrush
+
+translate 120 -20
+repeat_block paths
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+resetMatrix
+path_moveTo miterPath 20 0
+path_cubicTo miterPath 20 20 0 0 1 0
+path_lineTo miterPath -1 -0.2
+
+setBrush nobrush
+
+translate 50 660
+scale 5 5
+
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath
+setPen red 0
+drawPath miterPath
+
+path_moveTo miterPath2 21 0.2
+path_lineTo miterPath2 19 0
+path_cubicTo miterPath2 20 0 0 20 0 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath2
+setPen red 0
+drawPath miterPath2
+
+path_moveTo wonkyPath 0 0
+path_cubicTo wonkyPath 5 15 20 0 17 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath wonkyPath
+setPen red 0
+drawPath wonkyPath
diff --git a/tests/auto/lancelot/scripts/bitmaps.qps b/tests/auto/lancelot/scripts/bitmaps.qps
new file mode 100644
index 0000000000..a816b9d497
--- /dev/null
+++ b/tests/auto/lancelot/scripts/bitmaps.qps
@@ -0,0 +1,166 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+#setRenderHint SmoothPixmapTransform
+
+translate 10 50
+setBackground ff7f7f
+setPen 3f3f9f
+
+bitmap_load dome_mono.png the_pixmap
+
+save
+ # Draw with opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+
+ translate 220 0
+
+ # Draw with alpha pen/bg in transparent/opaque mode
+ save
+ setBackground 7fff7f7f
+ setPen 7f3f3f9f
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+ restore
+
+ translate 220 0
+
+ # Draw with rotated opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+ setBackgroundMode Opaque
+ translate 110 0
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+restore
+
+translate 0 150
+
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100
+ restore
+restore
+
+translate 0 150
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100 10 20
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ restore
+restore
+
+
+pixmap_setMask the_pixmap mask_100.png
+drawPixmap the_pixmap 0 150
+setBackgroundMode Opaque
+drawPixmap the_pixmap 110 150
+
+translate 220 150
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+restore
+
+translate 110 0
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 0 0
+restore
+
+resetMatrix
+translate 10 650
+bitmap_load dome_mono.png the_bitmap
+setBackgroundMode Transparent
+
+begin_block draw_subrected
+ drawPixmap the_bitmap 0 0 50 50 0 0 50 50
+ drawPixmap the_bitmap 50 0 50 50 50 0 50 50
+ drawPixmap the_bitmap 0 50 50 50 0 50 50 50
+ drawPixmap the_bitmap 50 50 50 50 50 50 50 50
+end_block
+
+translate 110 0
+setBackgroundMode Opaque
+repeat_block draw_subrected
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Transparent
+ repeat_block draw_subrected
+restore
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Opaque
+ repeat_block draw_subrected
+restore
+
+# Some helpful texts
+
+resetMatrix
+setPen black
+drawText 10 40 "Transparent"
+drawText 120 40 "Opaque"
+drawText 230 40 "Trans w/alpha"
+drawText 340 40 "Opaque w/alpha"
+drawText 450 40 "Trans w/xform"
+drawText 560 40 "Opaque w/xform"
+
+drawText 10 190 "Transparent tiled"
+drawText 220 190 "Opaque tiled"
+drawText 440 190 "Opaque w/xform"
+
+drawText 10 340 "Transparent tiled w/offset"
+drawText 220 340 "Opaque tiled w/offset"
+drawText 440 340 "Opaque w/xform w/offset"
+
+drawText 10 490 "Trans masked"
+drawText 120 490 "Opaque masked"
+drawText 230 490 "masked w/xform"
+drawText 340 490 "masked w/xform"
+
+drawText 10 640 "Subrected"
+drawText 110 640 "Subrected opaque"
+drawText 220 640 "subrect w/xform"
+drawText 330 640 "subrect w/xform opaque"
+
+
diff --git a/tests/auto/lancelot/scripts/borderimage.qps b/tests/auto/lancelot/scripts/borderimage.qps
new file mode 100644
index 0000000000..ebd4f4d249
--- /dev/null
+++ b/tests/auto/lancelot/scripts/borderimage.qps
@@ -0,0 +1,120 @@
+# Version: 1
+# CheckVsReference: 10%
+
+image_load borderimage.png borderimage
+translate -128 -128
+begin_block draw_border
+# top
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 36 16 16 0 32 16
+drawImage borderimage 52 0 16 16 48 0 16 16
+# sides
+drawImage borderimage 0 16 16 16 0 16 16 32
+drawImage borderimage 52 16 16 16 48 16 16 32
+#bottom
+drawImage borderimage 0 32 16 16 0 48 16 16
+drawImage borderimage 16 32 36 16 16 48 32 16
+drawImage borderimage 52 32 16 16 48 48 16 16
+end_block draw_border
+resetMatrix
+begin_block draw_column
+translate 1 1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+end_block draw_column
+setRenderHint Antialiasing
+resetMatrix
+translate 72 0
+repeat_block draw_column
+resetMatrix
+scale 1.25 1.25
+translate 144 0
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 0
+rotate 30
+repeat_block draw_border
+setRenderHint SmoothPixmapTransform
+resetMatrix
+scale 1.25 1.25
+translate 144 120
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 120
+rotate 30
+repeat_block draw_border
+resetMatrix
+translate 215 260
+scale 3.55 3.55
+rotate 30
+repeat_block draw_border
+resetMatrix
+setRenderHint SmoothPixmapTransform off
+setRenderHint Antialiasing off
+translate 480 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing
+translate 552 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing off
+translate 200.1 520.1
+begin_block one_pixel_border
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 64 16 16 0 1 1
+drawImage borderimage 80 0 16 16 48 0 16 16
+drawImage borderimage 0 16 16 64 16 0 1 1
+drawImage borderimage 80 16 16 64 16 0 1 1
+drawImage borderimage 0 80 16 16 0 48 16 16
+drawImage borderimage 16 80 64 16 16 0 1 1
+drawImage borderimage 80 80 16 16 48 48 16 16
+end_block one_pixel_border
+resetMatrix
+translate 205.1 626.1
+scale 0.4 0.4
+repeat_block one_pixel_border
+resetMatrix
+translate 255.1 624.1
+scale 0.4 0.4
+rotate 10
+repeat_block one_pixel_border
+resetMatrix
+setPen red
+drawRect 0 0 70 680
+drawText 10 670 "aa off"
+drawRect 72 0 70 680
+drawText 80 670 "aa on"
+drawRect 409 0 70 680
+drawText 419 650 "rot 180"
+drawText 419 670 "aa off"
+drawRect 481 0 70 680
+drawText 491 650 "rot 180"
+drawText 491 670 "aa on"
+drawRect 164 0 224 124
+drawText 174 114 "smoothpixmaptransform off"
+drawRect 164 128 224 134
+drawText 174 252 "smoothpixmaptransform on"
+drawRect 200 520 97 188
+drawText 210 698 "1x1 edges" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/brush_pens.qps b/tests/auto/lancelot/scripts/brush_pens.qps
new file mode 100644
index 0000000000..b9a2bc0ada
--- /dev/null
+++ b/tests/auto/lancelot/scripts/brush_pens.qps
@@ -0,0 +1,104 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect p 0 0 75 75
+path_addEllipse p 25 25 75 75
+
+translate 10 10
+
+begin_block setup_gradient
+ gradient_clearStops
+ gradient_appendStop 0 red
+ gradient_appendStop 0.1 blue
+ gradient_appendStop 0.2 yellow
+ gradient_appendStop 0.3 cyan
+ gradient_appendStop 0.4 magenta
+ gradient_appendStop 0.5 green
+ gradient_appendStop 0.6 black
+ gradient_appendStop 0.7 indianred
+ gradient_appendStop 0.8 white
+ gradient_appendStop 0.9 orange
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 100 100
+end_block
+
+setPen brush 0
+setBrush nobrush
+
+begin_block drawing
+ save
+ drawLine 0 0 100 100
+
+ translate 0 100
+ drawPath p
+
+ translate 0 110
+ drawRect 0 0 100 100
+
+ translate 0 110
+ drawPolyline [0 0 100 0 50 50]
+
+ drawPoint 40 40
+ drawPoint 41 40
+ drawPoint 42 40
+ drawPoint 43 40
+ drawPoint 44 40
+ drawPoint 45 40
+ drawPoint 46 40
+ drawPoint 47 40
+ drawPoint 48 40
+ drawPoint 49 40
+ drawPoint 50 40
+
+ restore
+end_block
+
+save
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 0
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore
+
+translate 0 0
+
+save
+ repeat_block setup_gradient
+ setPen brush 5
+ setBrush nobrush
+ translate 0 350
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 5
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/brushes.qps b/tests/auto/lancelot/scripts/brushes.qps
new file mode 100644
index 0000000000..82cbff48b9
--- /dev/null
+++ b/tests/auto/lancelot/scripts/brushes.qps
@@ -0,0 +1,79 @@
+# Version: 1
+# CheckVsReference: 5%
+
+# Fill the background
+drawRect 0 0 width height
+
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+
+translate 10 10
+# Draw all the pattern types as 40x40 rects using green, transparent background
+begin_block drawrects
+setBrush green Dense1Pattern
+drawRect 0 0 40 40
+setBrush green Dense2Pattern
+drawRect 40 0 40 40
+setBrush green Dense3Pattern
+drawRect 80 0 40 40
+setBrush green Dense4Pattern
+drawRect 120 0 40 40
+setBrush green Dense5Pattern
+drawRect 160 0 40 40
+setBrush green Dense6Pattern
+drawRect 200 0 40 40
+setBrush green Dense7Pattern
+drawRect 240 0 40 40
+setBrush green HorPattern
+drawRect 280 0 40 40
+setBrush green VerPattern
+drawRect 320 0 40 40
+setBrush green CrossPattern
+drawRect 360 0 40 40
+setBrush green BDiagPattern
+drawRect 400 0 40 40
+setBrush green FDiagPattern
+drawRect 440 0 40 40
+setBrush green DiagCrossPattern
+drawRect 480 0 40 40
+setBrush green SolidPattern
+drawRect 520 0 40 40
+setBrush green NoBrush
+drawRect 560 0 40 40
+gradient_setLinear 0 0 0 40
+drawRect 600 0 40 40
+setBrush face.png
+drawRect 640 0 80 40
+end_block
+
+# Switch to opaque mode
+setBackground #7fff7f
+setBackgroundMode OpaqueMode
+translate 0 50
+
+# Draw all the pattern types as 40x40 rects using green, opaque background
+repeat_block drawrects
+
+translate 50 50
+rotate 10
+
+
+setBackgroundMode TransparentMode
+repeat_block drawrects
+setBackgroundMode OpaqueMode
+translate 0 40
+repeat_block drawrects
+
+
+setBrush dot.png
+setPen nopen
+resetMatrix
+drawRect 0 200 50 50
+drawRect 50 200 50 50
+
+setPen red
+setBrushOrigin 0 250
+drawRect 0 250 50 50
+setBrushOrigin 50 250
+drawRect 50 250 50 50
+
diff --git a/tests/auto/lancelot/scripts/clippaths.qps b/tests/auto/lancelot/scripts/clippaths.qps
new file mode 100644
index 0000000000..fba89784df
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clippaths.qps
@@ -0,0 +1,60 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect hor 0 0 50 10
+path_addRect ver 0 0 10 50
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+
diff --git a/tests/auto/lancelot/scripts/clipping.qps b/tests/auto/lancelot/scripts/clipping.qps
new file mode 100644
index 0000000000..3694ff2ba7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clipping.qps
@@ -0,0 +1,182 @@
+# Version: 1
+# CheckVsReference: 5%
+
+region_addRect clip 50 0 90 190
+region_addRect clip 0 50 180 90
+
+region_addRect clip2 30 30 60 60
+
+region_addRect clip3 10 10 60 60
+
+path_cubicTo path 90 0 50 50 90 90
+path_cubicTo path 0 90 50 50 0 0
+
+path_addRect path2 0 0 90 90
+path_moveTo path2 90 45
+path_arcTo path2 0 0 90 90 0 -360
+
+path_addRect emptypath 0 0 0 0
+region_addRect emptyregion 0 0 0 0
+
+# Normal clip rect
+setClipRect 0 0 50 150
+begin_block repaint
+save
+setBrush red
+setPen nopen
+resetMatrix
+region_getClipRegion tmpclip
+path_getClipPath tmpclippath
+drawRect 0 0 width height
+setBrush #3f0000ff
+setClipRegion tmpclip
+drawRect 0 0 width height
+setClipPath tmpclippath
+setBrush #3f00ff00
+drawRect 0 0 width height
+restore
+end_block
+
+# Rotated clip rect
+translate 100 0
+rotate 10
+setClipRect 0 0 50 150
+repeat_block repaint
+
+# simple clip region
+resetMatrix
+translate 0 200
+setClipRegion clip
+repeat_block repaint
+
+# simle rotated clip region
+translate 250 -10
+rotate 10
+setClipRegion clip
+repeat_block repaint
+
+# verify that clip is not xformed with painter
+resetMatrix
+translate 200 0
+setClipRegion clip
+rotate 30
+setBrush red
+setPen nopen
+drawRect 0 0 width height
+
+resetMatrix
+translate 0 400
+save
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+restore
+
+translate 100 0
+save
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+repeat_block repaint
+translate 50 100
+rotate 45
+setClipPath path
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path UniteClip
+repeat_block repaint
+restore
+
+# test that an empty region is not drawn.
+resetMatrix
+setClipRegion emptyregion
+setBrush #3f00ff00
+drawRect 0 0 300 300
+drawText 50 50 "Text should be clipped away by region"
+setClipping false
+
+setClipPath emptypath
+setBrush #3fffff00
+drawRect 50 50 300 300
+drawText 70 80 "Text should be clipped away by path"
+
+# Test that we can extract a clipregion when a matrix is set too
+resetMatrix
+translate 500 10
+scale 2 1
+setBrush blue
+setClipping false
+rotate 5
+drawRect 0 0 100 100
+setClipRect 0 0 100 100
+resetMatrix
+rotate 10
+region_getClipRegion xclip
+setClipRegion xclip
+resetMatrix
+setBrush #7f00ff00
+drawRect 0 0 width height
+
+# the below used to assert in debug mode
+setClipRect 10 10 20 20
+setClipping false
+setClipping true \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/clipping_state.qps b/tests/auto/lancelot/scripts/clipping_state.qps
new file mode 100644
index 0000000000..a29d3738c8
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clipping_state.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path1 10 10 50 50
+path_addRect path2 30 30 50 50
+# enable/disable a clip path
+setPen nopen
+setBrush red
+setClipPath path1
+setClipPath path2 UniteClip
+drawRect 0 0 100 100
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 0 0 100 100
+# enable/disable noclip
+translate 150 0
+setClipPath path1 NoClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# enable/disable full clipping
+translate 150 0
+path_addRect path3 0 0 10 10
+path_addRect path4 20 20 10 10
+setClipPath path3
+setClipPath path4 IntersectClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# disable clipping followed by setClipRect
+translate 150 0
+setClipRect 0 0 50 50 ReplaceClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipRect 25 25 75 75 IntersectClip
+setBrush #6300ff00
+drawRect 25 25 50 50 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/cliprects.qps b/tests/auto/lancelot/scripts/cliprects.qps
new file mode 100644
index 0000000000..0d28b035b4
--- /dev/null
+++ b/tests/auto/lancelot/scripts/cliprects.qps
@@ -0,0 +1,59 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+
diff --git a/tests/auto/lancelot/scripts/conical_gradients.qps b/tests/auto/lancelot/scripts/conical_gradients.qps
new file mode 100644
index 0000000000..2e897b1813
--- /dev/null
+++ b/tests/auto/lancelot/scripts/conical_gradients.qps
@@ -0,0 +1,85 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path 300 0 80 80
+path_addEllipse path 340 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setConical 40 40 50
+drawRect 0 0 100 100
+
+gradient_setConical 140 40 230
+drawEllipse 100 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setConical 240 40 50
+drawPolygon [200 0 290 0 250 99]
+
+gradient_setConical 340 40 230
+drawPath path
+
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 410 50 "No XForm"
+drawText 410 200 "scale 1x2"
+drawText 410 300 "brush transform"
+drawText 10 450 "50 deg"
+drawText 110 450 "230 deg"
+drawText 210 450 "50 deg w/alpha "
+drawText 310 450 "230 deg w/alpha"
+
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+ setClipRect 0 0 100 100
+ drawEllipse 35 35 11 11
+ save
+ translate 40 40
+ rotate -50
+ drawLine -100 0 100 0
+ restore
+ translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps b/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps
new file mode 100644
index 0000000000..a9c14f1ce7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps
@@ -0,0 +1,64 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 0.9 cyan
+gradient_appendStop 1 red
+
+gradient_setSpread PadSpread
+gradient_setConical 140 140 100
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/dashes.qps b/tests/auto/lancelot/scripts/dashes.qps
new file mode 100644
index 0000000000..649f56cf66
--- /dev/null
+++ b/tests/auto/lancelot/scripts/dashes.qps
@@ -0,0 +1,268 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 20 20
+
+begin_block draw
+save
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+
+ translate 100 0
+ save
+ setPen black 1 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+ save
+ setPen black 1 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+restore
+end_block
+
+translate 0 400
+setRenderHint Antialiasing
+repeat_block draw
+
+translate 0 -20
+drawText 30 0 "Solid"
+
+translate 100 0
+drawText 20 0 "DotLine"
+
+translate 100 0
+drawText 10 0 "DashLine"
+
+translate 100 0
+drawText 0 0 "DashDotLine"
+
+translate 100 0
+drawText 0 0 "DashDotDotLine"
+
+translate 100 0
+drawText 0 0 "CustomDashLine"
+
+resetMatrix
+
+translate 620 40
+
+begin_block width_and_caps_texts
+ drawText 0 0 "Width=1, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=1, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=1, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=2, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=2, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=2, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=6, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=6, SqareCap"
+ translate 0 40
+ drawText 0 0 "Width=6, RoundCap"
+end_block
+
+translate 0 80
+repeat_block width_and_caps_texts \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/degeneratebeziers.qps b/tests/auto/lancelot/scripts/degeneratebeziers.qps
new file mode 100644
index 0000000000..fb223d5b1f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/degeneratebeziers.qps
@@ -0,0 +1,10 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_moveTo degenerate 3427.0918499999997948 3872.1318999999998596
+path_cubicTo degenerate 3427.0918499999997948 3872.1318999999994048 4729.4590867905308187 5176.8613451144155988 5389.9325499999995372 5837.8072499999998399
+
+scale 0.05 0.05
+translate -2500 -3000
+setPen black 800
+drawPath degenerate \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/deviceclipping.qps b/tests/auto/lancelot/scripts/deviceclipping.qps
new file mode 100644
index 0000000000..cedfc1e363
--- /dev/null
+++ b/tests/auto/lancelot/scripts/deviceclipping.qps
@@ -0,0 +1,48 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush 0xff7f7f
+setPen 0x7f0000
+
+path_moveTo path -1000000 10000
+path_cubicTo path 100 100 100 150 150 400
+path_closeSubpath path
+
+begin_block drawing
+
+ drawPath ellipse
+
+ drawLine -1000000 200 200 200
+ drawLine 200 -1000000 200 200
+ drawLine 200 200 1000000 200
+ drawLine 200 200 200 1000000
+ drawLine -1000000 -1000000 200 200
+
+ drawPolygon [-1000000 100 100 -1000000 100 100]
+ drawRect 300 -500000 1000000 1000000
+
+ drawPath path
+
+end_block
+
+save
+translate 20 20
+setBrush #0x7f7f7fff
+setPen #0x7f00007f
+repeat_block drawing
+
+translate 20 20
+setRenderHint Antialiasing
+setBrush #0x7f7fff7f
+setPen #0x7f007f00
+repeat_block drawing
+restore
+
+setPen 0x00007f 2
+setRenderHint Antialiasing
+
+drawLine 0 -200 200 200
+
+setPen 0x007f00 10
+
+drawLine 0 -200 200 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/drawpoints.qps b/tests/auto/lancelot/scripts/drawpoints.qps
new file mode 100644
index 0000000000..c02cd85737
--- /dev/null
+++ b/tests/auto/lancelot/scripts/drawpoints.qps
@@ -0,0 +1,101 @@
+# Version: 1
+# CheckVsReference: 5%
+
+#setRenderHint Antialiasing
+
+setPen red 0 solidline
+begin_block points
+drawPoint 00 00
+drawPoint 10 00
+drawPoint 20 00
+drawPoint 30 00
+drawPoint 40 00
+drawPoint 50 00
+drawPoint 00 10
+drawPoint 10 10
+drawPoint 20 10
+drawPoint 30 10
+drawPoint 40 10
+drawPoint 50 10
+drawPoint 00 20
+drawPoint 10 20
+drawPoint 20 20
+drawPoint 30 20
+drawPoint 40 20
+drawPoint 50 20
+drawPoint 00 30
+drawPoint 10 30
+drawPoint 20 30
+drawPoint 30 30
+drawPoint 40 30
+drawPoint 50 30
+drawPoint 00 40
+drawPoint 10 40
+drawPoint 20 40
+drawPoint 30 40
+drawPoint 40 40
+drawPoint 50 40
+drawPoint 00 50
+drawPoint 10 50
+drawPoint 20 50
+drawPoint 30 50
+drawPoint 40 50
+drawPoint 50 50
+end_block points
+
+translate 100 0
+setPen blue 1 solidline
+repeat_block points
+
+translate 100 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 100
+scale 3 3
+setPen red 0 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 300
+scale 3 3
+setPen red 0 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline flatcap
+repeat_block points
+
+resetMatrix
+translate 10 500
+setPen black 1 solidline flatcap
+drawPoint 0 0
+setPen black 2 solidline flatcap
+drawPoint 3 0
+setPen black 3 solidline flatcap
+drawPoint 8 0
+setPen black 4 solidline flatcap
+drawPoint 15 0
+setPen black 5 solidline flatcap
+drawPoint 24 0
+setPen black 6 solidline flatcap
+drawPoint 35 0
+setPen black 7 solidline flatcap
+drawPoint 48 0
+setPen black 8 solidline flatcap
+drawPoint 63 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/ellipses.qps b/tests/auto/lancelot/scripts/ellipses.qps
new file mode 100644
index 0000000000..e2cffd7f27
--- /dev/null
+++ b/tests/auto/lancelot/scripts/ellipses.qps
@@ -0,0 +1,86 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+surface_begin 0 0 600 600
+translate 0 50
+
+setPen nopen
+setBrush 0x7f000000
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 220 200
+
+drawEllipse 10 10 80 80
+drawEllipse 50 50 120 90
+
+translate 100 0
+brushTranslate 40 20
+brushScale 0.25 0.25
+
+setPen black
+
+drawEllipse 10 10 80 80
+setOpacity 0.5
+setCompositionMode SourceIn
+drawEllipse 50 50 120 90
+setOpacity 1.0
+setRenderHint Antialiasing
+setCompositionMode Xor
+brushTranslate 70 0
+translate 100 0
+drawEllipse 10 10 80 80
+
+setPen nopen
+drawEllipse 50 50 120 90
+
+setOpacity 0.7
+setBrush red
+translate 100 0
+setCompositionMode SourceOver
+
+drawEllipse 10 10 80 80
+
+setOpacity 0.6
+setPen black 5.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 120 100
+drawEllipse 50 50 120 90
+
+
+translate 100 0
+
+setOpacity 1.0
+drawEllipse 10 10 80 80
+
+setCompositionMode SourceIn
+setOpacity 0.7
+setPen black 3.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 50 50 80 90
+drawEllipse 50 50 120 90
+
+surface_end
+
+drawText 200 220 "Testing Ellipse drawing with varios combinations"
+drawText 200 240 "of features such as brushes, pens and composition modes" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/filltest.qps b/tests/auto/lancelot/scripts/filltest.qps
new file mode 100644
index 0000000000..2eeba2ecf6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/filltest.qps
@@ -0,0 +1,413 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen nopen
+setBrush red
+translate 0 4
+begin_block polys
+drawPolygon [0 0 2 -2 4 0]
+drawPolygon [0 2 2 4 4 2]
+end_block polys
+translate 6 .5
+repeat_block polys
+translate 6.5 0
+repeat_block polys
+translate 6 .5
+repeat_block polys
+
+resetMatrix
+
+translate 0 12
+setPen black
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+setPen nopen
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+drawPolygon [0 0 5 0 5 5 0 5]
+
+setBrush black
+path_addRect stroke -.5 -.5 6 6
+path_addRect stroke .5 .5 4 4
+drawPath stroke
+
+resetMatrix
+
+translate 0 65
+
+setPen red
+drawText 0 0 "path"
+drawText 40 0 "rect"
+drawText 80 0 "img"
+drawText 120 0 "pix"
+drawText 160 0 "brush"
+setPen nopen
+
+translate 0 5
+
+image_load border.png img
+pixmap_load border.png pix
+
+path_addRect rect 0 0 10 10
+begin_block rects
+drawPath rect
+drawRect 40 0 10 10
+drawImage img 80 0
+drawPixmap pix 120 0
+setBrush border.png
+drawRect 160 0 10 10
+setBrush black
+end_block rects
+
+setPen red
+drawText 180 10 "0.0"
+setPen nopen
+
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.1"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.2"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.3"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.4"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.5"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.6"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.7"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.8"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.9"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 400
+
+setPen red
+drawText 0 10 "path"
+drawText 0 30 "rect"
+drawText 0 50 "img"
+drawText 0 70 "pix"
+drawText 0 90 "brush"
+drawText 0 110 "stroke"
+drawText 0 130 "scale"
+drawText 0 170 "rotate"
+setPen nopen
+
+translate 50 0
+
+begin_block rects
+drawPath rect
+drawRect 0 20 10 10
+drawImage img 0 40
+drawPixmap pix 0 60
+save
+setBrush border.png
+drawRect 0 80 10 10
+translate 0 100
+setBrush red
+setPen black
+drawRect 0 0 10 10
+setBrush border.png
+setPen nopen
+translate 0 20
+scale 2 2
+drawRect 0 0 10 10
+translate 10 20
+rotate 90
+drawRect 0 0 10 10
+restore
+end_block rects
+
+setPen red
+drawText -5 -10 "0.0"
+setPen nopen
+
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.1"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.2"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.3"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.4"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.5"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.6"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.7"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.8"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.9"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 620
+
+setPen red
+drawText 0 10 "path"
+setPen nopen
+
+path_addRect rect2 -5 -5 10 10
+
+translate 55 5
+drawPath rect2
+
+translate 20 0
+rotate 10
+drawPath rect2
+rotate -10
+translate 20 0
+rotate 20
+drawPath rect2
+rotate -20
+translate 20 0
+rotate 30
+drawPath rect2
+rotate -30
+translate 20 0
+rotate 40
+drawPath rect2
+rotate -40
+translate 20 0
+rotate 50
+drawPath rect2
+rotate -50
+translate 20 0
+rotate 60
+drawPath rect2
+rotate -60
+translate 20 0
+rotate 70
+drawPath rect2
+rotate -70
+translate 20 0
+rotate 80
+drawPath rect2
+rotate -80
+translate 20 0
+rotate 90
+drawPath rect2
+rotate -90
+
+resetMatrix
+
+translate 0 600
+
+setPen red
+drawText 0 10 "rect"
+setPen nopen
+
+translate 55 5
+drawRect -5 -5 10 10
+
+translate 20 0
+rotate 10
+drawRect -5 -5 10 10
+rotate -10
+translate 20 0
+rotate 20
+drawRect -5 -5 10 10
+rotate -20
+translate 20 0
+rotate 30
+drawRect -5 -5 10 10
+rotate -30
+translate 20 0
+rotate 40
+drawRect -5 -5 10 10
+rotate -40
+translate 20 0
+rotate 50
+drawRect -5 -5 10 10
+rotate -50
+translate 20 0
+rotate 60
+drawRect -5 -5 10 10
+rotate -60
+translate 20 0
+rotate 70
+drawRect -5 -5 10 10
+rotate -70
+translate 20 0
+rotate 80
+drawRect -5 -5 10 10
+rotate -80
+translate 20 0
+rotate 90
+drawRect -5 -5 10 10
+rotate -90
+
+resetMatrix
+path_addRect vertical 0.1 0.1 0.2 10
+
+translate 0 320
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+
+resetMatrix
+path_addRect horizontal 0.1 0.1 10 0.2
+
+translate 0 340
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+
+setOpacity 0.8
+resetMatrix
+
+translate 0.1 24.7
+translate 400 0
+#rotate 88.8
+rotate 89.9
+setBrush red
+drawPolygon [0 0 300 0 0 173]
+setBrush green
+drawPolygon [0 173 300 0 300 173]
+
+resetMatrix
+
+translate 410 24
+path_lineTo left 0 273
+path_lineTo left 300 273
+path_cubicTo left 50 273 250 0 0 0
+
+path_cubicTo right 250 0 50 273 300 273
+path_lineTo right 300 0
+
+translate 310 0
+rotate 90
+setBrush red
+drawPath left
+setBrush green
+drawPath right
+
+resetMatrix
+translate 0.1 680.1
+setPen red
+setOpacity 1
+drawText 115 -20 "0.1"
+drawText 0 0 "pixmap w/ opacity"
+setOpacity 0.6
+drawPixmap pix 120 -10
+translate 0 20
+setOpacity 1
+drawText 0 0 "image w/ opacity"
+setOpacity 0.6
+drawImage img 120 -10
+
+resetMatrix
+path_lineTo fillpath 0 50
+path_lineTo fillpath 50 50
+path_moveTo fillpath 70 50
+path_lineTo fillpath 70 100
+path_lineTo fillpath 40 100
+translate 500 400
+drawPath fillpath
+
+resetMatrix
+path_moveTo vectorarne 50 10
+path_lineTo vectorarne 50 50
+path_lineTo vectorarne 100 50
+path_addEllipse vectorarne 350 20 230 230
+path_moveTo vectorarne 500 500
+path_cubicTo vectorarne 20 20 250 30 50 150
+translate 500 550
+scale 0.4 0.4
+setRenderHint antialiasing
+drawPath vectorarne
+
+resetMatrix
+translate 200 730
+setRenderHint antialiasing off
+setOpacity 1
+setPen red
+drawText 0 0 "outline/fill consistency"
+setPen red
+setBrush green
+translate 80 -30
+drawPolygon [13.6965 -99.1837 -71.4767 13.823 32.4596 -33.1847] \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/gradients.qps b/tests/auto/lancelot/scripts/gradients.qps
new file mode 100644
index 0000000000..eb3cda9cad
--- /dev/null
+++ b/tests/auto/lancelot/scripts/gradients.qps
@@ -0,0 +1,44 @@
+# Version: 1
+# CheckVsReference: 5%
+
+drawText 75 20 "Linear"
+drawText 176 20 "Radial"
+drawText 277 20 "Conical"
+translate 0 30
+drawText 0 50 "AA off"
+drawText 0 151 "AA on"
+
+setPen nopen
+
+gradient_clearStops
+gradient_appendStop 0 0x00000000
+gradient_appendStop 0.001 red
+gradient_appendStop 0.2 blue
+gradient_appendStop 0.4 yellow
+gradient_appendStop 0.6 cyan
+gradient_appendStop 0.8 green
+gradient_appendStop 0.999 red
+gradient_appendStop 1 0x00000000
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+
+begin_block row
+save
+gradient_setLinear 0.1 0.0 0.9 0.0
+drawRect 50 0 100 100
+
+gradient_setRadial 0.5 0.5 0.5 0.5 0.5
+translate 101 0
+drawRect 50 0 100 100
+
+gradient_setConical 0.5 0.5 45
+translate 101 0
+drawRect 50 0 100 100
+restore
+end_block row
+
+setRenderHint Antialiasing
+
+translate 0 101
+repeat_block row \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/image_formats.qps b/tests/auto/lancelot/scripts/image_formats.qps
new file mode 100644
index 0000000000..d817d04bf8
--- /dev/null
+++ b/tests/auto/lancelot/scripts/image_formats.qps
@@ -0,0 +1,81 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+image_load dome_argb32.png the_pixmap
+image_convertToFormat the_pixmap the_pixmap ARGB32_Premultiplied
+
+begin_block draw_stuff
+ save
+ image_convertToFormat the_pixmap converted ARGB32_Premultiplied
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted ARGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted RGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Indexed8
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted MonoLSB
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Mono
+ drawImage converted 0 0
+ translate 0 110
+ restore
+end_block
+
+
+image_load dome_argb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_rgb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_mono.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_mono_palette.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed_mask.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+# helpful texts
+resetMatrix
+setPen black
+
+drawText 10 670 "ARGB32_PM"
+drawText 120 670 "ARGB32"
+drawText 230 670 "RGB32"
+drawText 340 670 "Indexed"
+drawText 450 670 "Mono"
+drawText 560 670 "Mono w/lut"
+drawText 670 670 "Indexed w/mask"
+
+drawText 770 50 "ARGB32_PM"
+drawText 770 160 "ARGB32"
+drawText 770 270 "RGB32"
+drawText 770 380 "Indexed"
+drawText 770 490 "MonoLSB"
+drawText 770 600 "Mono" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/images.qps b/tests/auto/lancelot/scripts/images.qps
new file mode 100644
index 0000000000..3f892400e2
--- /dev/null
+++ b/tests/auto/lancelot/scripts/images.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawImage the_image 0 0
+
+ # sub recting
+ translate 120 0
+ drawImage the_image 0 0 40 40 0 0 40 40
+ drawImage the_image 60 0 40 40 60 0 40 40
+ drawImage the_image 0 60 40 40 0 60 40 40
+ drawImage the_image 60 60 40 40 60 60 40 40
+ drawImage the_image 0 40 40 20 0 40 40 20
+ drawImage the_image 60 40 40 20 60 40 40 20
+ drawImage the_image 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+image_load dome_rgb32.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed_mask.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_mono.png the_image
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/images2.qps b/tests/auto/lancelot/scripts/images2.qps
new file mode 100644
index 0000000000..5159abc928
--- /dev/null
+++ b/tests/auto/lancelot/scripts/images2.qps
@@ -0,0 +1,145 @@
+# Version: 1
+# CheckVsReference: 5%
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+ # standard draw
+ drawImage the_image 0 0
+
+ # flip x
+ translate 220 0
+ scale -1 1
+ drawImage the_image 0 0
+ scale -1 1
+
+ # flip y
+ translate 20 100
+ scale 1 -1
+ drawImage the_image 0 0
+ scale 1 -1
+
+ # flip x and y
+ translate 220 0
+ scale -1 -1
+ drawImage the_image 0 0
+ scale -1 -1
+
+ # flip y and scale
+ translate 20 10
+ save
+ scale 1 -1.1
+ drawImage the_image 0 0
+ restore
+
+ # flip y and scale
+ translate 220 -110
+ save
+ scale -1.1 0.9
+ drawImage the_image 0 0
+ restore
+restore
+end_block
+
+setRenderHint Antialiasing
+
+resetMatrix
+translate 0 120
+repeat_block draw_stuff
+
+resetMatrix
+translate 720 60
+setPen black
+drawText 0 0 "aliased"
+translate 0 120
+drawText 0 0 "antialiased"
+resetMatrix
+translate 0 260
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "flip x"
+translate 120 0
+drawText 0 0 "flip y"
+translate 120 0
+drawText 0 0 "flip x and y"
+translate 120 0
+drawText 0 0 "flip y and scale"
+translate 120 0
+drawText 0 0 "flip x and scale"
+translate 120 0
+
+setRenderHint SmoothPixmapTransform
+
+resetMatrix
+translate 20 300
+drawImage border.png 0 0 100 100 1 1 8 8
+drawText 0 -5 "subrect color bleeding"
+translate 0 120
+drawImage border.png 0 0 100 100 0 0 10 10
+
+image_load sign.png the_image
+resetMatrix
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 80 80
+
+pixmap_load sign.png the_pixmap
+translate 220 0
+translate 0 -10
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 80 80
+
+
+resetMatrix
+translate 0 170
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 50 50
+
+resetMatrix
+translate 220 170
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 50 50
+
+resetMatrix
+drawText 10 620 "drawImage/Pixmap() with negative x/y and sx/sy"
+setPen red
+
+translate 20 640
+drawImage the_image -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
+
+translate 100 0
+drawPixmap the_pixmap -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
diff --git a/tests/auto/lancelot/scripts/join_cap_styles.qps b/tests/auto/lancelot/scripts/join_cap_styles.qps
new file mode 100644
index 0000000000..ed823f53f5
--- /dev/null
+++ b/tests/auto/lancelot/scripts/join_cap_styles.qps
@@ -0,0 +1,63 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 20 20
+path_cubicTo p 100 20 100 180 180 100
+path_lineTo p 20 180
+path_lineTo p 180 20
+
+setPen black 20 solidline roundcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline squarecap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline flatcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap beveljoin
+drawPath p
+setPen red
+drawPath p \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps b/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps
new file mode 100644
index 0000000000..b4630148e2
--- /dev/null
+++ b/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 600 650)
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 40 70
+path_lineTo p 20 70
+path_cubicTo p 20 70 40 20 80 80
+
+path_moveTo p 20 120
+path_cubicTo p 50 60 80 110 80 110
+path_lineTo p 60 110
+
+scale 2 2
+
+setPen black 10 solidline roundcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -200 100
+setPen black 10 solidline squarecap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -200 100
+setPen black 10 solidline flatcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap beveljoin
+drawPath p
+setPen red
+drawPath p \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_gradients.qps b/tests/auto/lancelot/scripts/linear_gradients.qps
new file mode 100644
index 0000000000..b1b8dd69e7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_gradients.qps
@@ -0,0 +1,144 @@
+# Version: 1
+# CheckVsReference: 2% (0 0 600 750)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 70 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 170 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 270 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Vertical gradient tests
+resetMatrix
+setBrush noBrush
+translate 0 400
+
+begin_block vertical_gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 20 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 120 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 220 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 320 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 420 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 520 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 1.5
+repeat_block vertical_gradients
+
+resetMatrix
+translate 0 650
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block vertical_gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+# gradient line indicators
+drawLine 20 20 70 70
+drawLine 120 20 170 70
+drawLine 220 20 270 70
+drawLine 320 20 340 40
+drawLine 420 20 440 40
+drawLine 520 20 540 40
+
+drawLine 20 140 70 240
+drawLine 120 140 170 240
+drawLine 220 140 270 240
+drawLine 320 140 340 180
+drawLine 420 140 440 180
+drawLine 520 140 540 180
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 350 "brush transform"
+drawText 610 450 "vertical brush"
+drawText 610 570 "vertical brush scale 1x1.5"
+drawText 610 700 "vertical brush transform"
+
+drawText 10 780 "Pad"
+drawText 110 780 "Reflect"
+drawText 210 780 "Repeat"
+drawText 310 780 "Pad w/alpha"
+drawText 410 780 "Reflect w/alpha"
+drawText 510 780 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps b/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps
new file mode 100644
index 0000000000..3ea39fbe46
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 290 290
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_resolving_gradients.qps b/tests/auto/lancelot/scripts/linear_resolving_gradients.qps
new file mode 100644
index 0000000000..779760cb9a
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_resolving_gradients.qps
@@ -0,0 +1,66 @@
+# Version: 2
+# CheckVsReference: 2% (0 0 500 400)
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 0.2 0.2 0.8 0.4
+drawPolygon [300 0 400 0 350 100]
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.4 0.4
+drawPie 400 0 100 100 0 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 510 50 "No XForm"
+drawText 510 200 "scale 1x2"
+drawText 510 350 "brush transform"
+
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lineconsistency.qps b/tests/auto/lancelot/scripts/lineconsistency.qps
new file mode 100644
index 0000000000..0b40577659
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lineconsistency.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+begin_block draw
+setPen red
+drawPolygon [1.1 1 3.3 30.6 23.1 39.2 38.9 6.5]
+setPen black
+drawLine 1.1 1 3.3 30.6
+drawLine 3.3 30.6 23.1 39.2
+drawLine 23.1 39.2 38.9 6.5
+drawLine 38.9 6.5 1.1 1
+end_block draw
+drawText 0 60 "0.0 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.1 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.2 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.3 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.4 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.5 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.6 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.7 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.8 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.9 aligned"
+
+resetMatrix
+translate 100 0
+setPen black
+drawText 0 20 "Line and text, 0.0 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.1 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.2 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.3 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.4 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.5 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.6 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.7 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.8 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.9 aligned"
+drawLine 0 21 160 21 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes.qps b/tests/auto/lancelot/scripts/linedashes.qps
new file mode 100644
index 0000000000..ee7d18b156
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes.qps
@@ -0,0 +1,94 @@
+# Version: 1
+
+translate 10 10
+
+setPen 0xffff0000 0 solidline squarecap
+translate 50 50
+begin_block draw_lines
+ save
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+end_block
+
+setPen 0xffff0000 0 dotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashline squarecap
+translate 100 0
+repeat_block draw_lines \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes2.qps b/tests/auto/lancelot/scripts/linedashes2.qps
new file mode 100644
index 0000000000..1dc4fd310e
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes2.qps
@@ -0,0 +1,154 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 800 800)
+
+translate -30 10
+
+setPen 0xffff0000 0 dashline squarecap
+pen_setDashPattern [10 5]
+
+save
+translate 100 100
+begin_block lines
+drawLine 100 100 200 100
+drawLine 100 100 200 200
+drawLine 100 100 100 200
+end_block
+
+setPen 0xffff0000 2 dashline squarecap
+translate 150 0
+repeat_block lines
+restore
+
+save
+save
+begin_block horizontal
+drawLine 0 0 50 0
+drawLine 3 10 53 10
+drawLine 6 20 56 20
+drawLine 9 30 59 30
+
+translate 0 50
+
+drawLine 0 0 50 5
+drawLine 3 10 53 15
+drawLine 6 20 56 25
+drawLine 9 30 59 35
+
+translate 0 50
+
+drawLine 0 0 50 -5
+drawLine 3 10 53 5
+drawLine 6 20 56 15
+drawLine 9 30 59 25
+end_block
+restore
+
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 800 0
+repeat_block horizontal
+restore
+
+translate 180 -40
+save
+begin_block vertical
+drawLine 0 0 0 50
+drawLine 10 3 10 53
+drawLine 20 6 20 56
+drawLine 30 9 30 59
+
+translate 50 0
+
+drawLine 0 0 5 50
+drawLine 10 3 15 53
+drawLine 20 6 25 56
+drawLine 30 9 35 59
+
+translate 50 0
+
+drawLine 0 0 -5 50
+drawLine 10 3 5 53
+drawLine 20 6 15 56
+drawLine 30 9 25 59
+end_block
+restore
+
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 800
+repeat_block vertical
+restore
+
+translate 0 200
+
+setPen 0xffff0000 2 dashline squarecap
+save
+repeat_block horizontal
+restore
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 780 0
+repeat_block horizontal
+restore
+
+translate 360 -240
+save
+repeat_block vertical
+restore
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 780
+repeat_block vertical
+
+resetMatrix
+translate 40 400
+setPen 0xffff0000 5 dashdotline flatcap
+pen_setDashPattern [1 1 4 1 1 4]
+pen_setDashOffset -4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset -2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 0
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 6
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 8
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 10
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 12
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 14
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 16
+drawLine 0 0 300 0
+
+resetMatrix
+setPen black 3 dashdotline
+pen_setCosmetic true
+translate 0 -150
+drawLine 500 160 500 410 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes2_aa.qps b/tests/auto/lancelot/scripts/linedashes2_aa.qps
new file mode 100644
index 0000000000..c818ab62fe
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes2_aa.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+import "linedashes2.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lines.qps b/tests/auto/lancelot/scripts/lines.qps
new file mode 100644
index 0000000000..c0daffb1b0
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lines.qps
@@ -0,0 +1,558 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 310 425)
+
+
+translate 10 10
+
+begin_block draw_lines
+ save
+ translate 50 50
+
+ save
+ setPen 0x7fff0000
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ # and then draw the lines the other direction
+ save
+ setPen 0x7f0000ff
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ restore
+
+ # and now with a clip
+ save
+ setClipRect -30 -30 60 60
+ setPen 0x7f00ff00
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ restore
+end_block
+
+save
+ translate 100 0
+ scale 2 2
+ repeat_block draw_lines
+restore
+
+translate 0 10
+
+save
+ translate 0 200
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+save
+ translate 100 200
+ scale 2 2
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+translate 320 0
+
+setPen black 0 solidline squarecap
+
+begin_block lines
+
+# 0 -> 45 degress
+drawLine 100 100 200 90
+drawLine 100 100 200 80
+drawLine 100 100 200 70
+drawLine 100 100 200 60
+drawLine 100 100 200 50
+drawLine 100 100 200 40
+drawLine 100 100 200 30
+drawLine 100 100 200 20
+drawLine 100 100 200 10
+
+# 45
+drawLine 100 100 200 0
+
+# 45 -> 90
+drawLine 100 100 190 0
+drawLine 100 100 180 0
+drawLine 100 100 170 0
+drawLine 100 100 160 0
+drawLine 100 100 150 0
+drawLine 100 100 140 0
+drawLine 100 100 130 0
+drawLine 100 100 120 0
+drawLine 100 100 110 0
+
+# 90
+drawLine 100 100 100 0
+
+# 90 -> 135
+drawLine 100 100 90 0
+drawLine 100 100 80 0
+drawLine 100 100 70 0
+drawLine 100 100 60 0
+drawLine 100 100 50 0
+drawLine 100 100 40 0
+drawLine 100 100 30 0
+drawLine 100 100 20 0
+drawLine 100 100 10 0
+
+# 135
+drawLine 100 100 0 0
+
+# 135 -> 180 degress
+drawLine 100 100 0 10
+drawLine 100 100 0 20
+drawLine 100 100 0 30
+drawLine 100 100 0 40
+drawLine 100 100 0 50
+drawLine 100 100 0 60
+drawLine 100 100 0 70
+drawLine 100 100 0 80
+drawLine 100 100 0 90
+
+# 180
+drawLine 100 100 0 100
+
+# 180 -> 225
+drawLine 100 100 0 110
+drawLine 100 100 0 120
+drawLine 100 100 0 130
+drawLine 100 100 0 140
+drawLine 100 100 0 150
+drawLine 100 100 0 160
+drawLine 100 100 0 170
+drawLine 100 100 0 180
+drawLine 100 100 0 190
+
+# 225
+drawLine 100 100 0 200
+
+# 225 -> 270
+drawLine 100 100 10 200
+drawLine 100 100 20 200
+drawLine 100 100 30 200
+drawLine 100 100 40 200
+drawLine 100 100 50 200
+drawLine 100 100 60 200
+drawLine 100 100 70 200
+drawLine 100 100 80 200
+drawLine 100 100 90 200
+
+# 270
+drawLine 100 100 100 200
+
+# 270 -> 315 degrees
+drawLine 100 100 110 200
+drawLine 100 100 120 200
+drawLine 100 100 130 200
+drawLine 100 100 140 200
+drawLine 100 100 150 200
+drawLine 100 100 160 200
+drawLine 100 100 170 200
+drawLine 100 100 180 200
+drawLine 100 100 190 200
+
+# 315
+drawLine 100 100 200 200
+
+# 315 -> 360 degress
+drawLine 100 100 200 100
+drawLine 100 100 200 110
+drawLine 100 100 200 120
+drawLine 100 100 200 130
+drawLine 100 100 200 140
+drawLine 100 100 200 150
+drawLine 100 100 200 160
+drawLine 100 100 200 170
+drawLine 100 100 200 180
+drawLine 100 100 200 190
+
+end_block
+
+
+setRenderHint Antialiasing
+setPen 0x7fff0000
+translate 0.5 0.5
+repeat_block lines
+
+setPen 0x000000 8
+translate 20 240
+drawText 0 0 "Steep slopes:"
+
+translate 0 10
+
+drawLine 0 0 -8 400
+translate 20 0
+drawLine 0 0 -7 400
+translate 20 0
+drawLine 0 0 -6 400
+translate 20 0
+drawLine 0 0 -5 400
+translate 20 0
+drawLine 0 0 -4 400
+translate 20 0
+drawLine 0 0 -3 400
+translate 20 0
+drawLine 0 0 -2 400
+translate 20 0
+drawLine 0 0 -1 400
+translate 20 0
+drawLine 0 0 0 400
+translate 20 0
+drawLine 0 0 1 400
+translate 20 0
+drawLine 0 0 2 400
+translate 20 0
+drawLine 0 0 3 400
+translate 20 0
+drawLine 0 0 4 400
+translate 20 0
+drawLine 0 0 5 400
+translate 20 0
+drawLine 0 0 6 400
+translate 20 0
+drawLine 0 0 7 400
+translate 20 0
+drawLine 0 0 8 400
+
+resetMatrix
+
+translate 20 450
+
+drawText 0 0 "Zero length lines:"
+
+translate 0 20
+drawText 100 10 "Square cap"
+save
+begin_block points
+setPen 0x000000 1 solidline squarecap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline squarecap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline squarecap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline squarecap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline squarecap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline squarecap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline squarecap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline squarecap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline squarecap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline squarecap
+drawLine 78 0 78 0
+end_block points
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Round cap"
+save
+begin_block points2
+setPen 0x000000 1 solidline roundcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline roundcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline roundcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline roundcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline roundcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline roundcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline roundcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline roundcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline roundcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline roundcap
+drawLine 78 0 78 0
+end_block points2
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points2
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Flat cap"
+save
+begin_block points3
+setPen 0x000000 1 solidline flatcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline flatcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline flatcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline flatcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline flatcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline flatcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline flatcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline flatcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline flatcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline flatcap
+drawLine 78 0 78 0
+end_block points3
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points3
+
+resetMatrix
+translate -220 667.226
+drawText 230 -80 "Task 194266 (should see only one line):"
+setPen black
+drawRect 230.5 -70.5 122 12
+setRenderHint Antialiasing
+setPen red
+drawLine 236.842105263 -63.775117299 247.368421053 -63.775437504
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 640
+setPen black
+drawText 0 -10 "Task 207147 (should see two lines):"
+drawRect 0.5 0.5 64 64
+setRenderHint Antialiasing
+setPen red
+
+drawLine 4.5 4.5 4.5001 60.5
+drawLine 4.5 4.5 60.5 4.5001
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 730
+setPen black
+drawText 0 -10 "Task 229459 (should see one diagonal line):"
+drawRect 0.5 0.5 64 64
+setPen red 2 solidline flatcap
+
+setClipRect 2 2 63 63
+drawLine 1.5 1.5 33560000 33560000 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lines2.qps b/tests/auto/lancelot/scripts/lines2.qps
new file mode 100644
index 0000000000..af6ad65939
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lines2.qps
@@ -0,0 +1,179 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 20
+drawText 0 0 "Thin lines"
+
+translate 60 70
+
+save
+begin_block lines
+translate 0 -60
+translate 0 5
+setPen 0x000000 0.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 2
+drawLine -60 -2 60 2
+end_block
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore
+
+setRenderHint Antialiasing
+
+translate 300 0
+
+save
+repeat_block lines
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pathfill.qps b/tests/auto/lancelot/scripts/pathfill.qps
new file mode 100644
index 0000000000..821b4684c9
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pathfill.qps
@@ -0,0 +1,38 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 850 420)
+
+setPen afff0000 4
+
+setBrush dome_rgb32.png
+drawEllipse 10 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 10 200 200
+
+setPen NoPen
+
+setBrush dome_rgb32.png
+drawEllipse 10 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 220 200 200
+
+setBrushOrigin -30 -30
+
+setPen afff0000 4
+setBrush dome_rgb32.png
+drawEllipse 430 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 10 200 200
+
+setPen NoPen
+setBrush dome_rgb32.png
+drawEllipse 430 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 220 200 200
+
+setPen black
+drawText 150 450 "No offset RGB/ARGB"
+drawText 550 450 "-30 offset RGB/ARGB" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/paths.qps b/tests/auto/lancelot/scripts/paths.qps
new file mode 100644
index 0000000000..083026ee17
--- /dev/null
+++ b/tests/auto/lancelot/scripts/paths.qps
@@ -0,0 +1,34 @@
+# Version: 1
+
+setPen black
+setBrush 7f7fff
+
+path_moveTo star 50 0
+path_lineTo star 30 90
+path_lineTo star 100 60
+path_lineTo star 0 20
+path_lineTo star 80 100
+
+setFont "times" 50
+path_addText text 0 50 "ABCD, 1234, abcd, #%&"
+
+path_addRect rectncircle 0 0 75 75
+path_addEllipse rectncircle 25 25 75 75
+path_setFillRule rectncircle winding
+
+path_moveTo curve 100 0
+path_cubicTo curve 100 100 50 50 0 100
+
+begin_block drawing
+drawPath star
+translate 100 0
+drawPath rectncircle
+translate 100 0
+drawPath curve
+translate -200 100
+drawPath text
+end_block
+
+translate 50 100
+rotate 10
+repeat_block drawing
diff --git a/tests/auto/lancelot/scripts/paths_aa.qps b/tests/auto/lancelot/scripts/paths_aa.qps
new file mode 100644
index 0000000000..4812e2fa5f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/paths_aa.qps
@@ -0,0 +1,4 @@
+# Version: 1
+
+setRenderHint LineAntialiasing
+import "paths.qps"
diff --git a/tests/auto/lancelot/scripts/pens.qps b/tests/auto/lancelot/scripts/pens.qps
new file mode 100644
index 0000000000..c72636dcef
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens.qps
@@ -0,0 +1,133 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+
+translate 10 10
+
+begin_block penstyles
+setPen black 0 solidline flatcap
+drawLine 0 0 100 0
+setPen black 0 dashline flatcap
+drawLine 100 0 100 40
+setPen black 0 dotline flatcap
+drawLine 100 40 200 0
+setPen black 0 dashdotline flatcap
+drawLine 200 0 300 0
+setPen black 0 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen blue 2 solidline flatcap
+drawLine 0 0 100 0
+setPen blue 2 dashline flatcap
+drawLine 100 0 100 40
+setPen blue 2 dotline flatcap
+drawLine 100 40 200 0
+setPen blue 2 dashdotline flatcap
+drawLine 200 0 300 0
+setPen blue 2 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen red 5 solidline flatcap
+drawLine 0 0 100 0
+setPen red 5 dashline flatcap
+drawLine 100 0 100 40
+setPen red 5 dotline flatcap
+drawLine 100 40 200 0
+setPen red 5 dashdotline flatcap
+drawLine 200 0 300 0
+setPen red 5 dashdotdotline flatcap
+drawLine 300 0 400 40
+end_block
+
+translate 0 50
+scale 1 2
+repeat_block penstyles
+
+
+# Test cap styles
+resetMatrix
+translate 420 10
+setPen green 5 dashdotline flatcap
+drawLine 0 0 200 0
+setPen green 5 dashdotline roundcap
+drawLine 0 20 200 20
+setPen green 5 dashdotline squarecap
+drawLine 0 40 200 40
+
+
+# Test join styles
+resetMatrix
+translate 420 80
+setBrush nobrush
+begin_block joinstyles
+setPen orange 10 solidline flatcap miterjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen aquamarine 10 solidline squarecap beveljoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen purple 10 solidline roundcap roundjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+end_block
+
+translate 130 -200
+scale 2 1
+rotate 1
+repeat_block joinstyles
+
+# transparent lines
+resetMatrix
+translate 10 400
+setPen #7f000000
+drawLine 0 0 50 0
+setPen #7f000000 1 SolidLine
+drawLine 0 10 50 10
+setPen #7f000000 5 SolidLine
+drawLine 0 20 50 20
+setPen #7f000000 10 SolidLine
+drawLine 0 30 50 30
+setPen #7f000000
+drawLine 0 0 0 50
+setPen #7f000000 1 SolidLine
+drawLine 10 0 10 50
+setPen #7f000000 5 SolidLine
+drawLine 20 0 20 50
+setPen #7f000000 10 SolidLine
+drawLine 30 0 30 50
+
+# pen styles
+resetMatrix
+translate 0 500
+setPen black 0 DashLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotDotLine
+drawLine 20 20 100 20
+
+# scaling ellipse
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawEllipse -0.4 -0.4 0.8 0.8
+
+# scaling path
+path_addEllipse star -0.3 -0.3 0.6 0.6
+
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawPath star
diff --git a/tests/auto/lancelot/scripts/pens_aa.qps b/tests/auto/lancelot/scripts/pens_aa.qps
new file mode 100644
index 0000000000..066cac365f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens_aa.qps
@@ -0,0 +1,6 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+
+import "pens.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pens_cosmetic.qps b/tests/auto/lancelot/scripts/pens_cosmetic.qps
new file mode 100644
index 0000000000..d1a60d150d
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens_cosmetic.qps
@@ -0,0 +1,110 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 585 470)
+
+path_addEllipse path 22 0 7 7
+path_addRect path 25 5 4 4
+
+translate 20 20
+
+begin_block lines
+ save
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+
+ translate 100 0
+ save
+ scale 4 1
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 200 0
+ save
+ scale 1 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 100 0
+ save
+ scale 4 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+ restore
+end_block
+
+drawText 580 15 "non-cosmetic, 0-width"
+translate 0 50
+
+setPen black 2
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+setRenderHint Antialiasing
+translate 0 20
+
+translate 0 50
+setPen black 0
+repeat_block lines
+drawText 580 15 "non-cosmetic, 0-width"
+
+translate 0 50
+
+setPen black 2
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+translate 0 70
+drawText 0 0 "scale(1, 1)"
+drawText 150 0 "scale(4, 1)"
+drawText 300 0 "scale(1, 4)"
+drawText 450 0 "scale(4, 4)" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/perspectives.qps b/tests/auto/lancelot/scripts/perspectives.qps
new file mode 100644
index 0000000000..0b903e5260
--- /dev/null
+++ b/tests/auto/lancelot/scripts/perspectives.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load image.png the_image
+
+translate 10 10
+# standard draw
+drawImage the_image 0 0
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ drawImage the_image 0 0
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ drawImage the_image 0 0
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ drawImage the_image 0 0
+restore
+restore
+
+setRenderHint SmoothPixmapTransform on
+setBrush red
+setPen black
+resetMatrix
+translate 100 720
+rotate_y 85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setBrush gam030.png
+setPen black 30
+translate 700 700
+rotate_y -85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0
+resetMatrix
+translate 300 760
+drawText 0 0 "Perspective Clipping" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/perspectives2.qps b/tests/auto/lancelot/scripts/perspectives2.qps
new file mode 100644
index 0000000000..2f6d1d653c
--- /dev/null
+++ b/tests/auto/lancelot/scripts/perspectives2.qps
@@ -0,0 +1,309 @@
+# Version: 1
+
+setRenderHint Antialiasing
+
+image_load zebra.png zebra_png
+
+image_convertToFormat zebra_png zebra ARGB32_Premultiplied
+
+translate 75 100
+# standard draw
+begin_block row
+drawImage zebra -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage zebra -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage zebra -50 -50
+restore
+end_block
+
+resetMatrix
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row
+
+resetMatrix
+setPen black
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform"
+
+resetMatrix
+translate 0 400
+
+image_load dome_argb32.png the_pixmap
+
+image_convertToFormat the_pixmap dome ARGB32
+
+setRenderHint SmoothPixmapTransform false
+
+translate 75 100
+# standard draw
+begin_block row
+drawImage dome -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage dome -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage dome -50 -50
+restore
+end_block
+
+resetMatrix
+translate 0 400
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row
+
+resetMatrix
+setPen black
+translate 0 400
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 0 400
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_rotation.qps b/tests/auto/lancelot/scripts/pixmap_rotation.qps
new file mode 100644
index 0000000000..2f1ffb53e6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_rotation.qps
@@ -0,0 +1,30 @@
+# Version: 1
+# CheckVsReference: 0% (0 0 440 220)
+
+translate 120 120
+
+begin_block drawing
+save
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+restore
+end_block
+
+resetMatrix
+
+translate 340 120
+repeat_block drawing
+
+resetMatrix
+
+drawText 50 240 "Normal X form"
+drawText 270 240 "Smooth xform" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_scaling.qps b/tests/auto/lancelot/scripts/pixmap_scaling.qps
new file mode 100644
index 0000000000..651896f4a3
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_scaling.qps
@@ -0,0 +1,224 @@
+# Version: 1
+# CheckVsReference: 0% (0 30 600 70)
+# CheckVsReference: 0% (290 130 280 60)
+# CheckVsReference: 0% (0 180 250 90)
+
+# Hurra! Force line endings (?)
+
+translate 5 25
+setFont "arial" 8
+
+save
+ drawText 15 0 "opaque image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage solid2x2.png 0 0
+ restore
+
+
+restore
+
+save
+ translate 150 0
+ drawText 15 0 "alpha image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 0 150
+ drawText 15 0 "solid pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 150 150
+ drawText 15 0 "alpha pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 300 10
+ save
+ drawText 0 -10 "subrect solid image"
+ drawImage solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 0
+ drawText 0 -10 "subrect solid image"
+ drawImage alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 0 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_subpixel.qps b/tests/auto/lancelot/scripts/pixmap_subpixel.qps
new file mode 100644
index 0000000000..908f7c3465
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_subpixel.qps
@@ -0,0 +1,117 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 50 50
+
+# Pixmaps at 0.1 offset, unclipped
+begin_block draw_pixmaps
+save
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+# Tiled pixmaps at 0.1 offsets, unclipped
+translate 0 50
+begin_block draw_tiled
+save
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+
+path_moveTo clip 0 0
+path_lineTo clip width 0
+path_lineTo clip width 400
+path_lineTo clip 0 height
+setClipPath clip
+
+translate 0 50
+# Pixmaps at 0.1 offset, clipped
+repeat_block draw_pixmaps
+
+
+# Tiled pixmaps at 0.1 offsets...
+translate 0 50
+repeat_block draw_tiled
+
diff --git a/tests/auto/lancelot/scripts/pixmaps.qps b/tests/auto/lancelot/scripts/pixmaps.qps
new file mode 100644
index 0000000000..8e60997acc
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmaps.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 690 580)
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+pixmap_load dome_argb32.png the_pixmap
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawPixmap the_pixmap 0 0
+
+ # sub recting
+ translate 120 0
+ drawPixmap the_pixmap 0 0 40 40 0 0 40 40
+ drawPixmap the_pixmap 60 0 40 40 60 0 40 40
+ drawPixmap the_pixmap 0 60 40 40 0 60 40 40
+ drawPixmap the_pixmap 60 60 40 40 60 60 40 40
+ drawPixmap the_pixmap 0 40 40 20 0 40 40 20
+ drawPixmap the_pixmap 60 40 40 20 60 40 40 20
+ drawPixmap the_pixmap 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+pixmap_load dome_rgb32.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed_mask.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_mono.png the_pixmap
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/porter_duff.qps b/tests/auto/lancelot/scripts/porter_duff.qps
new file mode 100644
index 0000000000..166e48a57f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/porter_duff.qps
@@ -0,0 +1,251 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+setBrush 0x7f000000
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+
+setBrush 0x1fff0000
+drawRect 0 0 50 50
+
+setBrush 0xdf00ff00
+drawRect 50 50 50 50
+
+setBrush 0x7f0000ff
+drawEllipse 30 30 40 40
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/porter_duff2.qps b/tests/auto/lancelot/scripts/porter_duff2.qps
new file mode 100644
index 0000000000..a792d9b278
--- /dev/null
+++ b/tests/auto/lancelot/scripts/porter_duff2.qps
@@ -0,0 +1,261 @@
+# Version: 1
+# CheckVsReference: 1% (0 50 600 100)
+# CheckVsReference: 1% (0 200 600 100)
+# CheckVsReference: 1% (0 350 600 100)
+# CheckVsReference: 1% (0 500 600 100)
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+gradient_clearStops
+gradient_appendStop 0 efff0000
+gradient_appendStop 0.5 dfffff00
+gradient_appendStop 1 ef00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 90 90
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+gradient_clearStops
+gradient_appendStop 0 afff0000
+gradient_appendStop 0.5 cf0000ff
+gradient_appendStop 1 bf00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 0 0 100 0
+drawEllipse 10 10 30 30
+drawEllipse 10 60 30 30
+drawEllipse 60 60 30 30
+drawEllipse 60 10 30 30
+drawEllipse 35 35 30 30
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/primitives.qps b/tests/auto/lancelot/scripts/primitives.qps
new file mode 100644
index 0000000000..f44ba27566
--- /dev/null
+++ b/tests/auto/lancelot/scripts/primitives.qps
@@ -0,0 +1,184 @@
+# Version: 1#Version: 1
+# CheckVsReference: 5%
+
+
+# CheckVsReference: 5%
+
+setBrush #ff7f7fff
+setPen black 1 solidline
+translate 20 20
+begin_block testblock
+save
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+translate 50 0
+setPen NoPen
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+restore
+save
+translate 0 50
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+translate 50 0
+setPen NoPen
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+restore
+save
+translate 0 100
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+translate 0 45
+drawPolyline [ 0 0 50 0 25 25 ]
+restore
+setPen NoPen
+translate 50 0
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+restore
+save
+translate -20 100
+drawPie 0 0 50 50 0 1500
+restore
+restore
+end_block
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+translate 0 250
+setBrush 7f7f7fff
+translate 20 20
+repeat_block testblock
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+save
+setRenderHint LineAntialiasing
+setBrush 7f7fff
+translate 20 500
+repeat_block testblock
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+restore
+setRenderHint LineAntialiasing false
+translate 420 20
+begin_block lines
+drawLine 0 0 100 0
+drawLine 0 0 100 10
+drawLine 0 0 100 20
+drawLine 0 0 100 30
+drawLine 0 0 100 40
+drawLine 0 0 100 50
+drawLine 0 0 100 60
+drawLine 0 0 100 70
+drawLine 0 0 100 80
+drawLine 0 0 100 90
+drawLine 0 0 100 100
+drawLine 0 0 90 100
+drawLine 0 0 80 100
+drawLine 0 0 70 100
+drawLine 0 0 60 100
+drawLine 0 0 50 100
+drawLine 0 0 40 100
+drawLine 0 0 30 100
+drawLine 0 0 20 100
+drawLine 0 0 10 100
+drawLine 0 0 0 100
+end_block
+setRenderHint LineAntialiasing
+translate 0 120
+repeat_block lines
+translate 0 120
+scale 5 2
+repeat_block lines
+resetMatrix
+translate 420 500
+begin_block roundedrects
+save
+drawRoundedRect 0 0 50 30 5 5
+translate 60 0
+drawRoundedRect 0 0 50 30 7.5 7.5
+translate 60 0
+drawRoundedRect 0 0 50 30 10 10
+translate 60 0
+drawRoundedRect 0 0 50 30 12.5 12.5
+translate 60 0
+drawRoundedRect 0 0 50 30 15 15
+restore
+save
+translate 0 40
+drawRoundedRect 0 0 50 30 20 20 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 40 40 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 60 60 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 80 80 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 100 100 RelativeSize
+restore
+end_block
+translate 0.5 80.5
+repeat_block roundedrects
+translate -0.5 79.5
+setRenderHint Antialiasing off
+repeat_block roundedrects
+resetMatrix
+setRenderHint Antialiasing off
+setPen black 1
+begin_block drawShapes
+translate 550.5 25
+rotate 45
+setBrush nobrush
+drawEllipse -10 -10 20 20
+drawLine 10 0 50 0
+drawRect 50 -7 14 14
+resetMatrix
+end_block
+setPen black 2
+translate 25 0
+repeat_block drawShapes
+setPen black 3
+translate 50 0
+repeat_block drawShapes
+setPen black 4
+translate 75 0
+repeat_block drawShapes
+resetMatrix
+setRenderHint Antialiasing off
+setPen nopen
+translate 550 100
+setBrush #7f7f7fff
+drawRect -0.5 -0.5 21 21
+setBrush red
+drawEllipse 0 0 20 20
+setBrush nobrush
+setPen black
+drawEllipse 0 0 20 20
+translate 25 0
+setPen nopen
+setBrush #7f7f7fff
+drawRect 0 0 20 20
+setBrush red
+drawEllipse 0 0 20 20 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/radial_gradients.qps b/tests/auto/lancelot/scripts/radial_gradients.qps
new file mode 100644
index 0000000000..b55df8bde6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/radial_gradients.qps
@@ -0,0 +1,99 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 600 400)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 50 40 40
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 120 20 50 140 40
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 220 20 50 240 40
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setRadial 320 20 50 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 420 20 50 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 520 20 50 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 300 "brush transform"
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Reflect w/alpha"
+drawText 510 450 "Repeat w/alpha"
+
+# Radius and focal indicators
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+setClipRect 0 0 100 100
+drawEllipse -30 -30 100 100
+drawEllipse 35 35 11 11
+translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps b/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps
new file mode 100644
index 0000000000..4557354dce
--- /dev/null
+++ b/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 110 100 230 230 240
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/rasterops.qps b/tests/auto/lancelot/scripts/rasterops.qps
new file mode 100644
index 0000000000..21f943b543
--- /dev/null
+++ b/tests/auto/lancelot/scripts/rasterops.qps
@@ -0,0 +1,87 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+
+setBrush black
+drawRect 10 10 60 500
+
+setCompositionMode SourceOrDestination
+translate 20 20
+
+begin_block drawShape
+ setBrush 0xffff0000
+ drawEllipse 5 5 30 30
+ setBrush 0xff00ff00
+ drawRect 0 0 20 20
+ setBrush 0xff0000ff
+ drawRect 20 20 20 20
+end_block
+
+begin_block loop
+ setCompositionMode SourceAndDestination
+ translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceOrNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSource
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+end_block
+
+resetMatrix
+setCompositionMode Source
+setBrush white
+drawRect 100 10 60 500
+translate 110 20
+repeat_block loop
+
+resetMatrix
+setCompositionMode Source
+translate 190 20
+repeat_block loop
+
+resetMatrix
+setPen black
+setCompositionMode SourceOver
+translate 250 45
+drawText 20 0 "Or ROP"
+translate 0 50
+drawText 20 0 "And ROP"
+translate 0 50
+drawText 20 0 "Xor ROP"
+translate 0 50
+drawText 20 0 "Nor ROP"
+translate 0 50
+drawText 20 0 "Nand ROP"
+translate 0 50
+drawText 0 0 "NSrcXorDst ROP"
+translate 0 50
+drawText 20 0 "NSrc ROP"
+translate 0 50
+drawText 0 0 "NSrcAndDst ROP"
+translate 0 50
+drawText 0 0 "SrcAndNDst ROP" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/sizes.qps b/tests/auto/lancelot/scripts/sizes.qps
new file mode 100644
index 0000000000..268808ec09
--- /dev/null
+++ b/tests/auto/lancelot/scripts/sizes.qps
@@ -0,0 +1,150 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+setBrush black
+
+translate 10 10
+
+begin_block testblock
+drawRect 0 0 10 10
+drawRect 20 0 11 11
+drawRect 40 0 12 12
+drawRect 60 0 13 13
+drawRect 80 0 14 14
+drawRect 100 0 15 15
+drawRect 120 0 16 16
+drawRect 140 0 17 17
+drawRect 160 0 18 18
+drawRect 180 0 19 19
+# qt3_drawRect 200 0 10 10
+# qt3_drawRect 220 0 11 11
+# qt3_drawRect 240 0 12 12
+# qt3_drawRect 260 0 13 13
+# qt3_drawRect 280 0 14 14
+# qt3_drawRect 300 0 15 15
+# qt3_drawRect 320 0 16 16
+# qt3_drawRect 340 0 17 17
+# qt3_drawRect 360 0 18 18
+# qt3_drawRect 380 0 19 19
+
+drawEllipse 0 20 10 10
+drawEllipse 20 20 11 11
+drawEllipse 40 20 12 12
+drawEllipse 60 20 13 13
+drawEllipse 80 20 14 14
+drawEllipse 100 20 15 15
+drawEllipse 120 20 16 16
+drawEllipse 140 20 17 17
+drawEllipse 160 20 18 18
+drawEllipse 180 20 19 19
+# qt3_drawEllipse 200 20 10 10
+# qt3_drawEllipse 220 20 11 11
+# qt3_drawEllipse 240 20 12 12
+# qt3_drawEllipse 260 20 13 13
+# qt3_drawEllipse 280 20 14 14
+# qt3_drawEllipse 300 20 15 15
+# qt3_drawEllipse 320 20 16 16
+# qt3_drawEllipse 340 20 17 17
+# qt3_drawEllipse 360 20 18 18
+# qt3_drawEllipse 380 20 19 19
+
+drawRoundRect 0 40 10 10
+drawRoundRect 20 40 11 11
+drawRoundRect 40 40 12 12
+drawRoundRect 60 40 13 13
+drawRoundRect 80 40 14 14
+drawRoundRect 100 40 15 15
+drawRoundRect 120 40 16 16
+drawRoundRect 140 40 17 17
+drawRoundRect 160 40 18 18
+drawRoundRect 180 40 19 19
+# qt3_drawRoundRect 200 40 10 10
+# qt3_drawRoundRect 220 40 11 11
+# qt3_drawRoundRect 240 40 12 12
+# qt3_drawRoundRect 260 40 13 13
+# qt3_drawRoundRect 280 40 14 14
+# qt3_drawRoundRect 300 40 15 15
+# qt3_drawRoundRect 320 40 16 16
+# qt3_drawRoundRect 340 40 17 17
+# qt3_drawRoundRect 360 40 18 18
+# qt3_drawRoundRect 380 40 19 19
+
+drawPie 0 60 10 10 0 4320
+drawPie 20 60 11 11 0 4320
+drawPie 40 60 12 12 0 4320
+drawPie 60 60 13 13 0 4320
+drawPie 80 60 14 14 0 4320
+drawPie 100 60 15 15 0 4320
+drawPie 120 60 16 16 0 4320
+drawPie 140 60 17 17 0 4320
+drawPie 160 60 18 18 0 4320
+drawPie 180 60 19 19 0 4320
+# qt3_drawPie 200 60 10 10 0 4320
+# qt3_drawPie 220 60 11 11 0 4320
+# qt3_drawPie 240 60 12 12 0 4320
+# qt3_drawPie 260 60 13 13 0 4320
+# qt3_drawPie 280 60 14 14 0 4320
+# qt3_drawPie 300 60 15 15 0 4320
+# qt3_drawPie 320 60 16 16 0 4320
+# qt3_drawPie 340 60 17 17 0 4320
+# qt3_drawPie 360 60 18 18 0 4320
+# qt3_drawPie 380 60 19 19 0 4320
+
+drawArc 0 80 10 10 0 4320
+drawArc 20 80 11 11 0 4320
+drawArc 40 80 12 12 0 4320
+drawArc 60 80 13 13 0 4320
+drawArc 80 80 14 14 0 4320
+drawArc 100 80 15 15 0 4320
+drawArc 120 80 16 16 0 4320
+drawArc 140 80 17 17 0 4320
+drawArc 160 80 18 18 0 4320
+drawArc 180 80 19 19 0 4320
+# qt3_drawArc 200 80 10 10 0 4320
+# qt3_drawArc 220 80 11 11 0 4320
+# qt3_drawArc 240 80 12 12 0 4320
+# qt3_drawArc 260 80 13 13 0 4320
+# qt3_drawArc 280 80 14 14 0 4320
+# qt3_drawArc 300 80 15 15 0 4320
+# qt3_drawArc 320 80 16 16 0 4320
+# qt3_drawArc 340 80 17 17 0 4320
+# qt3_drawArc 360 80 18 18 0 4320
+# qt3_drawArc 380 80 19 19 0 4320
+
+drawChord 0 100 10 10 0 4320
+drawChord 20 100 11 11 0 4320
+drawChord 40 100 12 12 0 4320
+drawChord 60 100 13 13 0 4320
+drawChord 80 100 14 14 0 4320
+drawChord 100 100 15 15 0 4320
+drawChord 120 100 16 16 0 4320
+drawChord 140 100 17 17 0 4320
+drawChord 160 100 18 18 0 4320
+drawChord 180 100 19 19 0 4320
+# qt3_drawChord 200 100 10 10 0 4320
+# qt3_drawChord 220 100 11 11 0 4320
+# qt3_drawChord 240 100 12 12 0 4320
+# qt3_drawChord 260 100 13 13 0 4320
+# qt3_drawChord 280 100 14 14 0 4320
+# qt3_drawChord 300 100 15 15 0 4320
+# qt3_drawChord 320 100 16 16 0 4320
+# qt3_drawChord 340 100 17 17 0 4320
+# qt3_drawChord 360 100 18 18 0 4320
+# qt3_drawChord 380 100 19 19 0 4320
+
+end_block
+
+setPen red
+translate 0 150
+repeat_block testblock
+
+setRenderHint LineAntialiasing
+
+setPen nopen
+translate 0 150
+repeat_block testblock
+
+setPen red
+translate 0 150
+repeat_block testblock
diff --git a/tests/auto/lancelot/scripts/text.qps b/tests/auto/lancelot/scripts/text.qps
new file mode 100644
index 0000000000..d7ee83290b
--- /dev/null
+++ b/tests/auto/lancelot/scripts/text.qps
@@ -0,0 +1,124 @@
+# Version: 1
+
+drawText -5 5 "Text that is drawn outside the bounds..."
+
+translate 20 20
+begin_block text_drawing
+save
+ setFont "sansserif" 10 normal
+ drawText 0 20 "sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen #7fff0000
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "alpha sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "alpha sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "alpha sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "alpha sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen black
+ save
+ scale 0.9 0.9
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ setPen black
+ save
+ translate 200 90
+ rotate 185
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ gradient_appendStop 0 red
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 200 0
+ setPen brush
+
+ setFont "sansserif" 10 normal
+ drawText 0 0 "gradient sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 20 "gradient sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 40 "gradient sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 60 "gradient sansserif 10pt, bold italic"
+restore
+end_block
+
+translate 250 0
+drawText 25 520 "clipped to rectangle"
+save
+ setPen #3f000000
+ setBrush nobrush
+ drawRect 20 0 100 500
+ setClipRect 20 0 100 500
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+drawText 25 520 "clipped to path"
+save
+ path_moveTo clip 20 0
+ path_cubicTo clip 0 200 40 400 20 400
+ path_lineTo clip 30 500
+ path_lineTo clip 30 0
+ path_lineTo clip 40 0
+ path_lineTo clip 40 500
+ path_lineTo clip 120 500
+ path_lineTo clip 120 0
+ path_lineTo clip 20 0
+ setPen #3f000000
+ setBrush nobrush
+ drawPath clip
+ setClipPath clip
+ setPen black
+ repeat_block text_drawing
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/text_perspectives.qps b/tests/auto/lancelot/scripts/text_perspectives.qps
new file mode 100644
index 0000000000..4c74306265
--- /dev/null
+++ b/tests/auto/lancelot/scripts/text_perspectives.qps
@@ -0,0 +1,102 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen black
+
+translate 10 10
+# standard draw
+begin_block text
+setBrush gray
+drawRect 0 0 300 300
+
+setFont "times" 3
+drawText 10 10 "Hello World...."
+
+setFont "times" 4
+drawText 10 20 "Hello World...."
+
+setFont "times" 5
+drawText 10 30 "Hello World...."
+
+setFont "times" 6
+drawText 10 40 "Hello World...."
+
+setFont "times" 7
+drawText 10 50 "Hello World...."
+
+setFont "times" 8
+drawText 10 60 "Hello World...."
+
+setFont "times" 9
+drawText 10 70 "Hello World...."
+
+setFont "times" 10
+drawText 10 80 "Hello World...."
+
+setFont "times" 16
+drawText 10 100 "Hello World...."
+
+setFont "times" 17
+drawText 10 120 "Hello World...."
+
+setFont "times" 18
+drawText 10 140 "Hello World...."
+
+setFont "times" 20
+drawText 10 160 "Hello World...."
+
+setFont "times" 22
+drawText 10 180 "Hello World...."
+
+setFont "times" 24
+drawText 10 205 "Hello World...."
+
+setFont "times" 26
+drawText 10 230 "Hello World...."
+
+setFont "times" 32
+drawText 10 260 "Hello World...."
+end_block text
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block text
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block text
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block text
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/tiled_pixmap.qps b/tests/auto/lancelot/scripts/tiled_pixmap.qps
new file mode 100644
index 0000000000..9cb5e0dd1f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/tiled_pixmap.qps
@@ -0,0 +1,84 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 639 638)
+
+
+translate 0 10
+setRenderHint Antialiasing
+
+pixmap_load dome_argb32 the_pixmap
+
+begin_block draw_stuff
+save
+
+ # Standard draw
+ drawTiledPixmap the_pixmap 0 0 150 100 0 0
+
+ # Standard draw with offset
+ translate 160 0
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+
+ # xformed
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform false
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+
+ # xformed with smooth xform
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+restore
+end_block
+
+translate 0 120
+pixmap_load dome_rgb32 the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed_mask the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_mono the_pixmap
+repeat_block draw_stuff
+
+
+################################################################################
+# Some helpful text...
+#
+
+resetMatrix
+translate 650 80
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+
+resetMatrix
+translate 10 630
+drawText 0 0 "normal"
+translate 160 0
+drawText 0 0 "offset"
+translate 160 0
+drawText 0 0 "xformed"
+translate 160 0
+drawText 0 0 "smooth xformed"
diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp
new file mode 100644
index 0000000000..a06a25168c
--- /dev/null
+++ b/tests/auto/lancelot/tst_lancelot.cpp
@@ -0,0 +1,302 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <paintcommands.h>
+#include <QPainter>
+#include <QLibraryInfo>
+#include <baselineprotocol.h>
+#include <QHash>
+
+#ifndef QT_NO_OPENGL
+#include <QtOpenGL>
+#endif
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+static const QLatin1String scriptsDir(SRCDIR "/scripts/");
+
+class tst_Lancelot : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_Lancelot();
+
+private:
+ ImageItem render(const ImageItem &item);
+ void paint(QPaintDevice *device, const QStringList &script, const QString &filePath);
+ void runTestSuite();
+ bool setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist);
+
+ BaselineProtocol proto;
+ ImageItemList baseList;
+ QHash<QString, QStringList> scripts;
+
+private slots:
+ void initTestCase();
+ void cleanupTestCase() {}
+
+ void testRasterARGB32PM_data();
+ void testRasterARGB32PM();
+ void testRasterRGB32_data();
+ void testRasterRGB32();
+ void testRasterRGB16_data();
+ void testRasterRGB16();
+
+#ifndef QT_NO_OPENGL
+ void testOpenGL_data();
+ void testOpenGL();
+#endif
+};
+
+tst_Lancelot::tst_Lancelot()
+{
+}
+
+void tst_Lancelot::initTestCase()
+{
+ // Check and setup the environment. We treat failures because of test environment
+ // (e.g. script files not found) as just warnings, and not QFAILs, to avoid false negatives
+ // caused by environment or server instability
+
+#if defined(Q_OS_SOMEPLATFORM)
+ QSKIP("This test is not supported on this platform.", SkipAll);
+#endif
+ if (!proto.connect()) {
+ QTest::qSleep(3000); // Wait a bit and try again, the server might just be restarting
+ if (!proto.connect()) {
+ QWARN(qPrintable(proto.errorMessage()));
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+ }
+ }
+
+ QDir qpsDir(scriptsDir);
+ QStringList files = qpsDir.entryList(QStringList() << QLatin1String("*.qps"), QDir::Files | QDir::Readable);
+ if (files.isEmpty()) {
+ QWARN("No qps script files found in " + qpsDir.path().toLatin1());
+ QSKIP("Aborted due to errors.", SkipAll);
+ }
+
+ baseList.resize(files.count());
+ ImageItemList::iterator it = baseList.begin();
+ foreach(const QString& fileName, files) {
+ QFile file(scriptsDir + fileName);
+ file.open(QFile::ReadOnly);
+ QByteArray cont = file.readAll();
+ scripts.insert(fileName, QString::fromLatin1(cont).split(QLatin1Char('\n'), QString::SkipEmptyParts));
+ it->scriptName = fileName;
+ it->scriptChecksum = qChecksum(cont.constData(), cont.size());
+ it++;
+ }
+}
+
+
+void tst_Lancelot::testRasterARGB32PM_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_ARGB32_Premultiplied, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterARGB32PM()
+{
+ runTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB32_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB32, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterRGB32()
+{
+ runTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB16_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB16, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterRGB16()
+{
+ runTestSuite();
+}
+
+
+#ifndef QT_NO_OPENGL
+void tst_Lancelot::testOpenGL_data()
+{
+ QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
+ if (!setupTestSuite(ImageItem::OpenGL, QImage::Format_RGB32, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testOpenGL()
+{
+ bool ok = false;
+ QGLWidget glWidget;
+ if (glWidget.isValid() && glWidget.format().directRendering()
+ && ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0)
+ || (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))
+ && QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ {
+ glWidget.makeCurrent();
+ if (!QByteArray((const char *)glGetString(GL_VERSION)).contains("Mesa"))
+ ok = true;
+ }
+ if (ok)
+ runTestSuite();
+ else
+ QSKIP("System under test does not meet preconditions for GL testing. Skipping.", SkipAll);
+}
+#endif
+
+
+bool tst_Lancelot::setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist)
+{
+ QTest::addColumn<ImageItem>("baseline");
+
+ ImageItemList itemList(baseList);
+
+ for(ImageItemList::iterator it = itemList.begin(); it != itemList.end(); it++) {
+ it->engine = engine;
+ it->renderFormat = format;
+ }
+
+ if (!proto.requestBaselineChecksums(&itemList)) {
+ QWARN(qPrintable(proto.errorMessage()));
+ return false;
+ }
+
+ foreach(const ImageItem& item, itemList) {
+ if (!blacklist.contains(item.scriptName))
+ QTest::newRow(item.scriptName.toLatin1()) << item;
+ }
+ return true;
+}
+
+
+void tst_Lancelot::runTestSuite()
+{
+ QFETCH(ImageItem, baseline);
+
+ if (baseline.status == ImageItem::IgnoreItem)
+ QSKIP("Blacklisted by baseline server.", SkipSingle);
+
+ ImageItem rendered = render(baseline);
+ if (rendered.image.isNull()) { // Assume an error in the test environment, not Qt
+ QWARN("Error: Failed to render image.");
+ QSKIP("Aborted due to errors.", SkipSingle);
+ }
+
+ if (baseline.status == ImageItem::BaselineNotFound) {
+ proto.submitNewBaseline(rendered, 0);
+ QSKIP("Baseline not found; new baseline created.", SkipSingle);
+ }
+
+ if (!baseline.imageChecksums.contains(rendered.imageChecksums.at(0))) {
+ QByteArray serverMsg;
+ if (!proto.submitMismatch(rendered, &serverMsg))
+ serverMsg = "Failed to submit mismatching image to server.";
+ QFAIL("Rendered image differs from baseline.\n" + serverMsg);
+ }
+}
+
+
+ImageItem tst_Lancelot::render(const ImageItem &item)
+{
+ ImageItem res = item;
+ res.imageChecksums.clear();
+ res.image = QImage();
+ QString filePath = scriptsDir + item.scriptName;
+ QStringList script = scripts.value(item.scriptName);
+
+ if (item.engine == ImageItem::Raster) {
+ QImage img(800, 800, item.renderFormat);
+ paint(&img, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
+ res.image = img;
+ res.imageChecksums.append(ImageItem::computeChecksum(img));
+#ifndef QT_NO_OPENGL
+ } else if (item.engine == ImageItem::OpenGL) {
+ QGLWidget glWidget;
+ if (glWidget.isValid()) {
+ glWidget.makeCurrent();
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setSamples(16);
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ QGLFramebufferObject fbo(800, 800, fboFormat);
+ paint(&fbo, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
+ res.image = fbo.toImage().convertToFormat(item.renderFormat);
+ res.imageChecksums.append(ImageItem::computeChecksum(res.image));
+ }
+#endif
+ }
+
+ return res;
+}
+
+void tst_Lancelot::paint(QPaintDevice *device, const QStringList &script, const QString &filePath)
+{
+ QPainter p(device);
+ PaintCommands pcmd(script, 800, 800);
+ pcmd.setType(ImageType);
+ pcmd.setPainter(&p);
+ pcmd.setFilePath(filePath);
+ pcmd.runCommands();
+ p.end();
+}
+
+QTEST_MAIN(tst_Lancelot)
+#include "tst_lancelot.moc"
diff --git a/tests/auto/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp
index 322e2e4586..d2c6f0f522 100644
--- a/tests/auto/mediaobject/tst_mediaobject.cpp
+++ b/tests/auto/mediaobject/tst_mediaobject.cpp
@@ -682,7 +682,7 @@ void tst_MediaObject::testPauseOnFinish()
}
void tst_MediaObject::testReconnectBetweenTwoMediaObjects(){
- // Purpose: Test that phonon can handle swithing the same sink
+ // Purpose: Test that phonon can handle switching the same sink
// between different media objects.
Phonon::MediaObject obj1;
diff --git a/tests/auto/other.pro b/tests/auto/other.pro
index 3c8f856a6b..d1a7a861b8 100644
--- a/tests/auto/other.pro
+++ b/tests/auto/other.pro
@@ -4,6 +4,7 @@
TEMPLATE=subdirs
SUBDIRS=\
# exceptionsafety_objects \ shouldn't enable it
+ lancelot \
qaccessibility \
qalgorithms \
qcombobox \
diff --git a/tests/auto/platformquirks.h b/tests/auto/platformquirks.h
new file mode 100644
index 0000000000..06d23d726b
--- /dev/null
+++ b/tests/auto/platformquirks.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PLATFORMQUIRKS_H
+#define PLATFORMQUIRKS_H
+
+#include <qglobal.h>
+
+#ifdef QT_GUI_LIB
+#include <qapplication.h>
+#endif
+
+#ifdef Q_WS_X11
+#include <private/qt_x11_p.h>
+#endif
+
+struct PlatformQuirks
+{
+ enum MediaFileTypes
+ {
+ mp3,
+ wav,
+ ogg
+ };
+
+ /* On some platforms, libpng or libjpeg sacrifice precision for speed.
+ Esp. with NEON support, color values after decoding can be off by up
+ to three bytes.
+ */
+ static inline bool isImageLoaderImprecise()
+ {
+#ifdef Q_WS_MAEMO_5
+ return true;
+#elif defined(Q_WS_X11)
+ // ### this is a very bad assumption, we should really check the version of libjpeg
+ return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR;
+#else
+ return false;
+#endif
+ }
+
+ /* Some windowing systems automatically maximize apps on startup (e.g. Maemo)
+ "Normal" fixed-sized windows do not work, the WM ignores their size settings.
+ */
+ static inline bool isAutoMaximizing()
+ {
+#ifdef Q_WS_MAEMO_5
+ return true;
+#elif defined(Q_WS_X11)
+ return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR;
+#else
+ return false;
+#endif
+ }
+
+ static inline bool haveMouseCursor()
+ {
+#ifdef Q_WS_MAEMO_5
+ return false;
+#elif defined(Q_WS_X11)
+ return X11->desktopEnvironment != DE_MEEGO_COMPOSITOR;
+#else
+ return true;
+#endif
+ }
+
+ /* On some systems an ogg codec is not installed by default.
+ The autotests have to know which fileType is the default on the system*/
+ static inline MediaFileTypes defaultMediaFileType()
+ {
+#ifdef Q_WS_MAEMO_5
+ return PlatformQuirks::mp3;
+#endif
+#ifdef Q_WS_X11
+ // ### very bad assumption
+ if (X11->desktopEnvironment == DE_MEEGO_COMPOSITOR)
+ return PlatformQuirks::mp3;
+#endif
+ return PlatformQuirks::ogg;
+ }
+};
+
+#endif
+
diff --git a/tests/auto/q_func_info/q_func_info.pro b/tests/auto/q_func_info/q_func_info.pro
index b30e3fb857..64f08d4d8d 100644
--- a/tests/auto/q_func_info/q_func_info.pro
+++ b/tests/auto/q_func_info/q_func_info.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_q_func_info.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
index da8382605d..d6c4b53218 100644
--- a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
+++ b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
@@ -353,12 +353,13 @@ void tst_QAbstractScrollArea::task214488_layoutDirection()
void tst_QAbstractScrollArea::patternBackground()
{
- QScrollArea scrollArea;
+ QWidget topLevel;
+ QScrollArea scrollArea(&topLevel);
scrollArea.resize(200, 200);
QWidget widget;
widget.resize(600, 600);
scrollArea.setWidget(&widget);
- scrollArea.show();
+ topLevel.show();
QLinearGradient linearGrad(QPointF(250, 250), QPointF(300, 300));
linearGrad.setColorAt(0, Qt::yellow);
diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp
index cf069db4fe..cd41d05b9c 100644
--- a/tests/auto/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp
@@ -55,6 +55,8 @@
class Slider : public QAbstractSlider
{
public:
+ Slider(QWidget *parent)
+ : QAbstractSlider(parent) {}
using QAbstractSlider::setRepeatAction;
using QAbstractSlider::repeatAction;
};
@@ -95,6 +97,7 @@ private slots:
private:
void waitUntilTimeElapsed(const QTime& t, int ms);
+ QWidget *topLevel;
Slider *slider;
int previousAction;
int reportedMinimum;
@@ -113,7 +116,8 @@ Q_DECLARE_METATYPE(QPoint)
void tst_QAbstractSlider::initTestCase()
{
- slider = new Slider;
+ topLevel = new QWidget;
+ slider = new Slider(topLevel);
slider->setObjectName("testWidget");
slider->resize(100,100);
slider->show();
@@ -129,7 +133,7 @@ void tst_QAbstractSlider::initTestCase()
void tst_QAbstractSlider::cleanupTestCase()
{
- delete slider;
+ delete topLevel;
}
void tst_QAbstractSlider::actionTriggered(int action)
@@ -735,7 +739,6 @@ void tst_QAbstractSlider::wheelEvent_data()
<< 100 // expected position after
#endif
<< QPoint(1,1);
-
QTest::newRow("Different orientation") << 0 // initial position
<< 0 // minimum
<< 100 // maximum
@@ -774,7 +777,6 @@ void tst_QAbstractSlider::wheelEvent_data()
#endif
<< QPoint(0,0);
-
QTest::newRow("Inverted controls") << 50 // initial position
<< 0 // minimum
<< 100 // maximum
@@ -924,6 +926,7 @@ void tst_QAbstractSlider::sliderPressedReleased()
QFETCH(uint, subControl);
QFETCH(int, expectedCount);
+ QWidget topLevel;
QAbstractSlider *slider;
switch (control) {
default:
@@ -931,11 +934,11 @@ void tst_QAbstractSlider::sliderPressedReleased()
return;
break;
case QStyle::CC_Slider:
- slider = new QSlider;
+ slider = new QSlider(&topLevel);
slider->setLayoutDirection(Qt::LeftToRight); // Makes "upside down" much easier to compute
break;
case QStyle::CC_ScrollBar:
- slider = new QScrollBar;
+ slider = new QScrollBar(&topLevel);
break;
}
@@ -949,7 +952,7 @@ void tst_QAbstractSlider::sliderPressedReleased()
QSignalSpy spy2(slider, SIGNAL(sliderReleased()));
// Mac Style requires the control to be active to get the correct values...
- slider->show();
+ topLevel.show();
slider->activateWindow();
QStyleOptionSlider option;
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index 713ad0899b..e331e02308 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -2269,6 +2269,7 @@ void tst_QAccessibility::scrollBarTest()
delete scrollBarInterface;
delete scrollBar;
+
// Test that the rects are ok.
{
QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal);
@@ -2289,7 +2290,6 @@ void tst_QAccessibility::scrollBarTest()
const QRect scrollBarRect = scrollBarInterface->rect(0);
QVERIFY(scrollBarRect.isValid());
-
// Verify that the sub-control rects are valid and inside the scrollBar rect.
for (int i = LineUp; i <= LineDown; ++i) {
const QRect testRect = scrollBarInterface->rect(i);
@@ -3469,14 +3469,15 @@ void tst_QAccessibility::tableWidgetTest()
{
#ifdef QTEST_ACCESSIBILITY
{
- QTableWidget *w = new QTableWidget(8,4);
+ QWidget *topLevel = new QWidget;
+ QTableWidget *w = new QTableWidget(8,4,topLevel);
for (int r = 0; r < 8; ++r) {
for (int c = 0; c < 4; ++c) {
w->setItem(r, c, new QTableWidgetItem(tr("%1,%2").arg(c).arg(r)));
}
}
w->resize(100, 100);
- w->show();
+ topLevel->show();
#if defined(Q_WS_X11)
qt_x11_wait_for_window_manager(w);
QTest::qWait(100);
@@ -3503,6 +3504,7 @@ void tst_QAccessibility::tableWidgetTest()
delete view;
delete client;
delete w;
+ delete topLevel;
}
QTestAccessibility::clearEvents();
#else
diff --git a/tests/auto/qalgorithms/tst_qalgorithms.cpp b/tests/auto/qalgorithms/tst_qalgorithms.cpp
index 690bbbd5fd..17e6c0407d 100644
--- a/tests/auto/qalgorithms/tst_qalgorithms.cpp
+++ b/tests/auto/qalgorithms/tst_qalgorithms.cpp
@@ -81,6 +81,7 @@ private slots:
void test_qBinaryFind();
void qBinaryFindOneEntry();
void swap();
+ void swap2();
void sortEmptyList();
void sortedList();
void sortAPItest();
@@ -521,6 +522,28 @@ void tst_QAlgorithms::swap()
}
}
+namespace SwapTest {
+ struct ST { int i; int j; };
+ void swap(ST &a, ST &b) {
+ a.i = b.j;
+ b.i = a.j;
+ }
+}
+
+void tst_QAlgorithms::swap2()
+{
+ {
+#ifndef QT_NO_SQL
+ //check the namespace lookup works correctly
+ SwapTest::ST a = { 45, 65 };
+ SwapTest::ST b = { 48, 68 };
+ qSwap(a, b);
+ QCOMPARE(a.i, 68);
+ QCOMPARE(b.i, 65);
+#endif
+ }
+}
+
void tst_QAlgorithms::sortEmptyList()
{
// Only test if it crashes
diff --git a/tests/auto/qanimationgroup/qanimationgroup.pro b/tests/auto/qanimationgroup/qanimationgroup.pro
index 31667a8388..5e1be0cb10 100644
--- a/tests/auto/qanimationgroup/qanimationgroup.pro
+++ b/tests/auto/qanimationgroup/qanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qatomicint/qatomicint.pro b/tests/auto/qatomicint/qatomicint.pro
index 4a09d5f176..7850d93dc7 100644
--- a/tests/auto/qatomicint/qatomicint.pro
+++ b/tests/auto/qatomicint/qatomicint.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qatomicpointer/qatomicpointer.pro b/tests/auto/qatomicpointer/qatomicpointer.pro
index d192bad5dc..89ff137d39 100644
--- a/tests/auto/qatomicpointer/qatomicpointer.pro
+++ b/tests/auto/qatomicpointer/qatomicpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicpointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbitarray/qbitarray.pro b/tests/auto/qbitarray/qbitarray.pro
index ec110c62cd..358d81bad1 100644
--- a/tests/auto/qbitarray/qbitarray.pro
+++ b/tests/auto/qbitarray/qbitarray.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbitarray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbitarray/tst_qbitarray.cpp b/tests/auto/qbitarray/tst_qbitarray.cpp
index 30f4f586a4..7b9543e579 100644
--- a/tests/auto/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/qbitarray/tst_qbitarray.cpp
@@ -88,6 +88,7 @@ private slots:
void countBits();
void countBits2();
void isEmpty();
+ void swap();
void fill();
void toggleBit_data();
void toggleBit();
@@ -269,6 +270,14 @@ void tst_QBitArray::isEmpty()
QVERIFY(a1.size() == 2);
}
+void tst_QBitArray::swap()
+{
+ QBitArray b1 = QStringToQBitArray("1"), b2 = QStringToQBitArray("10");
+ b1.swap(b2);
+ QCOMPARE(b1,QStringToQBitArray("10"));
+ QCOMPARE(b2,QStringToQBitArray("1"));
+}
+
void tst_QBitArray::fill()
{
int N = 64;
diff --git a/tests/auto/qboxlayout/tst_qboxlayout.cpp b/tests/auto/qboxlayout/tst_qboxlayout.cpp
index c4acfdc56c..659f8a5391 100644
--- a/tests/auto/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/qboxlayout/tst_qboxlayout.cpp
@@ -198,7 +198,8 @@ void tst_QBoxLayout::sizeConstraints()
void tst_QBoxLayout::setGeometry()
{
- QWidget w;
+ QWidget toplevel;
+ QWidget w(&toplevel);
QVBoxLayout *lay = new QVBoxLayout;
lay->setMargin(0);
lay->setSpacing(0);
@@ -209,7 +210,7 @@ void tst_QBoxLayout::setGeometry()
lay2->setAlignment(Qt::AlignRight);
lay->addLayout(lay2);
w.setLayout(lay);
- w.show();
+ toplevel.show();
QRect newGeom(0, 0, 70, 70);
lay2->setGeometry(newGeom);
diff --git a/tests/auto/qbrush/tst_qbrush.cpp b/tests/auto/qbrush/tst_qbrush.cpp
index 7e94f375b0..c9be55209f 100644
--- a/tests/auto/qbrush/tst_qbrush.cpp
+++ b/tests/auto/qbrush/tst_qbrush.cpp
@@ -76,6 +76,7 @@ private slots:
void textures();
+ void swap();
void nullBrush();
void isOpaque();
void debug();
@@ -385,6 +386,14 @@ void tst_QBrush::textures()
QCOMPARE(image_brush.textureImage(), image_source);
}
+void tst_QBrush::swap()
+{
+ QBrush b1(Qt::black), b2(Qt::white);
+ b1.swap(b2);
+ QCOMPARE(b1.color(), QColor(Qt::white));
+ QCOMPARE(b2.color(), QColor(Qt::black));
+}
+
void tst_QBrush::nullBrush()
{
QBrush brush(QColor(100,0,0), Qt::NoBrush);
diff --git a/tests/auto/qbuffer/qbuffer.pro b/tests/auto/qbuffer/qbuffer.pro
index ea8365766b..b768eb82d8 100644
--- a/tests/auto/qbuffer/qbuffer.pro
+++ b/tests/auto/qbuffer/qbuffer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
index a610a7f917..1831e5d54f 100644
--- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
+++ b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
@@ -396,19 +396,20 @@ void tst_QButtonGroup::task106609()
vbox->addWidget(radio2);
buttons->addButton(radio3, 3);
vbox->addWidget(radio3);
-
- radio1->setFocus();
- radio1->setChecked(true);
dlg.show();
+ QTest::qWaitForWindowShown(&dlg);
qRegisterMetaType<QAbstractButton*>("QAbstractButton*");
QSignalSpy spy1(buttons, SIGNAL(buttonClicked(QAbstractButton*)));
QSignalSpy spy2(buttons, SIGNAL(buttonClicked(int)));
- QTestEventLoop::instance().enterLoop(1);
QApplication::setActiveWindow(&dlg);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&dlg));
+ radio1->setFocus();
+ radio1->setChecked(true);
+ QTestEventLoop::instance().enterLoop(1);
+
//qDebug() << "int:" << spy2.count() << "QAbstractButton*:" << spy1.count();
QCOMPARE(spy2.count(), 2);
QCOMPARE(spy1.count(), 2);
diff --git a/tests/auto/qbytearray/qbytearray.pro b/tests/auto/qbytearray/qbytearray.pro
index 35e48ad512..f195dc8c71 100644
--- a/tests/auto/qbytearray/qbytearray.pro
+++ b/tests/auto/qbytearray/qbytearray.pro
@@ -18,3 +18,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qbytearray/tst_qbytearray.cpp b/tests/auto/qbytearray/tst_qbytearray.cpp
index 0dc2282fcd..c291c6afb7 100644
--- a/tests/auto/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/qbytearray/tst_qbytearray.cpp
@@ -71,6 +71,7 @@ public slots:
void init();
void cleanup();
private slots:
+ void swap();
void qCompress_data();
#ifndef QT_NO_COMPRESS
void qCompress();
@@ -453,6 +454,14 @@ void tst_QByteArray::split()
QCOMPARE(list.count(), size);
}
+void tst_QByteArray::swap()
+{
+ QByteArray b1 = "b1", b2 = "b2";
+ b1.swap(b2);
+ QCOMPARE(b1, QByteArray("b2"));
+ QCOMPARE(b2, QByteArray("b1"));
+}
+
void tst_QByteArray::base64_data()
{
QTest::addColumn<QByteArray>("rawdata");
diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
index 1618c3e18e..a2458e623f 100644
--- a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
+++ b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qbytearraymatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcache/qcache.pro b/tests/auto/qcache/qcache.pro
index 728b0b646f..0da4e1414f 100644
--- a/tests/auto/qcache/qcache.pro
+++ b/tests/auto/qcache/qcache.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcache.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
index 042d8e027d..01473d83e1 100644
--- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -82,7 +82,8 @@ private slots:
// Testing get/set functions
void tst_QCalendarWidget::getSetCheck()
{
- QCalendarWidget object;
+ QWidget topLevel;
+ QCalendarWidget object(&topLevel);
//horizontal header formats
object.setHorizontalHeaderFormat(QCalendarWidget::NoHorizontalHeader);
@@ -191,7 +192,7 @@ void tst_QCalendarWidget::buttonClickCheck()
QCOMPARE(month, object.monthShown());
button = qFindChild<QToolButton *>(&object, "qt_calendar_yearbutton");
- QTest::mouseClick(button, Qt::LeftButton);
+ QTest::mouseClick(button, Qt::LeftButton, Qt::NoModifier, button->rect().center(), 2);
QVERIFY(!button->isVisible());
QSpinBox *spinbox = qFindChild<QSpinBox *>(&object, "qt_calendar_yearedit");
QTest::qWait(500);
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index 9cfccc2a25..9fcf132211 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -13,3 +13,4 @@ symbian: {
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qcolumnview/tst_qcolumnview.cpp b/tests/auto/qcolumnview/tst_qcolumnview.cpp
index 1da8c5dc16..d4caede87a 100644
--- a/tests/auto/qcolumnview/tst_qcolumnview.cpp
+++ b/tests/auto/qcolumnview/tst_qcolumnview.cpp
@@ -398,9 +398,10 @@ void tst_QColumnView::scrollTo()
QFETCH(bool, giveFocus);
if (reverse)
qApp->setLayoutDirection(Qt::RightToLeft);
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
view.resize(200, 200);
- view.show();
+ topLevel.show();
view.scrollTo(QModelIndex(), QAbstractItemView::EnsureVisible);
QCOMPARE(view.HorizontalOffset(), 0);
@@ -428,6 +429,8 @@ void tst_QColumnView::scrollTo()
view.setFocus(Qt::OtherFocusReason);
else
view.clearFocus();
+
+ qApp->processEvents();
QTRY_COMPARE(view.hasFocus(), giveFocus);
// scroll to the right
int level = 0;
@@ -718,13 +721,14 @@ void tst_QColumnView::moveGrip()
QFETCH(bool, reverse);
if (reverse)
qApp->setLayoutDirection(Qt::RightToLeft);
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
TreeModel model;
view.setModel(&model);
QModelIndex home = model.thirdLevel();
view.setCurrentIndex(home);
view.resize(640, 200);
- view.show();
+ topLevel.show();
QTest::qWait(ANIMATION_DELAY);
int columnNum = view.createdColumns.count() - 2;
@@ -741,9 +745,9 @@ void tst_QColumnView::moveGrip()
QAbstractItemView *column = qobject_cast<QAbstractItemView *>(grip->parent());
int oldX = column->width();
- QCOMPARE(view.columnWidths()[columnNum], oldX);
+ QCOMPARE(view.columnWidths().value(columnNum), oldX);
grip->moveGrip(10);
- QCOMPARE(view.columnWidths()[columnNum], (oldX + (reverse ? -10 : 10)));
+ QCOMPARE(view.columnWidths().value(columnNum), (oldX + (reverse ? -10 : 10)));
}
void tst_QColumnView::doubleClick()
@@ -889,12 +893,13 @@ void tst_QColumnView::rowDelegate()
void tst_QColumnView::resize()
{
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
QDirModel model;
view.setModel(&model);
view.resize(200, 200);
- view.show();
+ topLevel.show();
QModelIndex home = model.index(QDir::homePath()).parent();
view.setCurrentIndex(home);
QTest::qWait(ANIMATION_DELAY);
diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp
index 71dab40a07..a2b3bbb077 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -164,7 +164,7 @@ protected slots:
private:
QComboBox *testWidget;
- QDialog *parent;
+ QWidget *parent;
QPushButton* ok;
int editTextCount;
QString editText;
@@ -396,7 +396,7 @@ tst_QComboBox::~tst_QComboBox()
void tst_QComboBox::initTestCase()
{
// Create the test class
- parent = new QDialog(0);
+ parent = new QWidget(0, Qt::Window);
parent->setObjectName("parent");
parent->resize(400, 400);
testWidget = new QComboBox(parent);
@@ -1927,7 +1927,8 @@ void tst_QComboBox::itemListPosition()
//we test QFontComboBox because it has the specific behaviour to set a fixed size
//to the list view
- QFontComboBox combo;
+ QWidget topLevel;
+ QFontComboBox combo(&topLevel);
//the code to get the avaialbe screen space is copied from QComboBox code
const int scrNumber = QApplication::desktop()->screenNumber(&combo);
@@ -1945,7 +1946,7 @@ void tst_QComboBox::itemListPosition()
combo.move(screen.width()-combo.sizeHint().width(), 0); //puts the combo to the top-right corner
- combo.show();
+ topLevel.show();
//wait because the window manager can move the window if there is a right panel
QTRY_VERIFY(combo.isVisible());
combo.showPopup();
@@ -2267,9 +2268,10 @@ void tst_QComboBox::noScrollbar()
qApp->setStyleSheet(stylesheet);
{
- QComboBox comboBox;
+ QWidget topLevel;
+ QComboBox comboBox(&topLevel);
comboBox.addItems(initialContent);
- comboBox.show();
+ topLevel.show();
comboBox.resize(200, comboBox.height());
QTRY_VERIFY(comboBox.isVisible());
comboBox.showPopup();
diff --git a/tests/auto/qcomplextext/tst_qcomplextext.cpp b/tests/auto/qcomplextext/tst_qcomplextext.cpp
index 4a96725d96..c66d4522db 100644
--- a/tests/auto/qcomplextext/tst_qcomplextext.cpp
+++ b/tests/auto/qcomplextext/tst_qcomplextext.cpp
@@ -45,6 +45,7 @@
#if !defined(Q_WS_MAC)
#include <QtTest/QtTest>
+#include <QtGui/QtGui>
#include <private/qtextengine_p.h>
#include "bidireorderstring.h"
@@ -68,6 +69,8 @@ public slots:
private slots:
void bidiReorderString_data();
void bidiReorderString();
+ void bidiCursor_qtbug2795();
+ void bidiCursor_PDF();
};
tst_QComplexText::tst_QComplexText()
@@ -159,6 +162,42 @@ void tst_QComplexText::bidiReorderString()
QTEST(visual, "VISUAL");
}
+void tst_QComplexText::bidiCursor_qtbug2795()
+{
+ QString str = QString::fromUtf8("الجزيرة نت");
+ QTextLayout l1(str);
+
+ l1.beginLayout();
+ QTextLine line1 = l1.createLine();
+ l1.endLayout();
+
+ qreal x1 = line1.cursorToX(0) - line1.cursorToX(str.size());
+
+ str.append("1");
+ QTextLayout l2(str);
+ l2.beginLayout();
+ QTextLine line2 = l2.createLine();
+ l2.endLayout();
+
+ qreal x2 = line2.cursorToX(0) - line2.cursorToX(str.size());
+
+ // The cursor should remain at the same position after a digit is appended
+ QVERIFY(x1 == x2);
+}
+
+void tst_QComplexText::bidiCursor_PDF()
+{
+ QString str = QString::fromUtf8("\342\200\252hello\342\200\254");
+ QTextLayout layout(str);
+
+ layout.beginLayout();
+ QTextLine line = layout.createLine();
+ layout.endLayout();
+
+ int size = str.size();
+
+ QVERIFY(line.cursorToX(size) == line.cursorToX(size - 1));
+}
QTEST_MAIN(tst_QComplexText)
#include "tst_qcomplextext.moc"
diff --git a/tests/auto/qcontiguouscache/qcontiguouscache.pro b/tests/auto/qcontiguouscache/qcontiguouscache.pro
index 618efed29f..5951f87f89 100644
--- a/tests/auto/qcontiguouscache/qcontiguouscache.pro
+++ b/tests/auto/qcontiguouscache/qcontiguouscache.pro
@@ -6,3 +6,4 @@ SOURCES += tst_qcontiguouscache.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
index f64e815ada..568ba06c28 100644
--- a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -55,6 +55,8 @@ public:
virtual ~tst_QContiguousCache() {}
private slots:
void empty();
+ void swap();
+
void append_data();
void append();
@@ -99,6 +101,17 @@ void tst_QContiguousCache::empty()
QCOMPARE(c.capacity(), 10);
}
+void tst_QContiguousCache::swap()
+{
+ QContiguousCache<int> c1(10), c2(100);
+ c1.append(1);
+ c1.swap(c2);
+ QCOMPARE(c1.capacity(), 100);
+ QCOMPARE(c1.count(), 0 );
+ QCOMPARE(c2.capacity(), 10 );
+ QCOMPARE(c2.count(), 1 );
+}
+
void tst_QContiguousCache::append_data()
{
QTest::addColumn<int>("start");
diff --git a/tests/auto/qcoreapplication/qcoreapplication.pro b/tests/auto/qcoreapplication/qcoreapplication.pro
index 27f5e58d6d..031af39df7 100644
--- a/tests/auto/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/qcoreapplication/qcoreapplication.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcoreapplication.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcryptographichash/qcryptographichash.pro b/tests/auto/qcryptographichash/qcryptographichash.pro
index 7e1a866bc3..65e31dcb57 100644
--- a/tests/auto/qcryptographichash/qcryptographichash.pro
+++ b/tests/auto/qcryptographichash/qcryptographichash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdate/qdate.pro b/tests/auto/qdate/qdate.pro
index 6e2781b3d8..1c041004d3 100644
--- a/tests/auto/qdate/qdate.pro
+++ b/tests/auto/qdate/qdate.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdate.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdatetime/qdatetime.pro b/tests/auto/qdatetime/qdatetime.pro
index 02d39892a0..08a321ef75 100644
--- a/tests/auto/qdatetime/qdatetime.pro
+++ b/tests/auto/qdatetime/qdatetime.pro
@@ -12,3 +12,4 @@ win32-msvc|win32-msvc9x {
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdebug/qdebug.pro b/tests/auto/qdebug/qdebug.pro
index 6e75a092e7..2b5716860c 100644
--- a/tests/auto/qdebug/qdebug.pro
+++ b/tests/auto/qdebug/qdebug.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdebug.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdiriterator/qdiriterator.pro b/tests/auto/qdiriterator/qdiriterator.pro
index 020b229e71..140b57da72 100644
--- a/tests/auto/qdiriterator/qdiriterator.pro
+++ b/tests/auto/qdiriterator/qdiriterator.pro
@@ -10,3 +10,4 @@ wince*|symbian: {
wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp b/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
index 26890b3424..98c474010b 100644
--- a/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
+++ b/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
@@ -214,6 +214,13 @@ void tst_QDoubleValidator::validate_data()
arabicNum += QChar(1643);
arabicNum += QChar(1636);
QTest::newRow("arabic") << "ar" << 0.0 << 20.0 << 2 << arabicNum << ACC << ACC;
+
+ QTest::newRow("data_QTBUG_14935-1") << "de" << 0.0 << 1.0 << 5 << QString("0.31") << ACC << ACC;
+ QTest::newRow("data_QTBUG_14935-2") << "de" << 0.0 << 1000000.0 << 5 << QString("3.123") << ACC << ACC;
+ QTest::newRow("data_QTBUG_14935-3") << "de" << 0.0 << 1000000.0 << 5 << QString("123,345.678") << ACC << ACC;
+
+ QTest::newRow("data_de_problem-1") << "de" << 0.0 << 10.0 << 0 << QString("1.0") << ITM << ITM;
+ QTest::newRow("data_de_problem-2") << "de" << 0.0 << 10.0 << 0 << QString("0.1") << INV << INV;
}
void tst_QDoubleValidator::validate()
@@ -226,6 +233,9 @@ void tst_QDoubleValidator::validate()
QFETCH(QValidator::State, scientific_state);
QFETCH(QValidator::State, standard_state);
+ QEXPECT_FAIL("data_de_problem-1", "To be fixed. See QTBUG-15210.", Abort);
+ QEXPECT_FAIL("data_de_problem-2", "To be fixed. See QTBUG-15210.", Abort);
+
QLocale::setDefault(QLocale(localeName));
QDoubleValidator dv(minimum, maximum, decimals, 0);
@@ -308,6 +318,8 @@ void tst_QDoubleValidator::validateIntEquiv()
QFETCH(QString, input);
QFETCH(QValidator::State, state);
+ QLocale::setDefault(QLocale("C"));
+
QDoubleValidator dv(minimum, maximum, 0, 0);
dv.setNotation(QDoubleValidator::StandardNotation);
int dummy;
diff --git a/tests/auto/qeasingcurve/qeasingcurve.pro b/tests/auto/qeasingcurve/qeasingcurve.pro
index 2b66081914..2a3a075d8a 100644
--- a/tests/auto/qeasingcurve/qeasingcurve.pro
+++ b/tests/auto/qeasingcurve/qeasingcurve.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT = core
SOURCES += tst_qeasingcurve.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qelapsedtimer/qelapsedtimer.pro b/tests/auto/qelapsedtimer/qelapsedtimer.pro
index ed752284ec..876887678f 100644
--- a/tests/auto/qelapsedtimer/qelapsedtimer.pro
+++ b/tests/auto/qelapsedtimer/qelapsedtimer.pro
@@ -11,3 +11,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qevent/qevent.pro b/tests/auto/qevent/qevent.pro
index 5c142996f1..6042b6cdc9 100644
--- a/tests/auto/qevent/qevent.pro
+++ b/tests/auto/qevent/qevent.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qevent.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp
index 8c2ffd93c7..8331a5f072 100644
--- a/tests/auto/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/qeventloop/tst_qeventloop.cpp
@@ -431,7 +431,7 @@ void tst_QEventLoop::exec()
QCOMPARE(executor.returnCode, -1);
}
-#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN)
+#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN) && !defined(NO_EVENTLOOP_EXCEPTIONS)
// Windows Mobile cannot handle cross library exceptions
// qobject.cpp will try to rethrow the exception after handling
// which causes gwes.exe to crash
diff --git a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
index 8a45aa27b2..cf574ffc40 100644
--- a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
+++ b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qexplicitlyshareddatapointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp
index 7659a7563f..202f21234c 100644
--- a/tests/auto/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp
@@ -74,6 +74,10 @@
# define SRCDIR ""
#endif
+QT_BEGIN_NAMESPACE
+extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
+QT_END_NAMESPACE
+
//TESTED_CLASS=
//TESTED_FILES=
@@ -977,6 +981,10 @@ void tst_QFileInfo::fileTimes()
QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
#endif
QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+#ifdef Q_OS_UNIX
+ if (qIsLikelyToBeNfs(file.handle()))
+ QSKIP("This Test doesn't work on NFS", SkipAll);
+#endif
QTextStream ts(&file);
ts << fileName << endl;
}
diff --git a/tests/auto/qflags/qflags.pro b/tests/auto/qflags/qflags.pro
index cd7f759b8b..097a218a5a 100644
--- a/tests/auto/qflags/qflags.pro
+++ b/tests/auto/qflags/qflags.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qflags.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfuture/qfuture.pro b/tests/auto/qfuture/qfuture.pro
index c2b16b7587..d6faae716c 100644
--- a/tests/auto/qfuture/qfuture.pro
+++ b/tests/auto/qfuture/qfuture.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qfuture.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfuturewatcher/qfuturewatcher.pro b/tests/auto/qfuturewatcher/qfuturewatcher.pro
index 79d8739b30..67f04ef0e5 100644
--- a/tests/auto/qfuturewatcher/qfuturewatcher.pro
+++ b/tests/auto/qfuturewatcher/qfuturewatcher.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qfuturewatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgetputenv/qgetputenv.pro b/tests/auto/qgetputenv/qgetputenv.pro
index cbde2727a5..df94f14473 100644
--- a/tests/auto/qgetputenv/qgetputenv.pro
+++ b/tests/auto/qgetputenv/qgetputenv.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qgetputenv.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index dfcfb473c7..7f9ee04933 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -96,6 +96,7 @@ private slots:
void shareRegister();
void qglContextDefaultBindTexture();
void textureCleanup();
+ void threadImages();
};
tst_QGL::tst_QGL()
@@ -2245,6 +2246,127 @@ void tst_QGL::textureCleanup()
#endif
}
+namespace ThreadImages {
+
+class Producer : public QObject
+{
+ Q_OBJECT
+public:
+ Producer()
+ {
+ startTimer(20);
+
+ QThread *thread = new QThread;
+ thread->start();
+
+ connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
+
+ moveToThread(thread);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ }
+
+signals:
+ void imageReady(const QImage &image);
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ QImage image(256, 256, QImage::Format_RGB32);
+ QLinearGradient g(0, 0, 0, 256);
+ g.setColorAt(0, QColor(255, 180, 180));
+ g.setColorAt(1, Qt::white);
+ g.setSpread(QGradient::ReflectSpread);
+
+ QBrush brush(g);
+ brush.setTransform(QTransform::fromTranslate(0, delta));
+ delta += 10;
+
+ QPainter p(&image);
+ p.fillRect(image.rect(), brush);
+
+ if (images.size() > 10)
+ images.removeFirst();
+
+ images.append(image);
+
+ emit imageReady(image);
+ }
+
+private:
+ QList<QImage> images;
+ int delta;
+};
+
+
+class DisplayWidget : public QGLWidget
+{
+ Q_OBJECT
+public:
+ DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.drawImage(rect(), m_image);
+ }
+
+public slots:
+ void setImage(const QImage &image)
+ {
+ m_image = image;
+ update();
+ }
+
+private:
+ QImage m_image;
+};
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ Widget()
+ : iterations(0)
+ , display(0)
+ , producer(new Producer)
+ {
+ startTimer(400);
+ connect(this, SIGNAL(destroyed()), producer, SLOT(deleteLater()));
+ }
+
+ int iterations;
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ ++iterations;
+
+ delete display;
+ display = new DisplayWidget(this);
+ connect(producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
+
+ display->setGeometry(rect());
+ display->show();
+ }
+
+private:
+ DisplayWidget *display;
+ Producer *producer;
+};
+
+}
+
+void tst_QGL::threadImages()
+{
+ ThreadImages::Widget *widget = new ThreadImages::Widget;
+ widget->show();
+
+ while (widget->iterations <= 5) {
+ qApp->processEvents();
+ }
+
+ delete widget;
+}
+
class tst_QGLDummy : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qglobal/qglobal.pro b/tests/auto/qglobal/qglobal.pro
index 8f1e00a2cb..a4dffac815 100644
--- a/tests/auto/qglobal/qglobal.pro
+++ b/tests/auto/qglobal/qglobal.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qglobal.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
index 07fa630066..5315cd1cf6 100644
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -51,6 +51,7 @@
#include "../../shared/util.h"
#include <private/qgraphicseffect_p.h>
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -710,7 +711,10 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache()
scene.addItem(item);
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(item->nbPaint, 1);
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index a3bd0b041c..0b294105d9 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -94,6 +94,8 @@ Q_DECLARE_METATYPE(QRectF)
#define COMPARE_REGIONS QTRY_COMPARE
#endif
+#include "../platformquirks.h"
+
static QGraphicsRectItem staticItem; //QTBUG-7629, we should not crash at exit.
static void sendMousePress(QGraphicsScene *scene, const QPointF &point, Qt::MouseButton button = Qt::LeftButton)
@@ -272,7 +274,7 @@ class MyGraphicsView : public QGraphicsView
public:
int repaints;
QRegion paintedRegion;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+ MyGraphicsView(QGraphicsScene *scene, QWidget *parent=0) : QGraphicsView(scene,parent), repaints(0) {}
void paintEvent(QPaintEvent *e)
{
paintedRegion += e->region();
@@ -4070,9 +4072,10 @@ void tst_QGraphicsItem::cursor()
item1->setCursor(Qt::IBeamCursor);
item2->setCursor(Qt::PointingHandCursor);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.setFixedSize(200, 100);
- view.show();
+ topLevel.show();
QTest::mouseMove(&view, view.rect().center());
QTest::qWait(25);
@@ -4094,6 +4097,8 @@ void tst_QGraphicsItem::cursor()
QApplication::sendEvent(view.viewport(), &event);
}
+ if (!PlatformQuirks::haveMouseCursor())
+ return;
#if !defined(Q_OS_WINCE)
QTest::qWait(250);
#else
@@ -4959,7 +4964,10 @@ void tst_QGraphicsItem::paint()
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QApplication::processEvents();
#ifdef Q_OS_WIN32
@@ -5975,9 +5983,10 @@ void tst_QGraphicsItem::untransformable()
QGraphicsScene scene(-500, -500, 1000, 1000);
scene.addItem(item1);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.resize(300, 300);
- view.show();
+ topLevel.show();
view.scale(8, 8);
view.centerOn(0, 0);
@@ -6616,7 +6625,10 @@ void tst_QGraphicsItem::opacity2()
scene.addItem(parent);
MyGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(view.repaints >= 1);
@@ -7050,6 +7062,7 @@ void tst_QGraphicsItem::tabChangesFocus()
widget.setLayout(layout);
widget.show();
QTest::qWaitForWindowShown(&widget);
+ QTest::qWait(2000);
QTRY_VERIFY(scene.isActive());
@@ -7495,9 +7508,11 @@ void tst_QGraphicsItem::update()
{
QGraphicsScene scene;
scene.setSceneRect(-100, -100, 200, 200);
- MyGraphicsView view(&scene);
+ QWidget topLevel;
+ MyGraphicsView view(&scene,&topLevel);
- view.show();
+ topLevel.resize(300, 300);
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
@@ -7776,10 +7791,11 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption()
MyStyleOptionTester *rect = new MyStyleOptionTester(QRect(0, 0, 100, 100));
scene.addItem(rect);
rect->setPos(200, 200);
- QGraphicsView view(&scene);
- view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ QWidget topLevel;
+ QGraphicsView view(&scene, &topLevel);
+ topLevel.setWindowFlags(Qt::X11BypassWindowManagerHint);
rect->startTrack = false;
- view.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&view);
QTest::qWait(60);
rect->startTrack = true;
@@ -7980,6 +7996,9 @@ void tst_QGraphicsItem::sorting_data()
void tst_QGraphicsItem::sorting()
{
+ if (PlatformQuirks::isAutoMaximizing())
+ QSKIP("Skipped because Platform is auto maximizing", SkipAll);
+
_paintedItems.clear();
QGraphicsScene scene;
@@ -8015,7 +8034,7 @@ void tst_QGraphicsItem::sorting()
_paintedItems.clear();
view.viewport()->repaint();
-#ifdef Q_WS_MAC
+#if defined(Q_WS_MAC)
// There's no difference between repaint and update on the Mac,
// so we have to process events here to make sure we get the event.
QTest::qWait(100);
@@ -8114,10 +8133,13 @@ void tst_QGraphicsItem::hitTestGraphicsEffectItem()
QGraphicsScene scene;
scene.setSceneRect(-100, -100, 200, 200);
- QGraphicsView view(&scene);
- view.show();
+ QWidget toplevel;
+
+ QGraphicsView view(&scene, &toplevel);
+ toplevel.resize(300, 300);
+ toplevel.show();
#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&view);
+ qt_x11_wait_for_window_manager(&toplevel);
#endif
QTest::qWait(100);
@@ -10721,7 +10743,10 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
scene.addItem(parent);
MyGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(view.repaints > 0);
@@ -10769,7 +10794,10 @@ void tst_QGraphicsItem::QT_2653_fullUpdateDiscardingOpacityUpdate()
// ItemIgnoresTransformations, ItemClipsChildrenToShape, ItemIsSelectable
parentGreen->setFlag(QGraphicsItem::ItemIgnoresTransformations);
- view.show();
+ if (PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
view.reset();
@@ -10954,7 +10982,10 @@ void tst_QGraphicsItem::doNotMarkFullUpdateIfNotInScene()
item3->setParentItem(item2);
item2->setParentItem(item);
scene.addItem(item);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(view.repaints, 1);
QTRY_COMPARE(item->painted, 1);
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 09cf4e2d53..6a2f8490c9 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -2694,12 +2694,14 @@ void tst_QGraphicsScene::render()
QPixmap pix(30, 30);
pix.fill(Qt::blue);
- QGraphicsScene scene;
+ QGraphicsView view;
+ QGraphicsScene scene(&view);
scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::white));
scene.addEllipse(QRectF(-2, -7, 4, 4), QPen(Qt::black), QBrush(Qt::yellow))->setZValue(1);
QGraphicsPixmapItem *item = scene.addPixmap(pix);
item->setZValue(2);
item->setOffset(QPointF(3, 3));
+ view.show();
scene.setSceneRect(scene.itemsBoundingRect());
@@ -2820,6 +2822,8 @@ void tst_QGraphicsScene::contextMenuEvent()
QGraphicsView view(&scene);
view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
@@ -2851,12 +2855,14 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations()
item->setFlag(QGraphicsItem::ItemIgnoresTransformations);
scene.addItem(item);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene, &topLevel);
view.resize(200, 200);
- view.show();
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
+ QTest::qWaitForWindowShown(&topLevel);
{
QPoint pos(50, 50);
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index a53f04da0c..44f35043d5 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -69,8 +69,10 @@
#include <QtGui/QStyle>
#include <QtGui/QPushButton>
#include <QtGui/QInputContext>
+#include <QtGui/QDesktopWidget>
#include <private/qgraphicsview_p.h>
#include "../../shared/util.h"
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -401,10 +403,13 @@ void tst_QGraphicsView::interactive()
scene.addItem(item);
QGraphicsView view(&scene);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.setFixedSize(300, 300);
QCOMPARE(item->events.size(), 0);
view.show();
QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
QApplication::processEvents();
QTRY_COMPARE(item->events.size(), 1); // activate
@@ -532,13 +537,15 @@ void tst_QGraphicsView::sceneRect()
void tst_QGraphicsView::sceneRect_growing()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
for (int i = 0; i < 100; ++i)
scene.addText(QString("(0, %1)").arg((i - 50) * 20))->setPos(0, (i - 50) * 20);
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setFixedSize(200, 200);
- view.show();
+ toplevel.show();
int size = 200;
scene.setSceneRect(-size, -size, size * 2, size * 2);
@@ -855,15 +862,17 @@ void tst_QGraphicsView::dragMode_rubberBand()
void tst_QGraphicsView::rubberBandSelectionMode()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
QGraphicsRectItem *rect = scene.addRect(QRectF(10, 10, 80, 80));
rect->setFlag(QGraphicsItem::ItemIsSelectable);
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
QCOMPARE(view.rubberBandSelectionMode(), Qt::IntersectsItemShape);
view.setDragMode(QGraphicsView::RubberBandDrag);
view.resize(120, 120);
- view.show();
+ toplevel.show();
// Disable mouse tracking to prevent the window system from sending mouse
// move events to the viewport while we are synthesizing events. If
@@ -1072,16 +1081,18 @@ void tst_QGraphicsView::matrix_combine()
void tst_QGraphicsView::centerOnPoint()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
scene.addEllipse(QRectF(-100, -100, 50, 50));
scene.addEllipse(QRectF(50, -100, 50, 50));
scene.addEllipse(QRectF(-100, 50, 50, 50));
scene.addEllipse(QRectF(50, 50, 50, 50));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setSceneRect(-400, -400, 800, 800);
view.setFixedSize(100, 100);
- view.show();
+ toplevel.show();
int tolerance = 5;
@@ -1156,6 +1167,8 @@ void tst_QGraphicsView::centerOnItem()
void tst_QGraphicsView::ensureVisibleRect()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
QGraphicsItem *items[4];
items[0] = scene.addEllipse(QRectF(-25, -25, 50, 50), QPen(Qt::black), QBrush(Qt::green));
@@ -1171,11 +1184,11 @@ void tst_QGraphicsView::ensureVisibleRect()
QGraphicsItem *icon = scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::gray));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setSceneRect(-500, -500, 1000, 1000);
view.setFixedSize(250, 250);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
for (int y = -100; y < 100; y += 25) {
for (int x = -100; x < 100; x += 13) {
@@ -1254,6 +1267,9 @@ void tst_QGraphicsView::fitInView()
view.setFixedSize(400, 200);
#endif
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
+
view.show();
view.fitInView(scene.itemsBoundingRect(), Qt::IgnoreAspectRatio);
qApp->processEvents();
@@ -1433,10 +1449,12 @@ void tst_QGraphicsView::itemsInRect_cosmeticAdjust()
QGraphicsView view(&scene);
view.setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing, !adjustForAntialiasing);
view.setRenderHint(QPainter::Antialiasing, adjustForAntialiasing);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.setFrameStyle(0);
view.resize(300, 300);
view.show();
- QTest::qWaitForWindowShown(&view) ;
+ QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(rect->numPaints > 0);
rect->numPaints = 0;
@@ -1615,7 +1633,8 @@ void tst_QGraphicsView::mapToScene()
QGraphicsScene scene;
scene.addPixmap(QPixmap("3D-Qt-1-2.png"));
- QGraphicsView view;
+ QWidget topLevel;
+ QGraphicsView view(&topLevel);
view.setScene(&scene);
view.setSceneRect(-500, -500, 1000, 1000);
#if defined(Q_OS_WINCE)
@@ -1625,7 +1644,7 @@ void tst_QGraphicsView::mapToScene()
#endif
view.setFixedSize(viewSize);
- view.show();
+ topLevel.show();
QApplication::processEvents();
QVERIFY(view.isVisible());
QCOMPARE(view.size(), viewSize);
@@ -1805,11 +1824,14 @@ void tst_QGraphicsView::mapFromScenePoint()
}
}
{
+ QWidget toplevel;
+
QGraphicsScene scene(0, 0, 200, 200);
scene.addRect(QRectF(0, 0, 200, 200), QPen(Qt::black, 1));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
+ view.ensurePolished();
view.resize(view.sizeHint());
- view.show();
+ toplevel.show();
QCOMPARE(view.mapFromScene(0, 0), QPoint(0, 0));
QCOMPARE(view.mapFromScene(0.4, 0.4), QPoint(0, 0));
@@ -1827,12 +1849,13 @@ void tst_QGraphicsView::mapFromScenePoint()
void tst_QGraphicsView::mapFromSceneRect()
{
QGraphicsScene scene;
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.rotate(90);
view.setFixedSize(200, 200);
view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- view.show();
+ topLevel.show();
QTest::qWait(25);
QPolygon polygon;
@@ -2031,6 +2054,9 @@ void tst_QGraphicsView::cursor()
#if defined(Q_OS_WINCE)
QSKIP("Qt/CE does not have regular cursor support", SkipAll);
#endif
+ if (PlatformQuirks::haveMouseCursor())
+ QSKIP("The Platform does not have regular cursor support", SkipAll);
+
QGraphicsScene scene;
QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20));
item->setCursor(Qt::IBeamCursor);
@@ -2058,6 +2084,9 @@ void tst_QGraphicsView::cursor2()
#if defined(Q_OS_WINCE)
QSKIP("Qt/CE does not have regular cursor support", SkipAll);
#endif
+ if (PlatformQuirks::haveMouseCursor())
+ QSKIP("The Platform does not have regular cursor support", SkipAll);
+
QGraphicsScene scene;
QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20));
item->setCursor(Qt::IBeamCursor);
@@ -2210,6 +2239,8 @@ class CustomView : public QGraphicsView
Q_OBJECT
public:
CustomView(QGraphicsScene *s = 0) : QGraphicsView(s) {}
+ CustomView(QGraphicsScene *s, QWidget *parent)
+ : QGraphicsView(s, parent) {}
QList<QRegion> lastUpdateRegions;
bool painted;
@@ -2228,8 +2259,11 @@ void tst_QGraphicsView::viewportUpdateMode()
scene.setBackgroundBrush(Qt::red);
CustomView view;
- view.setFixedSize(500, 500);
+ QDesktopWidget desktop;
+ view.setFixedSize(QSize(500, 500).boundedTo(desktop.availableGeometry().size())); // 500 is too big for all common smartphones
view.setScene(&scene);
+ if(PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
QCOMPARE(view.viewportUpdateMode(), QGraphicsView::MinimalViewportUpdate);
// Show the view, and initialize our test.
@@ -2304,17 +2338,20 @@ void tst_QGraphicsView::viewportUpdateMode()
void tst_QGraphicsView::viewportUpdateMode2()
{
+ QWidget toplevel;
+
// Create a view with viewport rect equal to QRect(0, 0, 200, 200).
QGraphicsScene dummyScene;
- CustomView view;
+ CustomView view(0, &toplevel);
view.painted = false;
view.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
view.setScene(&dummyScene);
+ view.ensurePolished(); // make sure we get the right content margins
int left, top, right, bottom;
view.getContentsMargins(&left, &top, &right, &bottom);
view.resize(200 + left + right, 200 + top + bottom);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
QTest::qWait(50);
QTRY_VERIFY(view.painted);
const QRect viewportRect = view.viewport()->rect();
@@ -3223,15 +3260,17 @@ void tst_QGraphicsView::scrollAfterResize()
#else
QCommonStyle style;
#endif
- QGraphicsView view;
+ QWidget toplevel;
+
+ QGraphicsView view(&toplevel);
view.setStyle(&style);
if (reverse)
view.setLayoutDirection(Qt::RightToLeft);
view.setSceneRect(-1000, -1000, 2000, 2000);
view.resize(300, 300);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
view.horizontalScrollBar()->setValue(0);
view.verticalScrollBar()->setValue(0);
QCOMPARE(view.viewportTransform(), x1);
@@ -3322,8 +3361,10 @@ void tst_QGraphicsView::moveItemWhileScrolling()
void tst_QGraphicsView::centerOnDirtyItem()
{
- QGraphicsView view;
- view.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
+ QWidget toplevel;
+
+ QGraphicsView view(&toplevel);
+ toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
view.resize(200, 200);
QGraphicsScene *scene = new QGraphicsScene;
@@ -3335,8 +3376,9 @@ void tst_QGraphicsView::centerOnDirtyItem()
scene->addItem(item);
view.centerOn(item);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
+ QTest::qWait(50);
QImage before(view.viewport()->size(), QImage::Format_ARGB32);
view.viewport()->render(&before);
@@ -3698,19 +3740,26 @@ void tst_QGraphicsView::update()
{
QFETCH(QRect, updateRect);
+ // some window manager resize the toplevel to max screen size
+ // so we must make our view a child (no layout!) of a dummy toplevel
+ // to ensure that it's really 200x200 pixels
+ QWidget toplevel;
+
// Create a view with viewport rect equal to QRect(0, 0, 200, 200).
QGraphicsScene dummyScene;
- CustomView view;
+ CustomView view(0, &toplevel);
view.setScene(&dummyScene);
+ view.ensurePolished(); // must ensure polished to get content margins right
int left, top, right, bottom;
view.getContentsMargins(&left, &top, &right, &bottom);
view.resize(200 + left + right, 200 + top + bottom);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
- QApplication::setActiveWindow(&view);
+
+ QApplication::setActiveWindow(&toplevel);
QApplication::processEvents();
- QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&toplevel));
const QRect viewportRect = view.viewport()->rect();
QCOMPARE(viewportRect, QRect(0, 0, 200, 200));
@@ -3719,6 +3768,7 @@ void tst_QGraphicsView::update()
const bool intersects = updateRect.intersects(viewportRect);
QGraphicsViewPrivate *viewPrivate = static_cast<QGraphicsViewPrivate *>(qt_widget_private(&view));
QTRY_COMPARE(viewPrivate->updateRect(updateRect), intersects);
+ QApplication::processEvents();
view.lastUpdateRegions.clear();
viewPrivate->processPendingUpdates();
@@ -3742,22 +3792,22 @@ void tst_QGraphicsView::update2_data()
QTest::addColumn<bool>("changedConnected");
// Anti-aliased.
- QTest::newRow("pen width: 0.0, antialiasing: true") << 0.0 << true << false;
- QTest::newRow("pen width: 1.5, antialiasing: true") << 1.5 << true << false;
- QTest::newRow("pen width: 2.0, antialiasing: true") << 2.0 << true << false;
- QTest::newRow("pen width: 3.0, antialiasing: true") << 3.0 << true << false;
+ QTest::newRow("pen width: 0.0, antialiasing: true") << qreal(0.0) << true << false;
+ QTest::newRow("pen width: 1.5, antialiasing: true") << qreal(1.5) << true << false;
+ QTest::newRow("pen width: 2.0, antialiasing: true") << qreal(2.0) << true << false;
+ QTest::newRow("pen width: 3.0, antialiasing: true") << qreal(3.0) << true << false;
// Aliased.
- QTest::newRow("pen width: 0.0, antialiasing: false") << 0.0 << false << false;
- QTest::newRow("pen width: 1.5, antialiasing: false") << 1.5 << false << false;
- QTest::newRow("pen width: 2.0, antialiasing: false") << 2.0 << false << false;
- QTest::newRow("pen width: 3.0, antialiasing: false") << 3.0 << false << false;
+ QTest::newRow("pen width: 0.0, antialiasing: false") << qreal(0.0) << false << false;
+ QTest::newRow("pen width: 1.5, antialiasing: false") << qreal(1.5) << false << false;
+ QTest::newRow("pen width: 2.0, antialiasing: false") << qreal(2.0) << false << false;
+ QTest::newRow("pen width: 3.0, antialiasing: false") << qreal(3.0) << false << false;
// changed() connected
- QTest::newRow("pen width: 0.0, antialiasing: false, changed") << 0.0 << false << true;
- QTest::newRow("pen width: 1.5, antialiasing: true, changed") << 1.5 << true << true;
- QTest::newRow("pen width: 2.0, antialiasing: false, changed") << 2.0 << false << true;
- QTest::newRow("pen width: 3.0, antialiasing: true, changed") << 3.0 << true << true;
+ QTest::newRow("pen width: 0.0, antialiasing: false, changed") << qreal(0.0) << false << true;
+ QTest::newRow("pen width: 1.5, antialiasing: true, changed") << qreal(1.5) << true << true;
+ QTest::newRow("pen width: 2.0, antialiasing: false, changed") << qreal(2.0) << false << true;
+ QTest::newRow("pen width: 3.0, antialiasing: true, changed") << qreal(3.0) << true << true;
}
void tst_QGraphicsView::update2()
@@ -4199,8 +4249,8 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins()
class VpGraphicsView: public QGraphicsView
{
public:
- VpGraphicsView(QGraphicsScene *scene)
- : QGraphicsView(scene)
+ VpGraphicsView(QGraphicsScene *scene, QWidget *parent=0)
+ : QGraphicsView(scene, parent)
{
setViewportMargins(8, 16, 12, 20);
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
@@ -4211,6 +4261,7 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins()
VpGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
view.show();
+
QTest::qWaitForWindowShown(&view);
QTest::qWait(50);
QPoint mouseViewPos(20, 20);
@@ -4325,6 +4376,9 @@ void tst_QGraphicsView::QTBUG_4151_clipAndIgnore()
view.setFrameStyle(0);
view.resize(75, 75);
view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
+
QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view);
QCOMPARE(view.items(view.rect()).size(), numItems);
@@ -4358,6 +4412,8 @@ void tst_QGraphicsView::QTBUG_5859_exposedRect()
scene.addItem(&item);
QGraphicsView view(&scene);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.scale(4.15, 4.15);
view.show();
QTest::qWaitForWindowShown(&view);
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 9d6def84ec..2368d5978a 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -53,6 +53,7 @@
#include <qaction.h>
#include <qwidgetaction.h>
#include "../../shared/util.h"
+#include "../platformquirks.h"
class EventSpy : public QObject
@@ -1111,6 +1112,10 @@ void tst_QGraphicsWidget::initStyleOption_data()
// void initStyleOption(QStyleOption* option) const public
void tst_QGraphicsWidget::initStyleOption()
{
+#ifdef Q_WS_MAEMO_5
+ QSKIP("The test passes, but it doesn't work when the display is in energy saving mode", SkipAll);
+#endif
+
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
@@ -1773,6 +1778,9 @@ void tst_QGraphicsWidget::verifyFocusChain()
void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
{
+#ifdef Q_WS_MAEMO_5
+ QSKIP("On Maemo 5 the Display Manager is shown on Window change, so the test won't work", SkipAll);
+#endif
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
@@ -3144,7 +3152,10 @@ void tst_QGraphicsWidget::initialShow()
MyGraphicsWidget *widget = new MyGraphicsWidget;
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
scene.addItem(widget);
@@ -3186,7 +3197,7 @@ void tst_QGraphicsWidget::initialShow2()
scene.addItem(widget);
QGraphicsView view(&scene);
- view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.show();
QTest::qWaitForWindowShown(&view);
diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp
index e0924deaf5..ed6d635f42 100644
--- a/tests/auto/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp
@@ -52,6 +52,7 @@
#include <QStyleFactory>
#include "../../shared/util.h"
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=gui/kernel/qlayout.cpp gui/kernel/qlayout.h
@@ -678,6 +679,8 @@ void tst_QGridLayout::spacingsAndMargins()
QApplication::setStyle(new Qt42Style);
QWidget toplevel;
+ if(PlatformQuirks::isAutoMaximizing())
+ toplevel.setWindowFlags(Qt::X11BypassWindowManagerHint);
QVBoxLayout vbox(&toplevel);
QGridLayout grid1;
vbox.addLayout(&grid1);
@@ -713,11 +716,12 @@ void tst_QGridLayout::spacingsAndMargins()
toplevel.show();
toplevel.adjustSize();
QApplication::processEvents();
+ QTest::qWaitForWindowShown(&toplevel);
QSize topsize = toplevel.size();
QSize minimumsize = vbox.totalMinimumSize();
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS)
if (topsize.width() < minimumsize.width() || topsize.height() < minimumsize.height())
QSKIP("The screen is too small to run this test case", SkipSingle);
#endif
@@ -1463,15 +1467,18 @@ void tst_QGridLayout::layoutSpacingImplementation()
QFETCH(int, vSpacing);
QFETCH(bool, customSubElementRect);
+ QWidget toplevel;
+
CustomLayoutStyle *style = new CustomLayoutStyle();
style->hspacing = hSpacing;
style->vspacing = vSpacing;
style->reimplementSubelementRect = customSubElementRect;
QApplication::setStyle(style);
+ widget->setParent(&toplevel);
widget->resize(widget->sizeHint());
- widget->show();
-#if defined(Q_WS_X11)
- qt_x11_wait_for_window_manager(widget); // wait for the show
+ toplevel.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&toplevel); // wait for the show
#endif
QLayout *layout = widget->layout();
@@ -1482,8 +1489,6 @@ void tst_QGridLayout::layoutSpacingImplementation()
//qDebug() << item->widget()->pos();
QCOMPARE(item->widget()->pos(), expectedpositions.at(pi));
}
- delete widget;
-
}
void tst_QGridLayout::spacing()
diff --git a/tests/auto/qhash/qhash.pro b/tests/auto/qhash/qhash.pro
index 86b98a27e4..16c9eabecc 100644
--- a/tests/auto/qhash/qhash.pro
+++ b/tests/auto/qhash/qhash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp
index 3a7b54acce..ea6e01027a 100644
--- a/tests/auto/qhash/tst_qhash.cpp
+++ b/tests/auto/qhash/tst_qhash.cpp
@@ -60,6 +60,7 @@ private slots:
void erase();
void key();
+ void swap();
void count(); // copied from tst_QMap
void clear(); // copied from tst_QMap
void empty(); // copied from tst_QMap
@@ -553,6 +554,16 @@ void tst_QHash::key()
}
}
+void tst_QHash::swap()
+{
+ QHash<int,QString> h1, h2;
+ h1[0] = "h1[0]";
+ h2[1] = "h2[1]";
+ h1.swap(h2);
+ QCOMPARE(h1.value(1),QLatin1String("h2[1]"));
+ QCOMPARE(h2.value(0),QLatin1String("h1[0]"));
+}
+
// copied from tst_QMap
void tst_QHash::clear()
{
diff --git a/tests/auto/qheaderview/tst_qheaderview.cpp b/tests/auto/qheaderview/tst_qheaderview.cpp
index da0a0bbeed..5252ec64ab 100644
--- a/tests/auto/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/qheaderview/tst_qheaderview.cpp
@@ -196,6 +196,7 @@ private slots:
void QTBUG12268_hiddenMovedSectionSorting();
protected:
+ QWidget *topLevel;
QHeaderView *view;
QStandardItemModel *model;
};
@@ -345,7 +346,8 @@ void tst_QHeaderView::cleanupTestCase()
void tst_QHeaderView::init()
{
- view = new QHeaderView(Qt::Vertical);
+ topLevel = new QWidget();
+ view = new QHeaderView(Qt::Vertical,topLevel);
// Some initial value tests before a model is added
QCOMPARE(view->length(), 0);
QVERIFY(view->sizeHint() == QSize(0,0));
@@ -373,7 +375,8 @@ void tst_QHeaderView::init()
QSignalSpy spy(view, SIGNAL(sectionCountChanged(int, int)));
view->setModel(model);
QCOMPARE(spy.count(), 1);
- view->show();
+ view->resize(200,200);
+ topLevel->show();
}
void tst_QHeaderView::cleanup()
@@ -508,7 +511,7 @@ void tst_QHeaderView::stretch()
view->resize(viewSize);
view->setStretchLastSection(true);
QCOMPARE(view->stretchLastSection(), true);
- view->show();
+ topLevel->show();
QCOMPARE(view->width(), viewSize.width());
QCOMPARE(view->visualIndexAt(view->viewport()->height() - 5), 3);
@@ -674,7 +677,7 @@ void tst_QHeaderView::visualIndexAt()
QFETCH(QList<int>, visual);
view->setStretchLastSection(true);
- view->show();
+ topLevel->show();
for (int i = 0; i < hidden.count(); ++i)
view->setSectionHidden(hidden.at(i), true);
@@ -682,6 +685,8 @@ void tst_QHeaderView::visualIndexAt()
for (int j = 0; j < from.count(); ++j)
view->moveSection(from.at(j), to.at(j));
+ QTest::qWait(100);
+
for (int k = 0; k < coordinate.count(); ++k)
QCOMPARE(view->visualIndexAt(coordinate.at(k)), visual.at(k));
}
@@ -696,7 +701,7 @@ void tst_QHeaderView::length()
view->setFont(font);
#endif
view->setStretchLastSection(true);
- view->show();
+ topLevel->show();
//minimumSectionSize should be the size of the last section of the widget is not tall enough
int length = view->minimumSectionSize();
@@ -708,7 +713,7 @@ void tst_QHeaderView::length()
QCOMPARE(length, view->length());
view->setStretchLastSection(false);
- view->show();
+ topLevel->show();
QVERIFY(length != view->length());
@@ -759,7 +764,7 @@ void tst_QHeaderView::logicalIndexAt()
QCOMPARE(view->logicalIndexAt(0), 0);
QCOMPARE(view->logicalIndexAt(1), 0);
- view->show();
+ topLevel->show();
view->setStretchLastSection(true);
// First item
QCOMPARE(view->logicalIndexAt(0), 0);
@@ -1062,7 +1067,7 @@ void tst_QHeaderView::resizeWithResizeModes()
view->resizeSection(i, sections.at(i));
view->setResizeMode(i, (QHeaderView::ResizeMode)modes.at(i));
}
- view->show();
+ topLevel->show();
view->resize(size, size);
for (int j = 0; j < expected.count(); ++j)
QCOMPARE(view->sectionSize(j), expected.at(j));
@@ -1160,7 +1165,7 @@ void tst_QHeaderView::resizeSection()
view->resize(400, 400);
- view->show();
+ topLevel->show();
view->setMovable(true);
view->setStretchLastSection(false);
@@ -2035,14 +2040,14 @@ void tst_QHeaderView::QTBUG7833_sectionClicked()
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + tv.horizontalHeader()->sectionSize(11)/2, 5));
QCOMPARE(clickedSpy.count(), 1);
QCOMPARE(pressedSpy.count(), 1);
QCOMPARE(clickedSpy.at(0).at(0).toInt(), 11);
QCOMPARE(pressedSpy.at(0).at(0).toInt(), 11);
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + tv.horizontalHeader()->sectionSize(0)/2, 5));
QCOMPARE(clickedSpy.count(), 2);
QCOMPARE(pressedSpy.count(), 2);
@@ -2050,7 +2055,7 @@ void tst_QHeaderView::QTBUG7833_sectionClicked()
QCOMPARE(pressedSpy.at(1).at(0).toInt(), 8);
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + tv.horizontalHeader()->sectionSize(0)/2, 5));
QCOMPARE(clickedSpy.count(), 3);
QCOMPARE(pressedSpy.count(), 3);
diff --git a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
index 188ed29ec4..a9b501c566 100644
--- a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
+++ b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
@@ -57,7 +57,7 @@ public:
public Q_SLOTS:
void finishedReply();
void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail);
- void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator, const QHttpNetworkConnection *connection);
+ void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
#ifndef QT_NO_OPENSSL
void sslErrors(const QList<QSslError> &errors);
#endif
@@ -177,11 +177,9 @@ void tst_QHttpNetworkConnection::head()
QFETCH(QString, statusString);
QFETCH(int, contentLength);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Head);
@@ -237,11 +235,9 @@ void tst_QHttpNetworkConnection::get()
QFETCH(int, contentLength);
QFETCH(int, downloadSize);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path);
@@ -317,11 +313,9 @@ void tst_QHttpNetworkConnection::put()
QFETCH(QString, data);
QFETCH(bool, succeed);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Put);
@@ -338,8 +332,6 @@ void tst_QHttpNetworkConnection::put()
connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
- connect(&connection, SIGNAL(error(QNetworkReply::NetworkError, const QString &)),
- SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
QTime stopWatch;
stopWatch.start();
@@ -409,11 +401,9 @@ void tst_QHttpNetworkConnection::post()
QFETCH(int, contentLength);
QFETCH(int, downloadSize);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Post);
@@ -498,14 +488,14 @@ void tst_QHttpNetworkConnection::_connect()
}
void tst_QHttpNetworkConnection::challenge401(const QHttpNetworkRequest &request,
- QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection)
+ QAuthenticator *authenticator)
{
Q_UNUSED(request)
- Q_UNUSED(connection)
- QHttpNetworkConnection *c = qobject_cast<QHttpNetworkConnection*>(sender());
- if (connection) {
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *c = reply->connection();
+
QVariant val = c->property("setCredentials");
if (val.toBool()) {
QVariant user = c->property("username");
@@ -551,17 +541,15 @@ void tst_QHttpNetworkConnection::get401()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
- connect(&connection, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *, const QHttpNetworkConnection*)),
- SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *, const QHttpNetworkConnection*)));
connection.setProperty("setCredentials", setCredentials);
connection.setProperty("username", username);
connection.setProperty("password", password);
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *)),
+ SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *)));
finishedCalled = false;
finishedWithErrorCalled = false;
@@ -620,11 +608,9 @@ void tst_QHttpNetworkConnection::compression()
QFETCH(bool, autoCompress);
QFETCH(QString, contentCoding);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path);
@@ -670,8 +656,10 @@ void tst_QHttpNetworkConnection::sslErrors(const QList<QSslError> &errors)
{
Q_UNUSED(errors)
- QHttpNetworkConnection *connection = qobject_cast<QHttpNetworkConnection*>(sender());
- if (connection) {
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *connection = reply->connection();
+
QVariant val = connection->property("ignoreFromSignal");
if (val.toBool())
connection->ignoreSslErrors();
@@ -713,17 +701,15 @@ void tst_QHttpNetworkConnection::ignoresslerror()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
if (ignoreInit)
connection.ignoreSslErrors();
QCOMPARE(connection.isEncrypted(), encrypt);
- connect(&connection, SIGNAL(sslErrors(const QList<QSslError>&)),
- SLOT(sslErrors(const QList<QSslError>&)));
connection.setProperty("ignoreFromSignal", ignoreFromSignal);
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)),
+ SLOT(sslErrors(const QList<QSslError>&)));
finishedWithErrorCalled = false;
@@ -771,8 +757,6 @@ void tst_QHttpNetworkConnection::nossl()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp
index e68664c91f..6b35378645 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/qicon/tst_qicon.cpp
@@ -70,6 +70,7 @@ private slots:
void actualSize2();
void svgActualSize();
void isNull();
+ void swap();
void bestMatch();
void cacheKey();
void detach();
@@ -259,6 +260,21 @@ void tst_QIcon::isNull() {
QVERIFY(iconSupportedFormat.actualSize(QSize(32, 32)).isValid());
}
+void tst_QIcon::swap()
+{
+ QPixmap p1(1, 1), p2(2, 2);
+ p1.fill(Qt::black);
+ p2.fill(Qt::black);
+
+ QIcon i1(p1), i2(p2);
+ const qint64 i1k = i1.cacheKey();
+ const qint64 i2k = i2.cacheKey();
+ QVERIFY(i1k != i2k);
+ i1.swap(i2);
+ QCOMPARE(i1.cacheKey(), i2k);
+ QCOMPARE(i2.cacheKey(), i1k);
+}
+
void tst_QIcon::bestMatch()
{
QPixmap p1(1, 1);
diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp
index 6b8028cfa9..6cce05cd19 100644
--- a/tests/auto/qimage/tst_qimage.cpp
+++ b/tests/auto/qimage/tst_qimage.cpp
@@ -69,6 +69,7 @@ public:
tst_QImage();
private slots:
+ void swap();
void create();
void createInvalidXPM();
void createFromUChar();
@@ -155,6 +156,20 @@ tst_QImage::tst_QImage()
{
}
+void tst_QImage::swap()
+{
+ QImage i1( 16, 16, QImage::Format_RGB32 ), i2( 32, 32, QImage::Format_RGB32 );
+ i1.fill( Qt::white );
+ i2.fill( Qt::black );
+ const qint64 i1k = i1.cacheKey();
+ const qint64 i2k = i2.cacheKey();
+ i1.swap(i2);
+ QCOMPARE(i1.cacheKey(), i2k);
+ QCOMPARE(i1.size(), QSize(32,32));
+ QCOMPARE(i2.cacheKey(), i1k);
+ QCOMPARE(i2.size(), QSize(16,16));
+}
+
// Test if QImage (or any functions called from QImage) throws an
// exception when creating an extremely large image.
// QImage::create() should return "false" in this case.
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index 4b4bdd6a3b..4aff8d55e7 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -55,6 +55,8 @@
#include <QTcpServer>
#include <QTimer>
+#include "../platformquirks.h"
+
#if defined(Q_OS_SYMBIAN)
# define SRCDIR "."
#endif
@@ -180,6 +182,9 @@ private slots:
void saveFormat_data();
void saveFormat();
+
+ void preserveTexts_data();
+ void preserveTexts();
};
static const QLatin1String prefix(SRCDIR "/images/");
@@ -315,23 +320,27 @@ void tst_QImageReader::jpegRgbCmyk()
QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
- // first, do some obvious tests
- QCOMPARE(image1.height(), image2.height());
- QCOMPARE(image1.width(), image2.width());
- QCOMPARE(image1.format(), image2.format());
- QCOMPARE(image1.format(), QImage::Format_RGB32);
-
- // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
- for (int h = 0; h < image1.height(); ++h) {
- const uchar *s1 = image1.constScanLine(h);
- const uchar *s2 = image2.constScanLine(h);
- for (int w = 0; w < image1.width() * 4; ++w) {
- if (*s1 != *s2) {
- QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+ if (PlatformQuirks::isImageLoaderImprecise()) {
+ // first, do some obvious tests
+ QCOMPARE(image1.height(), image2.height());
+ QCOMPARE(image1.width(), image2.width());
+ QCOMPARE(image1.format(), image2.format());
+ QCOMPARE(image1.format(), QImage::Format_RGB32);
+
+ // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
+ for (int h = 0; h < image1.height(); ++h) {
+ const uchar *s1 = image1.constScanLine(h);
+ const uchar *s2 = image2.constScanLine(h);
+ for (int w = 0; w < image1.width() * 4; ++w) {
+ if (*s1 != *s2) {
+ QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+ }
+ s1++;
+ s2++;
}
- s1++;
- s2++;
}
+ } else {
+ QCOMPARE(image1, image2);
}
}
@@ -1948,5 +1957,64 @@ void tst_QImageReader::saveFormat()
}
+void tst_QImageReader::preserveTexts_data()
+{
+ QTest::addColumn<QString>("text");
+
+ QTest::newRow("Simple") << "simpletext";
+ QTest::newRow("Whitespace") << " A text with whitespace ";
+ QTest::newRow("Newline") << "A text\nwith newlines\n";
+ QTest::newRow("Double newlines") << "A text\n\nwith double newlines\n\n";
+ QTest::newRow("Long") << QString("A rather long text, at least after many repetitions. ").repeated(100);
+ QString latin1set;
+ int c;
+ for(c = 0x20; c <= 0x7e; c++)
+ latin1set.append(QLatin1Char(c));
+ for(c = 0xa0; c <= 0xff; c++)
+ latin1set.append(QLatin1Char(c));
+ QTest::newRow("All Latin1 chars") << latin1set;
+
+#if 0
+ // Depends on iTXt support in libpng
+ QTest::newRow("Multibyte string") << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240");
+#endif
+}
+
+
+void tst_QImageReader::preserveTexts()
+{
+ QFETCH(QString, text);
+ QString key("testkey");
+ QString key2("testkey2");
+ QString text2("Some other text.");
+ QString key3("testkey3");
+ QString text3("Some more other text.");
+
+ QImage img(":/images/kollada.png");
+ img.setText(key, text);
+ img.setText(key2, text2);
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QVERIFY(img.save(&buf, "png"));
+ buf.close();
+ QImage stored = QImage::fromData(buf.buffer(), "png");
+ QCOMPARE(stored.text(key), text);
+ QCOMPARE(stored.text(key2), text2);
+
+ QImage img2(":/images/kollada.png");
+ img2.setText(key3, text3);
+ QBuffer buf2;
+ QImageWriter w(&buf2, "png");
+ w.setText(key, text);
+ w.setText(key2, text2);
+ QVERIFY(w.write(img2));
+ buf2.close();
+ QImageReader r(&buf2, "png");
+ QCOMPARE(r.text(key), text.simplified());
+ QCOMPARE(r.text(key2), text2.simplified());
+ QCOMPARE(r.text(key3), text3.simplified());
+}
+
+
QTEST_MAIN(tst_QImageReader)
#include "tst_qimagereader.moc"
diff --git a/tests/auto/qinputcontext/tst_qinputcontext.cpp b/tests/auto/qinputcontext/tst_qinputcontext.cpp
index 7811a53355..5a258a9872 100644
--- a/tests/auto/qinputcontext/tst_qinputcontext.cpp
+++ b/tests/auto/qinputcontext/tst_qinputcontext.cpp
@@ -158,8 +158,8 @@ public:
}
// For some reason, the test fails if using processEvents instead of an event loop
- // with a zero timer to quit it, so use the timer.
-#define KEY_WAIT 0
+ // with a timer to quit it, so use the timer.
+#define KEY_WAIT 10
void replay(QWidget *w)
{
diff --git a/tests/auto/qinputdialog/tst_qinputdialog.cpp b/tests/auto/qinputdialog/tst_qinputdialog.cpp
index 5d031421c6..580c6442ab 100644
--- a/tests/auto/qinputdialog/tst_qinputdialog.cpp
+++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp
@@ -147,9 +147,10 @@ void testInvalidateAndRestore(
QVERIFY(sbox->hasAcceptableInput());
QVERIFY(okButton->isEnabled());
QCOMPARE(sbox->value(), lastValidValue);
+ QLocale loc;
QCOMPARE(
normalizeNumericString(ledit->text()),
- normalizeNumericString(QString("%1").arg(sbox->value())));
+ normalizeNumericString(loc.toString(sbox->value())));
}
template <typename SpinBoxType, typename ValueType>
@@ -169,9 +170,10 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0)
QVERIFY(sbox->value() >= sbox->minimum());
QVERIFY(sbox->value() <= sbox->maximum());
QVERIFY(sbox->hasAcceptableInput());
+ QLocale loc;
QCOMPARE(
normalizeNumericString(ledit->selectedText()),
- normalizeNumericString(QString("%1").arg(sbox->value())));
+ normalizeNumericString(loc.toString(sbox->value())));
QVERIFY(okButton->isEnabled());
const ValueType origValue = sbox->value();
@@ -185,7 +187,7 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0)
testTypingValue<SpinBoxType>(sbox, okButton, "0.0");
testTypingValue<SpinBoxType>(sbox, okButton, "foobar");
- testTypingValue<SpinBoxType>(sbox, okButton, QString("%1").arg(origValue));
+ testTypingValue<SpinBoxType>(sbox, okButton, loc.toString(origValue));
}
void testGetText(QInputDialog *dialog)
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp
index 60f022fc46..256f9f3ffc 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -112,6 +112,7 @@ public:
virtual ~tst_QKeySequence();
private slots:
+ void swap();
void operatorQString_data();
void operatorQString();
void compareConstructors_data();
@@ -176,6 +177,15 @@ void tst_QKeySequence::initTestCase()
qtTranslator->load(":/qt_de");
}
+void tst_QKeySequence::swap()
+{
+ QKeySequence ks1(Qt::CTRL+Qt::Key_O);
+ QKeySequence ks2(Qt::CTRL+Qt::Key_L);
+ ks1.swap(ks2);
+ QCOMPARE(ks1[0], int(Qt::CTRL+Qt::Key_L));
+ QCOMPARE(ks2[0], int(Qt::CTRL+Qt::Key_O));
+}
+
void tst_QKeySequence::operatorQString_data()
{
QTest::addColumn<int>("modifiers");
diff --git a/tests/auto/qlayout/tst_qlayout.cpp b/tests/auto/qlayout/tst_qlayout.cpp
index c6fe3f0400..a974a42a04 100644
--- a/tests/auto/qlayout/tst_qlayout.cpp
+++ b/tests/auto/qlayout/tst_qlayout.cpp
@@ -133,12 +133,13 @@ void tst_QLayout::geometry()
// For QWindowsStyle we know that QWidgetItem::geometry() and QWidget::geometry()
// should be the same.
QApplication::setStyle(new QWindowsStyle);
- QWidget w;
+ QWidget topLevel;
+ QWidget w(&topLevel);
QVBoxLayout layout(&w);
SizeHinterFrame widget(QSize(100,100));
layout.addWidget(&widget);
QLayoutItem *item = layout.itemAt(0);
- w.show();
+ topLevel.show();
QApplication::processEvents();
QCOMPARE(item->geometry().size(), QSize(100,100));
diff --git a/tests/auto/qlibrary/qlibrary.pro b/tests/auto/qlibrary/qlibrary.pro
index fd5790b209..5dc129fbf9 100644
--- a/tests/auto/qlibrary/qlibrary.pro
+++ b/tests/auto/qlibrary/qlibrary.pro
@@ -15,3 +15,4 @@ TARGET = tst_qlibrary
# no special install rule for subdir
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qline/qline.pro b/tests/auto/qline/qline.pro
index 4651fd324f..6e9af24476 100644
--- a/tests/auto/qline/qline.pro
+++ b/tests/auto/qline/qline.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qline.cpp
unix:!mac:!symbian:!vxworks:LIBS+=-lm
+CONFIG += parallel_test
diff --git a/tests/auto/qlist/tst_qlist.cpp b/tests/auto/qlist/tst_qlist.cpp
index 14b8057486..9ab7cf7ad9 100644
--- a/tests/auto/qlist/tst_qlist.cpp
+++ b/tests/auto/qlist/tst_qlist.cpp
@@ -499,6 +499,13 @@ void tst_QList::swap() const
// swap again
list.swap(1, 2);
QCOMPARE(list, QList<QString>() << "baz" << "foo" << "bar");
+
+ QList<QString> list2;
+ list2 << "alpha" << "beta";
+
+ list.swap(list2);
+ QCOMPARE(list, QList<QString>() << "alpha" << "beta");
+ QCOMPARE(list2, QList<QString>() << "baz" << "foo" << "bar");
}
void tst_QList::takeAt() const
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 425ac8984f..523a3abc7a 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -334,7 +334,8 @@ void tst_QListView::cursorMove()
int columns = 6;
QStandardItemModel model(rows, columns);
- QListView view;
+ QWidget topLevel;
+ QListView view(&topLevel);
view.setModel(&model);
for (int j = 0; j < columns; ++j) {
@@ -358,7 +359,7 @@ void tst_QListView::cursorMove()
view.setGridSize(cellsize);
view.setViewMode(QListView::IconMode);
view.doItemsLayout();
- view.show();
+ topLevel.show();
QVector<Qt::Key> keymoves;
keymoves << Qt::Key_Up << Qt::Key_Up << Qt::Key_Right << Qt::Key_Right << Qt::Key_Up
@@ -1108,7 +1109,8 @@ void tst_QListView::selection()
QFETCH(QRect, selectionRect);
QFETCH(IntList, expectedItems);
- PublicListView v;
+ QWidget topLevel;
+ PublicListView v(&topLevel);
QtTestModel model;
model.colCount = 1;
model.rCount = itemCount;
@@ -1142,7 +1144,7 @@ void tst_QListView::selection()
v.resize(525,525);
#endif
- v.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&v);
QApplication::processEvents();
@@ -1158,7 +1160,8 @@ void tst_QListView::selection()
void tst_QListView::scrollTo()
{
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
QStringListModel model(&lv);
QStringList list;
list << "Short item 1";
@@ -1194,8 +1197,8 @@ void tst_QListView::scrollTo()
model.setStringList(list);
lv.setModel(&model);
lv.setFixedSize(100, 200);
- lv.show();
- QTest::qWaitForWindowShown(&lv);
+ topLevel.show();
+ QTest::qWaitForWindowShown(&topLevel);
//by default, the list view scrolls per item and has no wrapping
QModelIndex index = model.index(6,0);
@@ -1266,7 +1269,8 @@ void tst_QListView::scrollBarRanges()
const int rowCount = 10;
const int rowHeight = 20;
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
QStringListModel model(&lv);
QStringList list;
for (int i = 0; i < rowCount; ++i)
@@ -1278,7 +1282,7 @@ void tst_QListView::scrollBarRanges()
TestDelegate *delegate = new TestDelegate(&lv);
delegate->m_sizeHint = QSize(100, rowHeight);
lv.setItemDelegate(delegate);
- lv.show();
+ topLevel.show();
for (int h = 30; h <= 210; ++h) {
lv.resize(250, h);
@@ -1354,14 +1358,15 @@ void tst_QListView::scrollBarAsNeeded()
const int rowCounts[3] = {0, 1, 20};
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
lv.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
lv.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
lv.setFlow((QListView::Flow)flow);
QStringListModel model(&lv);
lv.setModel(&model);
lv.resize(size);
- lv.show();
+ topLevel.show();
for (uint r = 0; r < sizeof(rowCounts)/sizeof(int); ++r) {
QStringList list;
@@ -1631,6 +1636,7 @@ void tst_QListView::task254449_draggingItemToNegativeCoordinates()
list.setViewMode(QListView::IconMode);
list.show();
QTest::qWaitForWindowShown(&list);
+ list.activateWindow();
class MyItemDelegate : public QStyledItemDelegate
{
@@ -1815,7 +1821,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
QFETCH(int, flow);
const int rowCount = 200;
- QListView view;
+ QWidget topLevel;
+ QListView view(&topLevel);
QStringListModel model(&view);
QStringList list;
for (int i = 0; i < rowCount; ++i)
@@ -1839,8 +1846,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
}
//QTBUG-7929 should not crash
- view.show();
- QTest::qWaitForWindowShown(&view);
+ topLevel.show();
+ QTest::qWaitForWindowShown(&topLevel);
QScrollBar *bar = view.flow() == QListView::TopToBottom
? view.verticalScrollBar() : view.horizontalScrollBar();
diff --git a/tests/auto/qlistwidget/tst_qlistwidget.cpp b/tests/auto/qlistwidget/tst_qlistwidget.cpp
index 8aa50d3562..10f07c531c 100644
--- a/tests/auto/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/qlistwidget/tst_qlistwidget.cpp
@@ -1500,6 +1500,11 @@ void tst_QListWidget::itemWidget()
class MyListWidget : public QListWidget
{
public:
+ MyListWidget(QWidget *parent=0)
+ : QListWidget(parent)
+ {
+ }
+
void paintEvent(QPaintEvent *e) {
painted += e->region();
QListWidget::paintEvent(e);
@@ -1514,14 +1519,17 @@ void tst_QListWidget::fastScroll()
QSKIP("S60 style doesn't support fast scrolling", SkipAll);
}
- MyListWidget widget;
+ QWidget topLevel;
+ MyListWidget widget(&topLevel);
for (int i = 0; i < 50; ++i)
widget.addItem(QString("Item %1").arg(i));
- widget.show();
+ topLevel.resize(300, 300); // toplevel needs to be wide enough for the item
+ topLevel.show();
// Make sure the widget gets the first full repaint. On
// some WMs, we'll get two (first inactive exposure, then
// active exposure.
+ QTest::qWaitForWindowShown(&widget);
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&widget);
#endif
@@ -1532,6 +1540,7 @@ void tst_QListWidget::fastScroll()
QVERIFY(!itemSize.isEmpty());
QScrollBar *sbar = widget.verticalScrollBar();
+ widget.setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
widget.painted = QRegion();
sbar->setValue(sbar->value() + sbar->singleStep());
QApplication::processEvents();
diff --git a/tests/auto/qmainwindow/tst_qmainwindow.cpp b/tests/auto/qmainwindow/tst_qmainwindow.cpp
index c82c566974..e3122c4c66 100644
--- a/tests/auto/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/qmainwindow/tst_qmainwindow.cpp
@@ -55,6 +55,7 @@
#include <qtextedit.h>
#include <private/qmainwindowlayout_p.h>
#include <private/qdockarealayout_p.h>
+#include "../platformquirks.h"
//TESTED_FILES=
@@ -1679,6 +1680,9 @@ void tst_QMainWindow::addToolbarAfterShow()
void tst_QMainWindow::centralWidgetSize()
{
+ if(PlatformQuirks::isAutoMaximizing())
+ QSKIP("The platform is auto maximizing, so the test makes no sense", SkipAll);;
+
QMainWindow mainWindow;
mainWindow.menuBar()->addMenu("menu");
diff --git a/tests/auto/qmap/qmap.pro b/tests/auto/qmap/qmap.pro
index 00b84d133d..eaed926481 100644
--- a/tests/auto/qmap/qmap.pro
+++ b/tests/auto/qmap/qmap.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmap.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/qmap/tst_qmap.cpp
index a1b8de72fd..311b0b6e46 100644
--- a/tests/auto/qmap/tst_qmap.cpp
+++ b/tests/auto/qmap/tst_qmap.cpp
@@ -65,6 +65,8 @@ private slots:
void beginEnd();
void key();
+ void swap();
+
void operator_eq();
void empty();
@@ -392,6 +394,16 @@ void tst_QMap::key()
}
}
+void tst_QMap::swap()
+{
+ QMap<int,QString> m1, m2;
+ m1[0] = "m1[0]";
+ m2[1] = "m2[1]";
+ m1.swap(m2);
+ QCOMPARE(m1.value(1),QLatin1String("m2[1]"));
+ QCOMPARE(m2.value(0),QLatin1String("m1[0]"));
+}
+
void tst_QMap::operator_eq()
{
{
diff --git a/tests/auto/qmargins/qmargins.pro b/tests/auto/qmargins/qmargins.pro
index 5a6aa4f26a..0404da0424 100644
--- a/tests/auto/qmargins/qmargins.pro
+++ b/tests/auto/qmargins/qmargins.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmargins.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmath/qmath.pro b/tests/auto/qmath/qmath.pro
index 03134ee4e1..e5784ce7aa 100644
--- a/tests/auto/qmath/qmath.pro
+++ b/tests/auto/qmath/qmath.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmath.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmdiarea/tst_qmdiarea.cpp b/tests/auto/qmdiarea/tst_qmdiarea.cpp
index f865738141..6483f75908 100644
--- a/tests/auto/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/qmdiarea/tst_qmdiarea.cpp
@@ -63,6 +63,7 @@
#include <QMacStyle>
#include "../../shared/util.h"
+#include "../platformquirks.h"
static const Qt::WindowFlags DefaultWindowFlags
= Qt::SubWindow | Qt::WindowSystemMenuHint
@@ -468,6 +469,8 @@ void tst_QMdiArea::subWindowActivated2()
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&mdiArea);
#endif
+ QTest::qWaitForWindowShown(&mdiArea);
+ mdiArea.activateWindow();
QTest::qWait(100);
QTRY_COMPARE(spy.count(), 5);
@@ -510,6 +513,9 @@ void tst_QMdiArea::subWindowActivated2()
QCOMPARE(mdiArea.activeSubWindow(), activeSubWindow);
spy.clear();
+ if (PlatformQuirks::isAutoMaximizing())
+ QSKIP("Platform is auto maximizing, so no showMinimized()", SkipAll);
+
// Check that we only emit _one_ signal and the active window
// is unchanged after showMinimized/showNormal.
mdiArea.showMinimized();
@@ -1119,9 +1125,10 @@ void tst_QMdiArea::currentSubWindow()
void tst_QMdiArea::addAndRemoveWindows()
{
- QMdiArea workspace;
+ QWidget topLevel;
+ QMdiArea workspace(&topLevel);
workspace.resize(800, 600);
- workspace.show();
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&workspace);
#endif
@@ -1594,6 +1601,8 @@ void tst_QMdiArea::tileSubWindows()
{
QMdiArea workspace;
workspace.resize(600,480);
+ if (PlatformQuirks::isAutoMaximizing())
+ workspace.setWindowFlags(workspace.windowFlags() | Qt::X11BypassWindowManagerHint);
workspace.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&workspace);
@@ -1848,8 +1857,9 @@ void tst_QMdiArea::resizeMaximizedChildWindows()
QFETCH(int, increment);
QFETCH(int, windowCount);
- QMdiArea workspace;
- workspace.show();
+ QWidget topLevel;
+ QMdiArea workspace(&topLevel);
+ topLevel.show();
#if defined(Q_WS_X11)
qt_x11_wait_for_window_manager(&workspace);
#endif
@@ -2094,6 +2104,7 @@ void tst_QMdiArea::resizeTimer()
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&mdiArea);
#endif
+ QTest::qWaitForWindowShown(&mdiArea);
#ifndef Q_OS_WINCE
int time = 250;
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index 7065b13254..84f1b94f9b 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -298,15 +298,17 @@ void tst_QMenu::mouseActivation()
#ifdef Q_OS_WINCE_WM
QSKIP("We have a separate mouseActivation test for Windows mobile.", SkipAll);
#endif
- QMenu menu;
+ QWidget topLevel;
+ QMenu menu(&topLevel);
+ topLevel.show();
menu.addAction("Menu Action");
menu.show();
- QTest::mouseClick(&menu, Qt::LeftButton, 0, QPoint(5, 5), 300);
+ QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
//context menus can allways be accessed with right click except on windows
menu.show();
- QTest::mouseClick(&menu, Qt::RightButton, 0, QPoint(5, 5), 300);
+ QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
#ifdef Q_OS_WIN
@@ -466,9 +468,9 @@ void tst_QMenu::overrideMenuAction()
m->addAction(aQuit);
w.show();
+ QTest::qWaitForWindowShown(&w);
QApplication::setActiveWindow(&w);
w.setFocus();
- QTest::qWaitForWindowShown(&w);
QTRY_VERIFY(w.hasFocus());
//test of the action inside the menu
@@ -504,6 +506,7 @@ void tst_QMenu::statusTip()
w.addToolBar(&tb);
w.show();
+ QTest::qWaitForWindowShown(&w);
QRect rect1 = tb.actionGeometry(&a);
QToolButton *btn = qobject_cast<QToolButton*>(tb.childAt(rect1.center()));
@@ -589,6 +592,8 @@ void tst_QMenu::tearOff()
QVERIFY(menu->isTearOffEnabled());
widget.show();
+ QTest::qWaitForWindowShown(&widget);
+ widget.activateWindow();
menu->popup(QPoint(0,0));
QTest::qWait(50);
QVERIFY(!menu->isTearOffMenuVisible());
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp
index cc9fb0c41e..8dfb976943 100644
--- a/tests/auto/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp
@@ -338,6 +338,8 @@ void tst_QMenuBar::initTestCase_noQt3()
initSimpleMenubar_noQt3();
mw->show();
+ QTest::qWaitForWindowShown(mw);
+ mw->activateWindow();
menu1 = new QtTestSlot( mw );
menu2 = new QtTestSlot( mw );
@@ -1700,8 +1702,8 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions()
QAction * a = menubar.addAction( "&a" );
menubar.show();
- QApplication::setActiveWindow(&menubar);
QTest::qWaitForWindowShown(&menubar);
+ QApplication::setActiveWindow(&menubar);
menubar.setActiveAction(m);
QCOMPARE(menubar.activeAction(), m);
QTest::keyClick(0, Qt::Key_Right);
diff --git a/tests/auto/qmetatype/qmetatype.pro b/tests/auto/qmetatype/qmetatype.pro
index a84d238aa4..ed1de83927 100644
--- a/tests/auto/qmetatype/qmetatype.pro
+++ b/tests/auto/qmetatype/qmetatype.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmetatype.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
index 99a8913944..694d65de6c 100644
--- a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
+++ b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
@@ -147,12 +147,14 @@ void tst_qmouseevent_modal::mousePressRelease()
QVERIFY( w->d->count() == 0 );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 1 );
QVERIFY( !w->pb->isDown() );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 2 );
@@ -161,12 +163,14 @@ void tst_qmouseevent_modal::mousePressRelease()
// With the current QWS mouse handling, the 3rd press would fail...
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 3 );
QVERIFY( !w->pb->isDown() );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 4 );
diff --git a/tests/auto/qmutex/qmutex.pro b/tests/auto/qmutex/qmutex.pro
index bd24dcb35f..760dcfd2d8 100644
--- a/tests/auto/qmutex/qmutex.pro
+++ b/tests/auto/qmutex/qmutex.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutex.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmutexlocker/qmutexlocker.pro b/tests/auto/qmutexlocker/qmutexlocker.pro
index ff8a3da7eb..01c369101b 100644
--- a/tests/auto/qmutexlocker/qmutexlocker.pro
+++ b/tests/auto/qmutexlocker/qmutexlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutexlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 29788a37d5..936dc574c3 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -193,6 +193,8 @@ private Q_SLOTS:
void ioGetFromFtpWithReuse();
void ioGetFromHttp();
+ void ioGetFromBuiltinHttp_data();
+ void ioGetFromBuiltinHttp();
void ioGetFromHttpWithReuseParallel();
void ioGetFromHttpWithReuseSequential();
void ioGetFromHttpWithAuth();
@@ -301,6 +303,12 @@ private Q_SLOTS:
void getFromUnreachableIp();
+ void qtbug4121unknownAuthentication();
+
+ void qtbug13431replyThrottling();
+
+ void httpWithNoCredentialUsage();
+
// NOTE: This test must be last!
void parentingRepliesToTheApp();
};
@@ -351,6 +359,14 @@ QT_END_NAMESPACE
QFAIL(qPrintable(errorMsg)); \
} while (0);
+#ifndef QT_NO_OPENSSL
+static void setupSslServer(QSslSocket* serverSocket)
+{
+ serverSocket->setProtocol(QSsl::AnyProtocol);
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
+}
+#endif
// Does not work for POST/PUT!
class MiniHttpServer: public QTcpServer
@@ -361,24 +377,66 @@ public:
QByteArray dataToTransmit;
QByteArray receivedData;
bool doClose;
+ bool doSsl;
bool multiple;
int totalConnections;
- MiniHttpServer(const QByteArray &data) : client(0), dataToTransmit(data), doClose(true), multiple(false), totalConnections(0)
+ MiniHttpServer(const QByteArray &data, bool ssl = false)
+ : client(0), dataToTransmit(data), doClose(true), doSsl(ssl),
+ multiple(false), totalConnections(0)
{
listen();
- connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
}
-public slots:
- void doAccept()
+protected:
+ void incomingConnection(int socketDescriptor)
{
- client = nextPendingConnection();
+ //qDebug() << "incomingConnection" << socketDescriptor;
+ if (!doSsl) {
+ client = new QTcpSocket;
+ client->setSocketDescriptor(socketDescriptor);
+ connectSocketSignals();
+ } else {
+#ifndef QT_NO_OPENSSL
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ if (serverSocket->setSocketDescriptor(socketDescriptor)) {
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ client = serverSocket;
+ connectSocketSignals();
+ } else {
+ delete serverSocket;
+ return;
+ }
+#endif
+ }
client->setParent(this);
++totalConnections;
+ }
+private:
+ void connectSocketSignals()
+ {
+ //qDebug() << "connectSocketSignals" << client;
connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(client, SIGNAL(error(QAbstractSocket::SocketError)),
+ this, SLOT(slotError(QAbstractSocket::SocketError)));
+ }
+
+private slots:
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << client->errorString() << errors;
+ }
+#endif
+ void slotError(QAbstractSocket::SocketError err)
+ {
+ qDebug() << "slotError" << err << client->errorString();
}
+public slots:
void readyReadSlot()
{
receivedData += client->readAll();
@@ -390,6 +448,9 @@ public slots:
receivedData.remove(0, doubleEndlPos+4);
client->write(dataToTransmit);
+ while (client->bytesToWrite() > 0)
+ client->waitForBytesWritten();
+
if (doClose) {
client->disconnectFromHost();
disconnect(client, 0, this, 0);
@@ -562,17 +623,89 @@ public:
}
};
+// A blocking tcp server (must be used in a thread) which supports SSL.
+class BlockingTcpServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ BlockingTcpServer(bool ssl) : doSsl(ssl), sslSocket(0) {}
+
+ QTcpSocket* waitForNextConnectionSocket() {
+ waitForNewConnection(-1);
+ if (doSsl) {
+ Q_ASSERT(sslSocket);
+ return sslSocket;
+ } else {
+ //qDebug() << "returning nextPendingConnection";
+ return nextPendingConnection();
+ }
+ }
+ virtual void incomingConnection(int socketDescriptor)
+ {
+#ifndef QT_NO_OPENSSL
+ if (doSsl) {
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ serverSocket->setSocketDescriptor(socketDescriptor);
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ sslSocket = serverSocket;
+ } else
+#endif
+ {
+ QTcpServer::incomingConnection(socketDescriptor);
+ }
+ }
+private slots:
+
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << sslSocket->errorString() << errors;
+ }
+#endif
+
+private:
+ const bool doSsl;
+ QTcpSocket* sslSocket;
+};
+
+// This server tries to send data as fast as possible (like most servers)
+// but it measures how fast it was able to send it, which shows at which
+// rate the reader is processing the data.
class FastSender: public QThread
{
Q_OBJECT
QSemaphore ready;
qint64 wantedSize;
int port;
+ enum Protocol { DebugPipe, ProvidedData };
+ const Protocol protocol;
+ const bool doSsl;
+ const bool fillKernelBuffer;
public:
int transferRate;
QWaitCondition cond;
+
+ QByteArray dataToTransmit;
+ int dataIndex;
+
+ // a server that sends debugpipe data
FastSender(qint64 size)
- : wantedSize(size), port(-1), transferRate(-1)
+ : wantedSize(size), port(-1), protocol(DebugPipe),
+ doSsl(false), fillKernelBuffer(true), transferRate(-1),
+ dataIndex(0)
+ {
+ start();
+ ready.acquire();
+ }
+
+ // a server that sends the data provided at construction time, useful for HTTP
+ FastSender(const QByteArray& data, bool https, bool fillBuffer)
+ : wantedSize(data.size()), port(-1), protocol(ProvidedData),
+ doSsl(https), fillKernelBuffer(fillBuffer), transferRate(-1),
+ dataToTransmit(data), dataIndex(0)
{
start();
ready.acquire();
@@ -580,90 +713,121 @@ public:
inline int serverPort() const { return port; }
+ int writeNextData(QTcpSocket* socket, qint32 size)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray(size, 'a');
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ dataIndex += size;
+ return size;
+ } else {
+ const QByteArray data = dataToTransmit.mid(dataIndex, size);
+ socket->write(data);
+ dataIndex += data.size();
+ //qDebug() << "wrote" << dataIndex << "/" << dataToTransmit.size();
+ return data.size();
+ }
+ }
+ void writeLastData(QTcpSocket* socket)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray();
+ const qint32 size = data.size();
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ }
+ }
+
protected:
void run()
{
- QTcpServer server;
+ BlockingTcpServer server(doSsl);
server.listen();
port = server.serverPort();
ready.release();
- server.waitForNewConnection(-1);
- QTcpSocket *client = server.nextPendingConnection();
+ QTcpSocket *client = server.waitForNextConnectionSocket();
// get the "request" packet
if (!client->waitForReadyRead(2000)) {
- qDebug() << client->error() << "waiting for \"request\" packet";
+ qDebug() << "FastSender:" << client->error() << "waiting for \"request\" packet";
return;
}
- client->readAll(); // we're not interested in the actual contents
+ client->readAll(); // we're not interested in the actual contents (e.g. HTTP request)
- enum { BlockSize = 256 };
- QByteArray data;
- {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray(BlockSize, 'a');
+ enum { BlockSize = 1024 };
+
+ if (fillKernelBuffer) {
+
+ // write a bunch of bytes to fill up the buffers
+ bool done = false;
+ do {
+ if (writeNextData(client, BlockSize) < BlockSize) {
+ qDebug() << "ERROR: FastSender: not enough data to write in order to fill buffers; or client is reading too fast";
+ return;
+ }
+ while (client->bytesToWrite() > 0) {
+ if (!client->waitForBytesWritten(0)) {
+ done = true;
+ break;
+ }
+ }
+ //qDebug() << "Filling kernel buffer: wrote" << dataIndex << "bytes";
+ } while (!done);
+
+ qDebug() << "FastSender: ok, kernel buffer is full after writing" << dataIndex << "bytes";
}
- qint32 size = data.size();
- // write a bunch of bytes to fill up the buffers
- do {
- client->write((char*)&size, sizeof size);
- client->write(data);
- while (client->bytesToWrite() > 0)
- if (!client->waitForBytesWritten(0))
- break;
- } while (client->bytesToWrite() == 0);
+ // Tell the client to start reading
+ emit dataReady();
// the kernel buffer is full
// clean up QAbstractSocket's residue:
- while (client->bytesToWrite() > 0)
+ while (client->bytesToWrite() > 0) {
+ qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now";
if (!client->waitForBytesWritten(2000)) {
- qDebug() << client->error() << "cleaning up residue";
+ qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue";
return;
}
+ }
- // now write in "blocking mode"
+ // now write in "blocking mode", this is where the rate measuring starts
QTime timer;
timer.start();
- qint64 totalBytes = 0;
- while (totalBytes < wantedSize) {
- int bytesToWrite = wantedSize - totalBytes;
+ //const qint64 writtenBefore = dataIndex;
+ //qint64 measuredTotalBytes = wantedSize - writtenBefore;
+ qint64 measuredSentBytes = 0;
+ while (dataIndex < wantedSize) {
+ const int remainingBytes = wantedSize - measuredSentBytes;
+ const int bytesToWrite = qMin(remainingBytes, static_cast<int>(BlockSize));
Q_ASSERT(bytesToWrite);
- if (bytesToWrite > BlockSize) {
- bytesToWrite = BlockSize;
- } else {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray(bytesToWrite, 'b');
- }
- size = data.size();
- client->write((char*)&size, sizeof size);
- client->write(data);
- totalBytes += bytesToWrite;
+ measuredSentBytes += writeNextData(client, bytesToWrite);
- while (client->bytesToWrite() > 0)
+ while (client->bytesToWrite() > 0) {
if (!client->waitForBytesWritten(2000)) {
- qDebug() << client->error() << "blocking write";
+ qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write";
return;
}
-// qDebug() << bytesToWrite << "bytes written now;"
-// << totalBytes << "total ("
-// << totalBytes*100/wantedSize << "% complete);"
-// << timer.elapsed() << "ms elapsed";
+ }
+ /*qDebug() << "FastSender:" << bytesToWrite << "bytes written now;"
+ << measuredSentBytes << "measured bytes" << measuredSentBytes + writtenBefore << "total ("
+ << measuredSentBytes*100/measuredTotalBytes << "% complete);"
+ << timer.elapsed() << "ms elapsed";*/
}
- transferRate = totalBytes * 1000 / timer.elapsed();
- qDebug() << "flushed" << totalBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate;
+ transferRate = measuredSentBytes * 1000 / timer.elapsed();
+ qDebug() << "FastSender: flushed" << measuredSentBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate << "B/s";
- // write a "close connection" packet
- {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray();
- }
- size = data.size();
- client->write((char*)&size, sizeof size);
- client->write(data);
+ // write a "close connection" packet, if the protocol needs it
+ writeLastData(client);
}
+signals:
+ void dataReady();
};
class RateControlledReader: public QObject
@@ -672,40 +836,85 @@ class RateControlledReader: public QObject
QIODevice *device;
int bytesToRead;
int interval;
+ int readBufferSize;
public:
+ QByteArray data;
qint64 totalBytesRead;
- RateControlledReader(QIODevice *dev, int kbPerSec)
- : device(dev), totalBytesRead(0)
+ RateControlledReader(QObject& senderObj, QIODevice *dev, int kbPerSec, int maxBufferSize = 0)
+ : device(dev), readBufferSize(maxBufferSize), totalBytesRead(0)
{
// determine how often we have to wake up
- bytesToRead = kbPerSec * 1024 / 20;
- interval = 50;
+ int timesPerSecond;
+ if (readBufferSize == 0) {
+ // The requirement is simply "N KB per seconds"
+ timesPerSecond = 20;
+ bytesToRead = kbPerSec * 1024 / timesPerSecond;
+ } else {
+ // The requirement also includes "<readBufferSize> bytes at a time"
+ bytesToRead = readBufferSize;
+ timesPerSecond = kbPerSec * 1024 / readBufferSize;
+ }
+ interval = 1000 / timesPerSecond; // in ms
qDebug() << "RateControlledReader: going to read" << bytesToRead
<< "bytes every" << interval << "ms";
- qDebug() << "actual rate will be"
+ qDebug() << "actual read rate will be"
<< (bytesToRead * 1000 / interval) << "bytes/sec (wanted"
<< kbPerSec * 1024 << "bytes/sec)";
+
+ // Wait for data to be readyRead
+ bool ok = connect(&senderObj, SIGNAL(dataReady()), this, SLOT(slotDataReady()));
+ Q_ASSERT(ok);
+ }
+
+ void wrapUp()
+ {
+ QByteArray someData = device->read(device->bytesAvailable());
+ data += someData;
+ totalBytesRead += someData.size();
+ qDebug() << "wrapUp: found" << someData.size() << "bytes left. progress" << data.size();
+ //qDebug() << "wrapUp: now bytesAvailable=" << device->bytesAvailable();
+ }
+
+private slots:
+ void slotDataReady()
+ {
+ //qDebug() << "RateControlledReader: ready to go";
startTimer(interval);
}
protected:
void timerEvent(QTimerEvent *)
{
+ //qDebug() << "RateControlledReader: timerEvent bytesAvailable=" << device->bytesAvailable();
+ if (readBufferSize > 0) {
+ // This asserts passes all the time, except in the final flush.
+ //Q_ASSERT(device->bytesAvailable() <= readBufferSize);
+ }
+
qint64 bytesRead = 0;
QTime stopWatch;
stopWatch.start();
do {
- if (device->bytesAvailable() == 0)
- if (stopWatch.elapsed() > 10 || !device->waitForReadyRead(5))
+ if (device->bytesAvailable() == 0) {
+ if (stopWatch.elapsed() > 20) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, waited too much, timing out";
break;
- QByteArray data = device->read(bytesToRead - bytesRead);
- bytesRead += data.size();
- } while (bytesRead < bytesToRead);// && stopWatch.elapsed() < interval/4);
+ }
+ if (!device->waitForReadyRead(5)) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, even after waiting 5ms, bailing out";
+ break;
+ }
+ }
+ QByteArray someData = device->read(bytesToRead - bytesRead);
+ data += someData;
+ bytesRead += someData.size();
+ //qDebug() << "RateControlledReader: successfully read" << someData.size() << "progress:" << data.size();
+ } while (bytesRead < bytesToRead);
totalBytesRead += bytesRead;
if (bytesRead < bytesToRead)
- qWarning() << bytesToRead - bytesRead << "bytes not read";
+ qWarning() << "RateControlledReader: WARNING:" << bytesToRead - bytesRead << "bytes not read";
}
};
@@ -3171,8 +3380,8 @@ public:
connect(serverSocket, SIGNAL(encrypted()), this, SLOT(encryptedSlot()));
serverSocket->setProtocol(QSsl::AnyProtocol);
connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError>&)), serverSocket, SLOT(ignoreSslErrors()));
- serverSocket->setLocalCertificate (SRCDIR "/certs/server.pem");
- serverSocket->setPrivateKey (SRCDIR "/certs/server.key");
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
serverSocket->startServerEncryption();
} else {
delete serverSocket;
@@ -3262,6 +3471,93 @@ void tst_QNetworkReply::ioPostToHttpsUploadProgress()
}
#endif
+void tst_QNetworkReply::ioGetFromBuiltinHttp_data()
+{
+ QTest::addColumn<bool>("https");
+ QTest::addColumn<int>("bufferSize");
+ QTest::newRow("http+unlimited") << false << 0;
+ QTest::newRow("http+limited") << false << 4096;
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https+unlimited") << true << 0;
+ QTest::newRow("https+limited") << true << 4096;
+#endif
+}
+
+void tst_QNetworkReply::ioGetFromBuiltinHttp()
+{
+ QFETCH(bool, https);
+ QFETCH(int, bufferSize);
+
+ QByteArray testData;
+ // Make the data big enough so that it can fill the kernel buffer
+ // (which seems to hold 202 KB here)
+ const int wantedSize = 1200 * 1000;
+ testData.reserve(wantedSize);
+ // And in the case of SSL, the compression can fool us and let the
+ // server send the data much faster than expected.
+ // So better provide random data that cannot be compressed.
+ for (int i = 0; i < wantedSize; ++i)
+ testData += (char)qrand();
+
+ QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
+ httpResponse += QByteArray::number(testData.size());
+ httpResponse += "\r\n\r\n";
+ httpResponse += testData;
+
+ qDebug() << "Server will send" << (httpResponse.size()-testData.size()) << "bytes of header and"
+ << testData.size() << "bytes of data";
+
+ const bool fillKernelBuffer = bufferSize > 0;
+ FastSender server(httpResponse, https, fillKernelBuffer);
+
+ QUrl url(QString("%1://127.0.0.1:%2/qtest/rfc3252.txt")
+ .arg(https?"https":"http")
+ .arg(server.serverPort()));
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->setReadBufferSize(bufferSize);
+ reply->ignoreSslErrors();
+ const int rate = 200; // in kB per sec
+ RateControlledReader reader(server, reply, rate, bufferSize);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTime loopTime;
+ loopTime.start();
+ QTestEventLoop::instance().enterLoop(11);
+ const int elapsedTime = loopTime.elapsed();
+ server.wait();
+ reader.wrapUp();
+
+ qDebug() << "send rate:" << server.transferRate << "B/s";
+ qDebug() << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
+ << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), (qint64)testData.size());
+ if (reader.data.size() < testData.size()) { // oops?
+ QCOMPARE(reader.data, testData.mid(0, reader.data.size()));
+ qDebug() << "The data is incomplete, the last" << testData.size() - reader.data.size() << "bytes are missing";
+ }
+ QCOMPARE(reader.data.size(), testData.size());
+ QCOMPARE(reader.data, testData);
+
+ // OK we got the file alright, but did setReadBufferSize work?
+ QVERIFY(server.transferRate != -1);
+ if (bufferSize > 0) {
+ const int allowedDeviation = 16; // TODO find out why the send rate is 13% faster currently
+ const int minRate = rate * 1024 * (100-allowedDeviation) / 100;
+ const int maxRate = rate * 1024 * (100+allowedDeviation) / 100;
+ qDebug() << minRate << "<="<< server.transferRate << "<=" << maxRate << "?";
+ QVERIFY(server.transferRate >= minRate);
+ QVERIFY(server.transferRate <= maxRate);
+ }
+}
+
void tst_QNetworkReply::ioPostToHttpUploadProgress()
{
QFile sourceFile(SRCDIR "/bigfile");
@@ -3446,8 +3742,10 @@ void tst_QNetworkReply::rateControl()
QNetworkReplyPtr reply = manager.get(request);
reply->setReadBufferSize(32768);
connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
- RateControlledReader reader(reply, rate);
+ RateControlledReader reader(sender, reply, rate, 20);
// this test is designed to run for 25 seconds at most
QTime loopTime;
@@ -3455,6 +3753,10 @@ void tst_QNetworkReply::rateControl()
QTestEventLoop::instance().enterLoop(40);
int elapsedTime = loopTime.elapsed();
+ if (!errorSpy.isEmpty()) {
+ qDebug() << "ERROR!" << errorSpy[0][0] << reply->errorString();
+ }
+
qDebug() << "tst_QNetworkReply::rateControl" << "send rate:" << sender.transferRate;
qDebug() << "tst_QNetworkReply::rateControl" << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
<< "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
@@ -4575,6 +4877,7 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply()
QCOMPARE(reply->error(), QNetworkReply::NoError);
}
+// TODO add similar test for FTP
void tst_QNetworkReply::getFromUnreachableIp()
{
QNetworkAccessManager manager;
@@ -4589,6 +4892,112 @@ void tst_QNetworkReply::getFromUnreachableIp()
QVERIFY(reply->error() != QNetworkReply::NoError);
}
+void tst_QNetworkReply::qtbug4121unknownAuthentication()
+{
+ MiniHttpServer server(QByteArray("HTTP/1.1 401 bla\r\nWWW-Authenticate: crap\r\nContent-Length: 0\r\n\r\n"));
+ server.doClose = false;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(authSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+class QtBug13431Helper : public QObject {
+ Q_OBJECT
+public:
+ QNetworkReply* m_reply;
+ QTimer m_dlTimer;
+public slots:
+ void replyFinished(QNetworkReply*) {
+ QTestEventLoop::instance().exitLoop();
+ }
+
+ void onReadAndReschedule() {
+ const qint64 bytesReceived = m_reply->bytesAvailable();
+ if (bytesReceived) {
+ QByteArray data = m_reply->read(bytesReceived);
+ // reschedule read
+ const int millisecDelay = static_cast<int>(bytesReceived * 1000 / m_reply->readBufferSize());
+ m_dlTimer.start(millisecDelay);
+ }
+ else {
+ // reschedule read
+ m_dlTimer.start(200);
+ }
+ }
+};
+
+void tst_QNetworkReply::qtbug13431replyThrottling()
+{
+ QtBug13431Helper helper;
+
+ QNetworkAccessManager nam;
+ connect(&nam, SIGNAL(finished(QNetworkReply*)), &helper, SLOT(replyFinished(QNetworkReply*)));
+
+ // Download a bigger file
+ QNetworkRequest netRequest(QUrl("http://qt-test-server/qtest/bigfile"));
+ helper.m_reply = nam.get(netRequest);
+ // Set the throttle
+ helper.m_reply->setReadBufferSize(36000);
+
+ // Schedule a timer that tries to read
+
+ connect(&helper.m_dlTimer, SIGNAL(timeout()), &helper, SLOT(onReadAndReschedule()));
+ helper.m_dlTimer.setSingleShot(true);
+ helper.m_dlTimer.start(0);
+
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.m_reply->isFinished());
+ QCOMPARE(helper.m_reply->error(), QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::httpWithNoCredentialUsage()
+{
+ QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"));
+ // Do not use credentials
+ request.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual);
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // We check if authenticationRequired was emitted, however we do not anything in it so it should be 401
+ QCOMPARE(authSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+
+
// NOTE: This test must be last testcase in tst_qnetworkreply!
void tst_QNetworkReply::parentingRepliesToTheApp()
{
diff --git a/tests/auto/qnumeric/qnumeric.pro b/tests/auto/qnumeric/qnumeric.pro
index 162f980f9c..c0af962a79 100644
--- a/tests/auto/qnumeric/qnumeric.pro
+++ b/tests/auto/qnumeric/qnumeric.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qnumeric.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qobject/qobject.pro b/tests/auto/qobject/qobject.pro
index b6b3f20f22..113e14a61d 100644
--- a/tests/auto/qobject/qobject.pro
+++ b/tests/auto/qobject/qobject.pro
@@ -1,2 +1,3 @@
TEMPLATE = subdirs
SUBDIRS = tst_qobject.pro signalbug.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp
index 24cd5a35e1..a09f109e1c 100644
--- a/tests/auto/qobject/tst_qobject.cpp
+++ b/tests/auto/qobject/tst_qobject.cpp
@@ -134,6 +134,7 @@ private slots:
void connectConstructorByMetaMethod();
void disconnectByMetaMethod();
void disconnectNotSignalMetaMethod();
+ void autoConnectionBehavior();
protected:
};
@@ -3847,5 +3848,82 @@ void tst_QObject::disconnectNotSignalMetaMethod()
QVERIFY(!QObject::disconnect(&s, slot, &r, QMetaMethod()));
}
+class ThreadAffinityThread : public QThread
+{
+public:
+ SenderObject *sender;
+
+ ThreadAffinityThread(SenderObject *sender)
+ : sender(sender)
+ { }
+ void run()
+ {
+ sender->emitSignal1();
+ }
+};
+
+void tst_QObject::autoConnectionBehavior()
+{
+ SenderObject *sender = new SenderObject;
+ ReceiverObject *receiver = new ReceiverObject;
+ connect(sender, SIGNAL(signal1()), receiver, SLOT(slot1()));
+
+ // at emit, currentThread == sender->thread(), currentThread == receiver->thread(), sender->thread() == receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() == receiver->thread()
+ ThreadAffinityThread emitThread1(sender);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread == sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ sender->moveToThread(&emitThread1);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread == receiver->thread(), sender->thread() != receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ ThreadAffinityThread emitThread2(sender);
+ QThread receiverThread;
+ QTimer *timer = new QTimer;
+ timer->setSingleShot(true);
+ timer->setInterval(100);
+ connect(&receiverThread, SIGNAL(started()), timer, SLOT(start()));
+ connect(timer, SIGNAL(timeout()), &receiverThread, SLOT(quit()), Qt::DirectConnection);
+ connect(&receiverThread, SIGNAL(finished()), timer, SLOT(deleteLater()));
+ timer->moveToThread(&receiverThread);
+
+ receiver->moveToThread(&receiverThread);
+ QVERIFY(!receiver->called(1));
+ emitThread2.start();
+ QVERIFY(emitThread2.wait(30000));
+ QVERIFY(!receiver->called(1));
+ receiverThread.start();
+ QVERIFY(receiverThread.wait(30000));
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ delete sender;
+ delete receiver;
+}
+
QTEST_MAIN(tst_QObject)
#include "tst_qobject.moc"
diff --git a/tests/auto/qobjectrace/qobjectrace.pro b/tests/auto/qobjectrace/qobjectrace.pro
index 322adff6a0..526875b69d 100644
--- a/tests/auto/qobjectrace/qobjectrace.pro
+++ b/tests/auto/qobjectrace/qobjectrace.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qobjectrace.cpp
QT = core
TARGET.EPOCHEAPSIZE = 20000000 40000000
+CONFIG += parallel_test
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index f7db6b332c..ab380a6521 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -49,6 +49,7 @@
#include <qfontmetrics.h>
#include <qbitmap.h>
#include <qimage.h>
+#include <qthread.h>
#include <limits.h>
#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
#include <qprinter.h>
@@ -258,6 +259,9 @@ private slots:
void drawPointScaled();
+ void QTBUG14614_gradientCacheRaceCondition();
+ void drawTextOpacity();
+
private:
void fillData();
void setPenColor(QPainter& p);
@@ -4578,32 +4582,6 @@ void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053()
#if !defined(Q_WS_MAC) || !defined(QT_MAC_USE_COCOA)
QSKIP("Only Mac/Cocoa supports sub pixel positions in raster engine currently", SkipAll);
#endif
-
- int w = 10, h = 10;
- QImage image(w, h, QImage::Format_RGB32);
- image.fill(0xffffffff);
- QPainter p(&image);
- p.drawText(0, h, "X\\");
- p.end();
-
- bool foundNonGrayPixel = false;
- const int *bits = (const int *) ((const QImage &) image).bits();
- int bpl = image.bytesPerLine() / 4;
- for (int y=0; y<w; ++y) {
- for (int x=0; x<h; ++x) {
- int r = qRed(bits[x]);
- int g = qGreen(bits[x]);
- int b = qBlue(bits[x]);
- if (r != g || r != b) {
- foundNonGrayPixel = true;
- break;
- }
- }
- bits += bpl;
- }
- if (!foundNonGrayPixel)
- QSKIP("Font smoothing must be turned on for this test", SkipAll);
-
QFontMetricsF fm(qApp->font());
QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32);
@@ -4652,6 +4630,60 @@ void tst_QPainter::drawPointScaled()
QCOMPARE(image.pixel(16, 16), 0xffff0000);
}
+class GradientProducer : public QThread
+{
+protected:
+ void run();
+};
+
+void GradientProducer::run()
+{
+ QImage image(1, 1, QImage::Format_RGB32);
+ QPainter p(&image);
+
+ for (int i = 0; i < 1000; ++i) {
+ QLinearGradient g;
+ g.setColorAt(0, QColor(i % 256, 0, 0));
+ g.setColorAt(1, Qt::white);
+
+ p.fillRect(image.rect(), g);
+ }
+}
+
+void tst_QPainter::QTBUG14614_gradientCacheRaceCondition()
+{
+ const int threadCount = 16;
+ GradientProducer producers[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ producers[i].start();
+ for (int i = 0; i < threadCount; ++i)
+ producers[i].wait();
+}
+
+void tst_QPainter::drawTextOpacity()
+{
+ QImage image(32, 32, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QPainter p(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QImage copy = image;
+ image.fill(0xffffffff);
+
+ p.begin(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.drawLine(-10, -10, -1, -1);
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QCOMPARE(image, copy);
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
diff --git a/tests/auto/qpainterpath/tst_qpainterpath.cpp b/tests/auto/qpainterpath/tst_qpainterpath.cpp
index d0cdddac07..19b315637c 100644
--- a/tests/auto/qpainterpath/tst_qpainterpath.cpp
+++ b/tests/auto/qpainterpath/tst_qpainterpath.cpp
@@ -60,6 +60,8 @@ public:
private slots:
void getSetCheck();
+ void swap();
+
void contains_QPointF_data();
void contains_QPointF();
@@ -139,6 +141,17 @@ void tst_QPainterPath::getSetCheck()
QCOMPARE(qreal(1.1), obj1.curveThreshold());
}
+void tst_QPainterPath::swap()
+{
+ QPainterPath p1;
+ p1.addRect( 0, 0,10,10);
+ QPainterPath p2;
+ p2.addRect(10,10,10,10);
+ p1.swap(p2);
+ QCOMPARE(p1.boundingRect().toRect(), QRect(10,10,10,10));
+ QCOMPARE(p2.boundingRect().toRect(), QRect( 0, 0,10,10));
+}
+
Q_DECLARE_METATYPE(QPainterPath)
Q_DECLARE_METATYPE(QPointF)
Q_DECLARE_METATYPE(QRectF)
diff --git a/tests/auto/qpathclipper/tst_qpathclipper.cpp b/tests/auto/qpathclipper/tst_qpathclipper.cpp
index 4dc12cb403..98c67d017e 100644
--- a/tests/auto/qpathclipper/tst_qpathclipper.cpp
+++ b/tests/auto/qpathclipper/tst_qpathclipper.cpp
@@ -1300,6 +1300,9 @@ void tst_QPathClipper::task251909()
void tst_QPathClipper::qtbug3778()
{
+ if (sizeof(double) != sizeof(qreal)) {
+ QSKIP("This test only works for qreal=double, otherwise ends in rounding errors", SkipAll);
+ }
QPainterPath path1;
path1.moveTo(200, 3.22409e-5);
// e-5 and higher leads to a bug
diff --git a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
index 605cee62c7..378eb1c5f0 100644
--- a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
+++ b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
@@ -394,7 +394,10 @@ void tst_QPauseAnimation::multipleSequentialGroups()
QVERIFY(subgroup3.state() == QAbstractAnimation::Running);
QVERIFY(subgroup4.state() == QAbstractAnimation::Running);
- QTest::qWait(group.totalDuration() + 100);
+ // This is a pretty long animation so it tends to get rather out of sync
+ // when using the consistent timer, so run for an extra half second for good
+ // measure...
+ QTest::qWait(group.totalDuration() + 500);
#ifdef Q_OS_WIN
if (group.state() != QAbstractAnimation::Stopped)
diff --git a/tests/auto/qpen/tst_qpen.cpp b/tests/auto/qpen/tst_qpen.cpp
index b0c2cad734..674a520f11 100644
--- a/tests/auto/qpen/tst_qpen.cpp
+++ b/tests/auto/qpen/tst_qpen.cpp
@@ -59,6 +59,7 @@ public:
private slots:
void getSetCheck();
+ void swap();
void operator_eq_eq();
void operator_eq_eq_data();
@@ -95,6 +96,14 @@ void tst_QPen::getSetCheck()
}
}
+void tst_QPen::swap()
+{
+ QPen p1(Qt::black), p2(Qt::white);
+ p1.swap(p2);
+ QCOMPARE(p1.color(), QColor(Qt::white));
+ QCOMPARE(p2.color(), QColor(Qt::black));
+}
+
Q_DECLARE_METATYPE(QPen)
Q_DECLARE_METATYPE(QBrush)
diff --git a/tests/auto/qpicture/tst_qpicture.cpp b/tests/auto/qpicture/tst_qpicture.cpp
index 09f650346f..10e5961333 100644
--- a/tests/auto/qpicture/tst_qpicture.cpp
+++ b/tests/auto/qpicture/tst_qpicture.cpp
@@ -64,6 +64,7 @@ private slots:
void devType();
void paintingActive();
void boundingRect();
+ void swap();
void operator_lt_lt();
void save_restore();
@@ -155,6 +156,18 @@ void tst_QPicture::boundingRect()
}
}
+void tst_QPicture::swap()
+{
+ QPicture p1, p2;
+ QPainter(&p1).drawLine(0, 0, 5, 5);
+ QPainter(&p2).drawLine(0, 3, 3, 0);
+ QCOMPARE(p1.boundingRect(), QRect(0,0,5,5));
+ QCOMPARE(p2.boundingRect(), QRect(0,0,3,3));
+ p1.swap(p2);
+ QCOMPARE(p1.boundingRect(), QRect(0,0,3,3));
+ QCOMPARE(p2.boundingRect(), QRect(0,0,5,5));
+}
+
// operator<< and operator>>
void tst_QPicture::operator_lt_lt()
{
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index fdf83118a4..2cbd4f180a 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -95,6 +95,8 @@ public slots:
void cleanup();
private slots:
+ void swap();
+
void setAlphaChannel_data();
void setAlphaChannel();
@@ -247,6 +249,20 @@ void tst_QPixmap::cleanup()
{
}
+void tst_QPixmap::swap()
+{
+ QPixmap p1( 16, 16 ), p2( 32, 32 );
+ p1.fill( Qt::white );
+ p2.fill( Qt::black );
+ const qint64 p1k = p1.cacheKey();
+ const qint64 p2k = p2.cacheKey();
+ p1.swap(p2);
+ QCOMPARE(p1.cacheKey(), p2k);
+ QCOMPARE(p1.size(), QSize(32,32));
+ QCOMPARE(p2.cacheKey(), p1k);
+ QCOMPARE(p2.size(), QSize(16,16));
+}
+
void tst_QPixmap::setAlphaChannel_data()
{
QTest::addColumn<int>("red");
@@ -812,33 +828,43 @@ void tst_QPixmap::drawBitmap()
void tst_QPixmap::grabWidget()
{
- QWidget widget;
- QImage image(128, 128, QImage::Format_ARGB32_Premultiplied);
- for (int row = 0; row < image.height(); ++row) {
- QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
- for (int col = 0; col < image.width(); ++col)
- line[col] = qRgb(rand() & 255, row, col);
- }
+ for (int opaque = 0; opaque < 2; ++opaque) {
+ QWidget widget;
+ QImage image(128, 128, opaque ? QImage::Format_RGB32 : QImage::Format_ARGB32_Premultiplied);
+ for (int row = 0; row < image.height(); ++row) {
+ QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
+ for (int col = 0; col < image.width(); ++col)
+ line[col] = qRgba(rand() & 255, row, col, opaque ? 255 : 127);
+ }
- QPalette pal = widget.palette();
- pal.setBrush(QPalette::Window, QBrush(image));
- widget.setPalette(pal);
- widget.resize(128, 128);
+ QPalette pal = widget.palette();
+ pal.setBrush(QPalette::Window, QBrush(image));
+ widget.setPalette(pal);
+ widget.resize(128, 128);
- QPixmap expected = QPixmap::fromImage(QImage(image.scanLine(64) + 64 * 4, 64, 64, image.bytesPerLine(), image.format()));
- QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
- QVERIFY(lenientCompare(actual, expected));
+ QPixmap expected(64, 64);
+ if (!opaque)
+ expected.fill(Qt::transparent);
- actual = QPixmap::grabWidget(&widget, 64, 64);
- QVERIFY(lenientCompare(actual, expected));
+ QPainter p(&expected);
+ p.translate(-64, -64);
+ p.drawTiledPixmap(0, 0, 128, 128, pal.brush(QPalette::Window).texture(), 0, 0);
+ p.end();
- // Make sure a widget that is not yet shown is grabbed correctly.
- QTreeWidget widget2;
- actual = QPixmap::grabWidget(&widget2);
- widget2.show();
- expected = QPixmap::grabWidget(&widget2);
+ QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
+ QVERIFY(lenientCompare(actual, expected));
- QVERIFY(lenientCompare(actual, expected));
+ actual = QPixmap::grabWidget(&widget, 64, 64);
+ QVERIFY(lenientCompare(actual, expected));
+
+ // Make sure a widget that is not yet shown is grabbed correctly.
+ QTreeWidget widget2;
+ actual = QPixmap::grabWidget(&widget2);
+ widget2.show();
+ expected = QPixmap::grabWidget(&widget2);
+
+ QVERIFY(lenientCompare(actual, expected));
+ }
}
void tst_QPixmap::grabWindow()
diff --git a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
index a6dd8be8ec..99d11ccd4a 100644
--- a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
@@ -880,6 +880,7 @@ void tst_QPlainTextEdit::lineWrapModes()
// We thus need to make it wide enough to show something visible.
int minimumWidth = 2 * ed->document()->documentMargin();
minimumWidth += ed->fontMetrics().width(QLatin1Char('a'));
+ minimumWidth += ed->frameWidth();
ed->resize(minimumWidth, 1000);
QCOMPARE(lineCount(), 26);
ed->setParent(0);
diff --git a/tests/auto/qplugin/qplugin.pro b/tests/auto/qplugin/qplugin.pro
index aafcb36209..37a12da732 100644
--- a/tests/auto/qplugin/qplugin.pro
+++ b/tests/auto/qplugin/qplugin.pro
@@ -25,3 +25,4 @@ mac {
SUBDIRS += tst_qplugin.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/qpluginloader/qpluginloader.pro
index 382d6e4e91..6e41b4c96a 100644
--- a/tests/auto/qpluginloader/qpluginloader.pro
+++ b/tests/auto/qpluginloader/qpluginloader.pro
@@ -11,3 +11,4 @@ TARGET = tst_qpluginloader
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qpoint/qpoint.pro b/tests/auto/qpoint/qpoint.pro
index 8b006c2412..fd240461e2 100644
--- a/tests/auto/qpoint/qpoint.pro
+++ b/tests/auto/qpoint/qpoint.pro
@@ -5,3 +5,4 @@
load(qttest_p4)
SOURCES += tst_qpoint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qpolygon/tst_qpolygon.cpp b/tests/auto/qpolygon/tst_qpolygon.cpp
index eb7cbd517d..a79c0c8a90 100644
--- a/tests/auto/qpolygon/tst_qpolygon.cpp
+++ b/tests/auto/qpolygon/tst_qpolygon.cpp
@@ -63,6 +63,7 @@ public:
private slots:
void makeEllipse();
+ void swap();
};
tst_QPolygon::tst_QPolygon()
@@ -91,5 +92,14 @@ void tst_QPolygon::makeEllipse()
QVERIFY( !err );
}
+void tst_QPolygon::swap()
+{
+ QPolygon p1(QVector<QPoint>() << QPoint(0,0) << QPoint(10,10) << QPoint(-10,10));
+ QPolygon p2(QVector<QPoint>() << QPoint(0,0) << QPoint( 0,10) << QPoint( 10,10) << QPoint(10,0));
+ p1.swap(p2);
+ QCOMPARE(p1.count(),4);
+ QCOMPARE(p2.count(),3);
+}
+
QTEST_APPLESS_MAIN(tst_QPolygon)
#include "tst_qpolygon.moc"
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index e908961fc9..fb9f8f0861 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -596,12 +596,12 @@ void tst_QPrinter::testPageMargins_data()
QTest::addColumn<qreal>("bottom");
QTest::addColumn<int>("unit");
- QTest::newRow("data0") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Millimeter);
- QTest::newRow("data1") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Point);
- QTest::newRow("data2") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Inch);
- QTest::newRow("data3") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Pica);
- QTest::newRow("data4") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Didot);
- QTest::newRow("data5") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Cicero);
+ QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Millimeter);
+ QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Point);
+ QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Inch);
+ QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Pica);
+ QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Didot);
+ QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Cicero);
}
void tst_QPrinter::testPageMargins()
diff --git a/tests/auto/qprocessenvironment/qprocessenvironment.pro b/tests/auto/qprocessenvironment/qprocessenvironment.pro
index 398facc842..60dba50813 100644
--- a/tests/auto/qprocessenvironment/qprocessenvironment.pro
+++ b/tests/auto/qprocessenvironment/qprocessenvironment.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qprocessenvironment.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qqueue/qqueue.pro b/tests/auto/qqueue/qqueue.pro
index ed489f9f81..ce0d8c30ca 100644
--- a/tests/auto/qqueue/qqueue.pro
+++ b/tests/auto/qqueue/qqueue.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qqueue.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrand/qrand.pro b/tests/auto/qrand/qrand.pro
index c868ed40fa..0db8af821c 100644
--- a/tests/auto/qrand/qrand.pro
+++ b/tests/auto/qrand/qrand.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrand.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadlocker/qreadlocker.pro b/tests/auto/qreadlocker/qreadlocker.pro
index 5919102170..ee533070a7 100644
--- a/tests/auto/qreadlocker/qreadlocker.pro
+++ b/tests/auto/qreadlocker/qreadlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadwritelock/qreadwritelock.pro b/tests/auto/qreadwritelock/qreadwritelock.pro
index 4318b18178..93f7c68dc3 100644
--- a/tests/auto/qreadwritelock/qreadwritelock.pro
+++ b/tests/auto/qreadwritelock/qreadwritelock.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadwritelock.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrect/qrect.pro b/tests/auto/qrect/qrect.pro
index 75940b3be7..f1ad046e34 100644
--- a/tests/auto/qrect/qrect.pro
+++ b/tests/auto/qrect/qrect.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrect.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qregexp/qregexp.pro b/tests/auto/qregexp/qregexp.pro
index 80b6827101..e0fef12479 100644
--- a/tests/auto/qregexp/qregexp.pro
+++ b/tests/auto/qregexp/qregexp.pro
@@ -6,3 +6,4 @@ QT = core
QT = core
SOURCES += tst_qregexp.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index d0d26ee519..52f204163b 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -77,6 +77,7 @@ private slots:
void caretAnchoredOptimization();
void isEmpty();
void prepareEngineOptimization();
+ void swap();
void operator_eq();
/*
@@ -1290,6 +1291,14 @@ void tst_QRegExp::prepareEngineOptimization()
QCOMPARE(rx11.matchedLength(), -1);
}
+void tst_QRegExp::swap()
+{
+ QRegExp r1(QLatin1String(".*")), r2(QLatin1String("a*"));
+ r1.swap(r2);
+ QCOMPARE(r1.pattern(),QLatin1String("a*"));
+ QCOMPARE(r2.pattern(),QLatin1String(".*"));
+}
+
void tst_QRegExp::operator_eq()
{
const int I = 2;
diff --git a/tests/auto/qregion/tst_qregion.cpp b/tests/auto/qregion/tst_qregion.cpp
index 1716c94ffa..f3350510cb 100644
--- a/tests/auto/qregion/tst_qregion.cpp
+++ b/tests/auto/qregion/tst_qregion.cpp
@@ -64,6 +64,7 @@ public:
private slots:
void boundingRect();
void rects();
+ void swap();
void setRects();
void ellipseRegion();
void polygonRegion();
@@ -168,6 +169,15 @@ void tst_QRegion::rects()
}
}
+void tst_QRegion::swap()
+{
+ QRegion r1(QRect( 0, 0,10,10));
+ QRegion r2(QRect(10,10,10,10));
+ r1.swap(r2);
+ QCOMPARE(r1.rects().front(), QRect(10,10,10,10));
+ QCOMPARE(r2.rects().front(), QRect( 0, 0,10,10));
+}
+
void tst_QRegion::setRects()
{
{
diff --git a/tests/auto/qresourceengine/qresourceengine.pro b/tests/auto/qresourceengine/qresourceengine.pro
index 6bdeb1edd0..c0db52f997 100644
--- a/tests/auto/qresourceengine/qresourceengine.pro
+++ b/tests/auto/qresourceengine/qresourceengine.pro
@@ -43,3 +43,4 @@ wince*|symbian:{
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qringbuffer/qringbuffer.pro b/tests/auto/qringbuffer/qringbuffer.pro
index 91fb0a0dbb..2e4f166619 100644
--- a/tests/auto/qringbuffer/qringbuffer.pro
+++ b/tests/auto/qringbuffer/qringbuffer.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qringbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qscopedpointer/qscopedpointer.pro b/tests/auto/qscopedpointer/qscopedpointer.pro
index 13d8425070..4a3d5b8de8 100644
--- a/tests/auto/qscopedpointer/qscopedpointer.pro
+++ b/tests/auto/qscopedpointer/qscopedpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qscopedpointer.cpp
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qscriptable/tst_qscriptable.cpp b/tests/auto/qscriptable/tst_qscriptable.cpp
index 3c781b1588..86dd80ed0a 100644
--- a/tests/auto/qscriptable/tst_qscriptable.cpp
+++ b/tests/auto/qscriptable/tst_qscriptable.cpp
@@ -131,7 +131,7 @@ QScriptValue MyScriptable::getArguments()
int MyScriptable::getArgumentCount()
{
- return context()->argumentCount();
+ return argumentCount();
}
void MyScriptable::foo()
@@ -283,6 +283,8 @@ void tst_QScriptable::engine()
void tst_QScriptable::thisObject()
{
+ QVERIFY(!m_scriptable.thisObject().isValid());
+
m_engine.evaluate("o = { }");
{
QScriptValue ret = m_engine.evaluate("o.__proto__ = scriptable;"
diff --git a/tests/auto/qscriptclass/tst_qscriptclass.cpp b/tests/auto/qscriptclass/tst_qscriptclass.cpp
index b4dbe73dc8..20d62b4601 100644
--- a/tests/auto/qscriptclass/tst_qscriptclass.cpp
+++ b/tests/auto/qscriptclass/tst_qscriptclass.cpp
@@ -66,8 +66,10 @@ public:
private slots:
void newInstance();
void getAndSetProperty();
+ void getProperty_invalidValue();
void enumerate();
void extension();
+ void defaultImplementations();
};
tst_QScriptClass::tst_QScriptClass()
@@ -603,6 +605,8 @@ void tst_QScriptClass::newInstance()
QVERIFY(obj2.data().strictlyEquals(num));
QVERIFY(obj2.prototype().strictlyEquals(cls.prototype()));
QCOMPARE(obj2.scriptClass(), (QScriptClass*)&cls);
+ QVERIFY(!obj2.equals(obj1));
+ QVERIFY(!obj2.strictlyEquals(obj1));
QScriptValue obj3 = eng.newObject();
QCOMPARE(obj3.scriptClass(), (QScriptClass*)0);
@@ -730,6 +734,14 @@ void tst_QScriptClass::getAndSetProperty()
QCOMPARE(cls.lastPropertyId(), foo2Id);
}
+ // attempt to delete custom property
+ obj1.setProperty(foo2, QScriptValue());
+ // delete real property
+ obj1.setProperty(foo, QScriptValue());
+ QVERIFY(!obj1.property(foo).isValid());
+ obj1.setProperty(foo, num);
+ QVERIFY(obj1.property(foo).equals(num));
+
// remove script class; normal properties should remain
obj1.setScriptClass(0);
QCOMPARE(obj1.scriptClass(), (QScriptClass*)0);
@@ -741,6 +753,26 @@ void tst_QScriptClass::getAndSetProperty()
QVERIFY(!obj1.property(bar).isValid());
}
+void tst_QScriptClass::getProperty_invalidValue()
+{
+ QScriptEngine eng;
+ TestClass cls(&eng);
+ cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess,
+ /*id=*/0, QScriptValue::ReadOnly, QScriptValue());
+ QScriptValue obj = eng.newObject(&cls);
+
+ QVERIFY(obj.property("foo").isUndefined());
+
+ eng.globalObject().setProperty("obj", obj);
+ QVERIFY(eng.evaluate("obj.hasOwnProperty('foo'))").toBool());
+ // The JS environment expects that a valid value is returned,
+ // otherwise we could crash.
+ QVERIFY(eng.evaluate("obj.foo").isUndefined());
+ QVERIFY(eng.evaluate("obj.foo + ''").isString());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value").isUndefined());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value +''").isString());
+}
+
void tst_QScriptClass::enumerate()
{
QScriptEngine eng;
@@ -805,6 +837,7 @@ void tst_QScriptClass::extension()
QCOMPARE((int)cls.lastExtensionType(), -1);
QVERIFY(!obj.instanceOf(obj));
QCOMPARE((int)cls.lastExtensionType(), -1);
+ QVERIFY(!obj.construct().isValid());
}
// Callable
{
@@ -1017,5 +1050,33 @@ void tst_QScriptClass::extension()
}
}
+void tst_QScriptClass::defaultImplementations()
+{
+ QScriptEngine eng;
+
+ QScriptClass defaultClass(&eng);
+ QCOMPARE(defaultClass.engine(), &eng);
+ QVERIFY(!defaultClass.prototype().isValid());
+ QCOMPARE(defaultClass.name(), QString());
+
+ QScriptValue obj = eng.newObject(&defaultClass);
+ QCOMPARE(obj.scriptClass(), &defaultClass);
+
+ QScriptString name = eng.toStringHandle("foo");
+ uint id = -1;
+ QCOMPARE(defaultClass.queryProperty(obj, name, QScriptClass::HandlesReadAccess, &id), QScriptClass::QueryFlags(0));
+ QVERIFY(!defaultClass.property(obj, name, id).isValid());
+ QCOMPARE(defaultClass.propertyFlags(obj, name, id), QScriptValue::PropertyFlags(0));
+ defaultClass.setProperty(obj, name, id, 123);
+ QVERIFY(!obj.property(name).isValid());
+
+ QCOMPARE(defaultClass.newIterator(obj), (QScriptClassPropertyIterator*)0);
+
+ QVERIFY(!defaultClass.supportsExtension(QScriptClass::Callable));
+ QVERIFY(!defaultClass.supportsExtension(QScriptClass::HasInstance));
+ QVERIFY(!defaultClass.extension(QScriptClass::Callable).isValid());
+ QVERIFY(!defaultClass.extension(QScriptClass::HasInstance).isValid());
+}
+
QTEST_MAIN(tst_QScriptClass)
#include "tst_qscriptclass.moc"
diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
index 617c183206..5e7ede848d 100644
--- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
+++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
@@ -44,11 +44,13 @@
#include <QtScript/qscriptcontext.h>
#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalueiterator.h>
//TESTED_CLASS=
//TESTED_FILES=
Q_DECLARE_METATYPE(QScriptValueList)
+Q_DECLARE_METATYPE(QScriptContext::Error)
QT_BEGIN_NAMESPACE
extern bool qt_script_isJITEnabled();
@@ -67,7 +69,11 @@ private slots:
void arguments();
void thisObject();
void returnValue();
- void throwError();
+ void throwError_data();
+ void throwError_fromEvaluate_data();
+ void throwError_fromEvaluate();
+ void throwError_fromCpp_data();
+ void throwError_fromCpp();
void throwValue();
void evaluateInFunction();
void pushAndPopContext();
@@ -77,6 +83,7 @@ private slots:
void scopeChain();
void pushAndPopScope();
void getSetActivationObject();
+ void getSetActivationObject_customContext();
void inheritActivationAndThisObject();
void toString();
void calledAsConstructor();
@@ -85,6 +92,10 @@ private slots:
void qobjectAsActivationObject();
void parentContextCallee_QT2270();
void popNativeContextScope();
+ void throwErrorInGlobalContext();
+ void throwErrorWithTypeInGlobalContext_data();
+ void throwErrorWithTypeInGlobalContext();
+ void throwValueInGlobalContext();
};
tst_QScriptContext::tst_QScriptContext()
@@ -360,73 +371,71 @@ static QScriptValue throw_ErrorAndReturnUndefined(QScriptContext *ctx, QScriptEn
return eng->undefinedValue();
}
-void tst_QScriptContext::throwError()
+static QScriptValue throw_ErrorAndReturnString(QScriptContext *ctx, QScriptEngine *)
{
- QScriptEngine eng;
+ return ctx->throwError(QScriptContext::UnknownError, "foo").toString();
+}
- {
- QScriptValue fun = eng.newFunction(throw_Error);
- eng.globalObject().setProperty("throw_Error", fun);
- QScriptValue result = eng.evaluate("throw_Error()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("Error: foo"));
- }
+static QScriptValue throw_ErrorAndReturnObject(QScriptContext *ctx, QScriptEngine *eng)
+{
+ ctx->throwError(QScriptContext::UnknownError, "foo");
+ return eng->newObject();
+}
- {
- QScriptValue fun = eng.newFunction(throw_TypeError);
- eng.globalObject().setProperty("throw_TypeError", fun);
- QScriptValue result = eng.evaluate("throw_TypeError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("TypeError: foo"));
- }
+void tst_QScriptContext::throwError_data()
+{
+ QTest::addColumn<void*>("nativeFunctionPtr");
+ QTest::addColumn<QString>("stringRepresentation");
+
+ QTest::newRow("Error") << reinterpret_cast<void*>(throw_Error) << QString("Error: foo");
+ QTest::newRow("TypeError") << reinterpret_cast<void*>(throw_TypeError) << QString("TypeError: foo");
+ QTest::newRow("ReferenceError") << reinterpret_cast<void*>(throw_ReferenceError) << QString("ReferenceError: foo");
+ QTest::newRow("SyntaxError") << reinterpret_cast<void*>(throw_SyntaxError) << QString("SyntaxError: foo");
+ QTest::newRow("RangeError") << reinterpret_cast<void*>(throw_RangeError) << QString("RangeError: foo");
+ QTest::newRow("URIError") << reinterpret_cast<void*>(throw_URIError) << QString("URIError: foo");
+ QTest::newRow("ErrorAndReturnUndefined") << reinterpret_cast<void*>(throw_ErrorAndReturnUndefined) << QString("Error: foo");
+ QTest::newRow("ErrorAndReturnString") << reinterpret_cast<void*>(throw_ErrorAndReturnString) << QString("Error: foo");
+ QTest::newRow("ErrorAndReturnObject") << reinterpret_cast<void*>(throw_ErrorAndReturnObject) << QString("Error: foo");
+}
- {
- QScriptValue fun = eng.newFunction(throw_ReferenceError);
- eng.globalObject().setProperty("throw_ReferenceError", fun);
- QScriptValue result = eng.evaluate("throw_ReferenceError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("ReferenceError: foo"));
- }
+void tst_QScriptContext::throwError_fromEvaluate_data()
+{
+ throwError_data();
+}
- {
- QScriptValue fun = eng.newFunction(throw_SyntaxError);
- eng.globalObject().setProperty("throw_SyntaxError", fun);
- QScriptValue result = eng.evaluate("throw_SyntaxError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("SyntaxError: foo"));
- }
+void tst_QScriptContext::throwError_fromEvaluate()
+{
+ QFETCH(void*, nativeFunctionPtr);
+ QScriptEngine::FunctionSignature nativeFunction = reinterpret_cast<QScriptEngine::FunctionSignature>(nativeFunctionPtr);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine engine;
- {
- QScriptValue fun = eng.newFunction(throw_RangeError);
- eng.globalObject().setProperty("throw_RangeError", fun);
- QScriptValue result = eng.evaluate("throw_RangeError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("RangeError: foo"));
- }
+ QScriptValue fun = engine.newFunction(nativeFunction);
+ engine.globalObject().setProperty("throw_Error", fun);
+ QScriptValue result = engine.evaluate("throw_Error()");
+ QCOMPARE(engine.hasUncaughtException(), true);
+ QCOMPARE(result.isError(), true);
+ QCOMPARE(result.toString(), stringRepresentation);
+}
- {
- QScriptValue fun = eng.newFunction(throw_URIError);
- eng.globalObject().setProperty("throw_URIError", fun);
- QScriptValue result = eng.evaluate("throw_URIError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("URIError: foo"));
- }
+void tst_QScriptContext::throwError_fromCpp_data()
+{
+ throwError_data();
+}
- {
- QScriptValue fun = eng.newFunction(throw_ErrorAndReturnUndefined);
- eng.globalObject().setProperty("throw_ErrorAndReturnUndefined", fun);
- QScriptValue result = eng.evaluate("throw_ErrorAndReturnUndefined()");
- QVERIFY(eng.hasUncaughtException());
- QVERIFY(result.isError());
- QCOMPARE(result.toString(), QString("Error: foo"));
- }
+void tst_QScriptContext::throwError_fromCpp()
+{
+ QFETCH(void*, nativeFunctionPtr);
+ QScriptEngine::FunctionSignature nativeFunction = reinterpret_cast<QScriptEngine::FunctionSignature>(nativeFunctionPtr);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine engine;
+ QScriptValue fun = engine.newFunction(nativeFunction);
+ engine.globalObject().setProperty("throw_Error", fun);
+ QScriptValue result = fun.call();
+ QCOMPARE(engine.hasUncaughtException(), true);
+ QCOMPARE(result.isError(), true);
+ QCOMPARE(result.toString(), stringRepresentation);
}
static QScriptValue throw_value(QScriptContext *ctx, QScriptEngine *)
@@ -513,8 +522,30 @@ void tst_QScriptContext::pushAndPopContext()
QScriptContext *ctx3 = eng.pushContext();
ctx3->activationObject().setProperty("foo", QScriptValue(&eng, 123));
QVERIFY(eng.evaluate("foo").strictlyEquals(QScriptValue(&eng, 123)));
+ QCOMPARE(ctx3->activationObject().propertyFlags("foo"), QScriptValue::PropertyFlags(0));
+
+ ctx3->activationObject().setProperty(4, 456);
+ QVERIFY(ctx3->activationObject().property(4, QScriptValue::ResolveLocal).equals(456));
+
eng.evaluate("var bar = 'ciao'");
QVERIFY(ctx3->activationObject().property("bar", QScriptValue::ResolveLocal).strictlyEquals(QScriptValue(&eng, "ciao")));
+
+ ctx3->activationObject().setProperty("baz", 789, QScriptValue::ReadOnly);
+ QVERIFY(eng.evaluate("baz").equals(789));
+ QCOMPARE(ctx3->activationObject().propertyFlags("baz"), QScriptValue::ReadOnly);
+
+ QSet<QString> activationPropertyNames;
+ QScriptValueIterator it(ctx3->activationObject());
+ while (it.hasNext()) {
+ it.next();
+ activationPropertyNames.insert(it.name());
+ }
+ QCOMPARE(activationPropertyNames.size(), 4);
+ QVERIFY(activationPropertyNames.contains("foo"));
+ QVERIFY(activationPropertyNames.contains("4"));
+ QVERIFY(activationPropertyNames.contains("bar"));
+ QVERIFY(activationPropertyNames.contains("baz"));
+
eng.popContext();
}
@@ -1054,6 +1085,20 @@ void tst_QScriptContext::getSetActivationObject()
}
}
+void tst_QScriptContext::getSetActivationObject_customContext()
+{
+ QScriptEngine eng;
+ QScriptContext *ctx = eng.pushContext();
+ QVERIFY(ctx->activationObject().isObject());
+ QScriptValue act = eng.newObject();
+ ctx->setActivationObject(act);
+ QVERIFY(ctx->activationObject().equals(act));
+ eng.evaluate("var foo = 123");
+ QCOMPARE(act.property("foo").toInt32(), 123);
+ eng.popContext();
+ QCOMPARE(act.property("foo").toInt32(), 123);
+}
+
static QScriptValue myEval(QScriptContext *ctx, QScriptEngine *eng)
{
QString code = ctx->argument(0).toString();
@@ -1283,5 +1328,49 @@ void tst_QScriptContext::parentContextCallee_QT2270()
QVERIFY(callee.equals(fun));
}
+void tst_QScriptContext::throwErrorInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError("foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), QString::fromLatin1("Error: foo"));
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext_data()
+{
+ QTest::addColumn<QScriptContext::Error>("error");
+ QTest::addColumn<QString>("stringRepresentation");
+ QTest::newRow("ReferenceError") << QScriptContext::ReferenceError << QString::fromLatin1("ReferenceError: foo");
+ QTest::newRow("SyntaxError") << QScriptContext::SyntaxError << QString::fromLatin1("SyntaxError: foo");
+ QTest::newRow("TypeError") << QScriptContext::TypeError << QString::fromLatin1("TypeError: foo");
+ QTest::newRow("RangeError") << QScriptContext::RangeError << QString::fromLatin1("RangeError: foo");
+ QTest::newRow("URIError") << QScriptContext::URIError << QString::fromLatin1("URIError: foo");
+ QTest::newRow("UnknownError") << QScriptContext::UnknownError << QString::fromLatin1("Error: foo");
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext()
+{
+ QFETCH(QScriptContext::Error, error);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError(error, "foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), stringRepresentation);
+}
+
+void tst_QScriptContext::throwValueInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue val(&eng, 123);
+ QScriptValue ret = eng.currentContext()->throwValue(val);
+ QVERIFY(ret.strictlyEquals(val));
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(val));
+}
+
QTEST_MAIN(tst_QScriptContext)
#include "tst_qscriptcontext.moc"
diff --git a/tests/auto/qscriptengine/idtranslatable-unicode.js b/tests/auto/qscriptengine/idtranslatable-unicode.js
new file mode 100644
index 0000000000..e17d6172bc
--- /dev/null
+++ b/tests/auto/qscriptengine/idtranslatable-unicode.js
@@ -0,0 +1,5 @@
+qsTrId('\u01F8\u01D2\u0199\u01D0\u01E1');
+
+QT_TRID_NOOP("\u0191\u01CE\u0211\u0229\u019C\u018E\u019A\u01D0");
+
+qsTrId("\u0181\u01A1\u0213\u018F\u018C", 10);
diff --git a/tests/auto/qscriptengine/qscriptengine.qrc b/tests/auto/qscriptengine/qscriptengine.qrc
index fa55a5b5b1..d05d115966 100644
--- a/tests/auto/qscriptengine/qscriptengine.qrc
+++ b/tests/auto/qscriptengine/qscriptengine.qrc
@@ -2,5 +2,7 @@
<qresource>
<file>translations/translatable_la.qm</file>
<file>translations/idtranslatable_la.qm</file>
+ <file>translations/translatable-unicode.qm</file>
+ <file>translations/idtranslatable-unicode.qm</file>
</qresource>
</RCC>
diff --git a/tests/auto/qscriptengine/translatable-unicode.js b/tests/auto/qscriptengine/translatable-unicode.js
new file mode 100644
index 0000000000..afe2aff21c
--- /dev/null
+++ b/tests/auto/qscriptengine/translatable-unicode.js
@@ -0,0 +1,9 @@
+qsTr("H\u2082O");
+qsTranslate("\u010C\u0101\u011F\u0115", "CO\u2082");
+
+var unicode_strings = [
+ QT_TR_NOOP("\u0391\u0392\u0393"),
+ QT_TRANSLATE_NOOP("\u010C\u0101\u011F\u0115", "\u0414\u0415\u0416")
+];
+
+qsTr("H\u2082O", "not the same H\u2082O");
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
new file mode 100644
index 0000000000..8c5fb91b1d
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
new file mode 100644
index 0000000000..74ebf43c47
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nb_NO">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name></name>
+ <message id="Ǹǒƙǐǡ">
+ <location filename="idtranslatable-unicode.js" line="1"/>
+ <source></source>
+ <translation>Ƨưƈȼȝȿș</translation>
+ </message>
+ <message id="ƑǎȑȩƜƎƚǐ">
+ <location filename="idtranslatable-unicode.js" line="3"/>
+ <source></source>
+ <translation>Ǡȡȋȅȕ</translation>
+ </message>
+ <message id="ƁơȓƏƌ" numerus="yes">
+ <location filename="idtranslatable-unicode.js" line="5"/>
+ <source></source>
+ <translation>
+ <numerusform>Ƒưǹ</numerusform>
+ <numerusform>%n ƒơǒ(ș)</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.qm b/tests/auto/qscriptengine/translations/translatable-unicode.qm
new file mode 100644
index 0000000000..aa75ce61df
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.ts b/tests/auto/qscriptengine/translations/translatable-unicode.ts
new file mode 100644
index 0000000000..1b8b4d2309
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.ts
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name>translatable-unicode</name>
+ <message>
+ <location filename="translatable-unicode.js" line="1"/>
+ <source>H₂O</source>
+ <translation>ͻͼͽ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="5"/>
+ <source>ΑΒΓ</source>
+ <translation>ӜҴѼ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="9"/>
+ <source>H₂O</source>
+ <comment>not the same H₂O</comment>
+ <translation>ԶՊՒ</translation>
+ </message>
+</context>
+<context>
+ <name>Čāğĕ</name>
+ <message>
+ <location filename="translatable-unicode.js" line="2"/>
+ <source>CO₂</source>
+ <translation>בךע</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="6"/>
+ <source>ДЕЖ</source>
+ <translation>خسس</translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 7133a6c288..d529b8b0d2 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -95,16 +95,33 @@ private slots:
void pushPopContext();
void getSetDefaultPrototype();
void newFunction();
+ void newFunctionWithArg();
+ void newFunctionWithProto();
void newObject();
void newArray();
+ void newArray_HooliganTask218092();
+ void newArray_HooliganTask233836();
void newVariant();
+ void newVariant_defaultPrototype();
+ void newVariant_promoteObject();
+ void newVariant_replaceValue();
+ void newVariant_valueOfToString();
+ void newVariant_promoteNonObject();
+ void newVariant_promoteNonQScriptObject();
void newRegExp();
void newDate();
void newQObject();
+ void newQObject_ownership();
+ void newQObject_promoteObject();
+ void newQObject_sameQObject();
+ void newQObject_defaultPrototype();
+ void newQObject_promoteNonObject();
+ void newQObject_promoteNonQScriptObject();
void newQMetaObject();
void newActivationObject();
void getSetGlobalObject();
void globalObjectProperties();
+ void createGlobalObjectProperty();
void globalObjectGetterSetterProperty();
void customGlobalObjectWithPrototype();
void globalObjectWithCustomPrototype();
@@ -120,6 +137,7 @@ private slots:
void uncaughtException();
void errorMessage_QT679();
void valueConversion();
+ void qScriptValueFromValue_noEngine();
void importExtension();
void infiniteRecursion();
void castWithPrototypeChain();
@@ -129,6 +147,7 @@ private slots:
void gcWithNestedDataStructure();
void processEventsWhileRunning();
void throwErrorFromProcessEvents();
+ void disableProcessEventsInterval();
void stacktrace();
void numberParsing_data();
void numberParsing();
@@ -144,7 +163,10 @@ private slots:
void forInStatement();
void functionExpression();
void stringObjects();
- void getterSetterThisObject();
+ void getterSetterThisObject_global();
+ void getterSetterThisObject_plain();
+ void getterSetterThisObject_prototypeChain();
+ void getterSetterThisObject_activation();
void continueInSwitch();
void readOnlyPrototypeProperty();
void toObject();
@@ -164,11 +186,21 @@ private slots:
void translationContext_data();
void translationContext();
void translateScriptIdBased();
+ void translateScriptUnicode_data();
+ void translateScriptUnicode();
+ void translateScriptUnicodeIdBased_data();
+ void translateScriptUnicodeIdBased();
void functionScopes();
void nativeFunctionScopes();
void evaluateProgram();
+ void evaluateProgram_customScope();
+ void evaluateProgram_closure();
+ void evaluateProgram_executeLater();
+ void evaluateProgram_multipleEngines();
+ void evaluateProgram_empty();
void collectGarbageAfterConnect();
void promoteThisObjectToQObjectInConstructor();
+ void scriptValueFromQMetaObject();
void qRegExpInport_data();
void qRegExpInport();
@@ -288,8 +320,11 @@ void tst_QScriptEngine::newFunction()
QCOMPARE(fun.call().isNull(), true);
QCOMPARE(fun.construct().isObject(), true);
}
+}
- // the overload that takes a void*
+void tst_QScriptEngine::newFunctionWithArg()
+{
+ QScriptEngine eng;
{
QScriptValue fun = eng.newFunction(myFunctionWithVoidArg, (void*)this);
QVERIFY(fun.isFunction());
@@ -310,8 +345,11 @@ void tst_QScriptEngine::newFunction()
QCOMPARE(fun.call().isNull(), true);
QCOMPARE(fun.construct().isObject(), true);
}
+}
- // the overload that takes a prototype
+void tst_QScriptEngine::newFunctionWithProto()
+{
+ QScriptEngine eng;
{
QScriptValue proto = eng.newObject();
QScriptValue fun = eng.newFunction(myFunction, proto);
@@ -361,8 +399,11 @@ void tst_QScriptEngine::newArray()
QCOMPARE(array.prototype().isValid(), true);
QCOMPARE(array.prototype().isArray(), true);
QCOMPARE(array.prototype().strictlyEquals(eng.evaluate("Array.prototype")), true);
+}
- // task 218092
+void tst_QScriptEngine::newArray_HooliganTask218092()
+{
+ QScriptEngine eng;
{
QScriptValue ret = eng.evaluate("[].splice(0, 0, 'a')");
QVERIFY(ret.isArray());
@@ -388,8 +429,11 @@ void tst_QScriptEngine::newArray()
QVERIFY(ret.isArray());
QCOMPARE(ret.property("length").toInt32(), 2);
}
+}
- // task 233836
+void tst_QScriptEngine::newArray_HooliganTask233836()
+{
+ QScriptEngine eng;
{
QScriptValue ret = eng.evaluate("a = new Array(4294967295); a.push('foo')");
QVERIFY(ret.isNumber());
@@ -423,7 +467,12 @@ void tst_QScriptEngine::newVariant()
QCOMPARE(opaque.prototype().isVariant(), true);
QVERIFY(opaque.property("valueOf").call(opaque).isUndefined());
}
+}
+
+void tst_QScriptEngine::newVariant_defaultPrototype()
+{
// default prototype should be set automatically
+ QScriptEngine eng;
{
QScriptValue proto = eng.newObject();
eng.setDefaultPrototype(qMetaTypeId<QString>(), proto);
@@ -436,7 +485,12 @@ void tst_QScriptEngine::newVariant()
QVERIFY(ret2.isVariant());
QVERIFY(!ret2.prototype().strictlyEquals(proto));
}
+}
+
+void tst_QScriptEngine::newVariant_promoteObject()
+{
// "promote" plain object to variant
+ QScriptEngine eng;
{
QScriptValue object = eng.newObject();
object.setProperty("foo", eng.newObject());
@@ -453,17 +507,28 @@ void tst_QScriptEngine::newVariant()
QCOMPARE(ret.toVariant(), QVariant(123));
QVERIFY(ret.prototype().strictlyEquals(originalProto));
}
+}
+
+void tst_QScriptEngine::newVariant_replaceValue()
+{
// replace value of existing object
+ QScriptEngine eng;
{
QScriptValue object = eng.newVariant(QVariant(123));
- QScriptValue ret = eng.newVariant(object, QVariant(456));
- QVERIFY(ret.isValid());
- QVERIFY(ret.strictlyEquals(object));
- QVERIFY(ret.isVariant());
- QCOMPARE(ret.toVariant(), QVariant(456));
+ for (int x = 0; x < 2; ++x) {
+ QScriptValue ret = eng.newVariant(object, QVariant(456));
+ QVERIFY(ret.isValid());
+ QVERIFY(ret.strictlyEquals(object));
+ QVERIFY(ret.isVariant());
+ QCOMPARE(ret.toVariant(), QVariant(456));
+ }
}
+}
+void tst_QScriptEngine::newVariant_valueOfToString()
+{
// valueOf() and toString()
+ QScriptEngine eng;
{
QScriptValue object = eng.newVariant(QVariant(123));
QScriptValue value = object.property("valueOf").call(object);
@@ -497,6 +562,27 @@ void tst_QScriptEngine::newVariant()
}
}
+void tst_QScriptEngine::newVariant_promoteNonObject()
+{
+ QScriptEngine eng;
+ {
+ QVariant var(456);
+ QScriptValue ret = eng.newVariant(123, var);
+ QVERIFY(ret.isVariant());
+ QCOMPARE(ret.toVariant(), var);
+ }
+}
+
+void tst_QScriptEngine::newVariant_promoteNonQScriptObject()
+{
+ QScriptEngine eng;
+ {
+ QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::newVariant(): changing class of non-QScriptObject not supported");
+ QScriptValue ret = eng.newVariant(eng.newArray(), 123);
+ QVERIFY(!ret.isValid());
+ }
+}
+
void tst_QScriptEngine::newRegExp()
{
QScriptEngine eng;
@@ -645,8 +731,11 @@ void tst_QScriptEngine::newQObject()
QCOMPARE(qobject.prototype().isQObject(), true);
QCOMPARE(qobject.scriptClass(), (QScriptClass*)0);
}
+}
- // test ownership
+void tst_QScriptEngine::newQObject_ownership()
+{
+ QScriptEngine eng;
{
QPointer<QObject> ptr = new QObject();
QVERIFY(ptr != 0);
@@ -701,7 +790,11 @@ void tst_QScriptEngine::newQObject()
QVERIFY(child != 0);
delete parent;
}
+}
+void tst_QScriptEngine::newQObject_promoteObject()
+{
+ QScriptEngine eng;
// "promote" plain object to QObject
{
QScriptValue obj = eng.newObject();
@@ -733,14 +826,20 @@ void tst_QScriptEngine::newQObject()
QScriptValue object = eng.newVariant(123);
QScriptValue originalProto = object.prototype();
QObject otherQObject;
- QScriptValue ret = eng.newQObject(object, &otherQObject);
- QVERIFY(ret.isValid());
- QVERIFY(ret.isQObject());
- QVERIFY(ret.strictlyEquals(object));
- QCOMPARE(ret.toQObject(), (QObject *)&otherQObject);
- QVERIFY(ret.prototype().strictlyEquals(originalProto));
+ for (int x = 0; x < 2; ++x) {
+ QScriptValue ret = eng.newQObject(object, &otherQObject);
+ QVERIFY(ret.isValid());
+ QVERIFY(ret.isQObject());
+ QVERIFY(ret.strictlyEquals(object));
+ QCOMPARE(ret.toQObject(), (QObject *)&otherQObject);
+ QVERIFY(ret.prototype().strictlyEquals(originalProto));
+ }
}
+}
+void tst_QScriptEngine::newQObject_sameQObject()
+{
+ QScriptEngine eng;
// calling newQObject() several times with same object
for (int x = 0; x < 2; ++x) {
QObject qobj;
@@ -771,7 +870,11 @@ void tst_QScriptEngine::newQObject()
QScriptEngine::ExcludeSuperClassMethods | opt);
QCOMPARE(obj8.strictlyEquals(obj7), preferExisting);
}
+}
+void tst_QScriptEngine::newQObject_defaultPrototype()
+{
+ QScriptEngine eng;
// newQObject() should set the default prototype, if one has been registered
{
QScriptValue oldQObjectProto = eng.defaultPrototype(qMetaTypeId<QObject*>());
@@ -795,6 +898,26 @@ void tst_QScriptEngine::newQObject()
}
}
+void tst_QScriptEngine::newQObject_promoteNonObject()
+{
+ QScriptEngine eng;
+ {
+ QScriptValue ret = eng.newQObject(123, this);
+ QVERIFY(ret.isQObject());
+ QCOMPARE(ret.toQObject(), this);
+ }
+}
+
+void tst_QScriptEngine::newQObject_promoteNonQScriptObject()
+{
+ QScriptEngine eng;
+ {
+ QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::newQObject(): changing class of non-QScriptObject not supported");
+ QScriptValue ret = eng.newQObject(eng.newArray(), this);
+ QVERIFY(!ret.isValid());
+ }
+}
+
QT_BEGIN_NAMESPACE
Q_SCRIPT_DECLARE_QMETAOBJECT(QObject, QObject*)
Q_SCRIPT_DECLARE_QMETAOBJECT(QWidget, QWidget*)
@@ -981,6 +1104,11 @@ void tst_QScriptEngine::getSetGlobalObject()
QCOMPARE(glob.prototype().isObject(), true);
QCOMPARE(glob.prototype().strictlyEquals(eng.evaluate("Object.prototype")), true);
+ eng.setGlobalObject(glob);
+ QVERIFY(eng.globalObject().equals(glob));
+ eng.setGlobalObject(123);
+ QVERIFY(eng.globalObject().equals(glob));
+
QScriptValue obj = eng.newObject();
eng.setGlobalObject(obj);
QVERIFY(eng.globalObject().strictlyEquals(obj));
@@ -1030,6 +1158,28 @@ void tst_QScriptEngine::getSetGlobalObject()
QScriptValue ret = eng.evaluate("(function() { return this; })()");
QVERIFY(ret.strictlyEquals(obj));
}
+
+ // Delete property.
+ {
+ QScriptValue ret = eng.evaluate("delete foo");
+ QVERIFY(ret.isBool());
+ QVERIFY(ret.toBool());
+ QVERIFY(!obj.property("foo").isValid());
+ }
+
+ // Getter/setter property.
+ QVERIFY(eng.evaluate("this.__defineGetter__('oof', function() { return this.bar; })").isUndefined());
+ QVERIFY(eng.evaluate("this.__defineSetter__('oof', function(v) { this.bar = v; })").isUndefined());
+ QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isFunction());
+ QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isFunction());
+ eng.evaluate("oof = 123");
+ QVERIFY(eng.evaluate("oof").equals(obj.property("bar")));
+
+ // Enumeration.
+ {
+ QScriptValue ret = eng.evaluate("a = []; for (var p in this) a.push(p); a");
+ QCOMPARE(ret.toString(), QString::fromLatin1("bar,baz,oof,p,a"));
+ }
}
static QScriptValue getSetFoo(QScriptContext *ctx, QScriptEngine *)
@@ -1176,7 +1326,12 @@ void tst_QScriptEngine::globalObjectProperties()
}
}
QVERIFY(remainingNames.isEmpty());
+}
+void tst_QScriptEngine::createGlobalObjectProperty()
+{
+ QScriptEngine eng;
+ QScriptValue global = eng.globalObject();
// create property with no attributes
{
QString name = QString::fromLatin1("foo");
@@ -2256,6 +2411,14 @@ void tst_QScriptEngine::valueConversion()
QEXPECT_FAIL("", "QTBUG-6136: JSC-based back-end doesn't preserve QRegExp::minimal (always false)", Continue);
QCOMPARE(val.toRegExp().isMinimal(), in.isMinimal());
}
+
+ QCOMPARE(qscriptvalue_cast<QVariant>(QScriptValue(123)), QVariant(123));
+}
+
+void tst_QScriptEngine::qScriptValueFromValue_noEngine()
+{
+ QVERIFY(!qScriptValueFromValue(0, 123).isValid());
+ QVERIFY(!qScriptValueFromValue(0, QVariant(123)).isValid());
}
static QScriptValue __import__(QScriptContext *ctx, QScriptEngine *eng)
@@ -2694,6 +2857,19 @@ void tst_QScriptEngine::throwErrorFromProcessEvents()
QCOMPARE(ret.toString(), QString::fromLatin1("Error: Killed"));
}
+void tst_QScriptEngine::disableProcessEventsInterval()
+{
+ QScriptEngine eng;
+ eng.setProcessEventsInterval(100);
+ QCOMPARE(eng.processEventsInterval(), 100);
+ eng.setProcessEventsInterval(0);
+ QCOMPARE(eng.processEventsInterval(), 0);
+ eng.setProcessEventsInterval(-1);
+ QCOMPARE(eng.processEventsInterval(), -1);
+ eng.setProcessEventsInterval(-100);
+ QCOMPARE(eng.processEventsInterval(), -100);
+}
+
void tst_QScriptEngine::stacktrace()
{
QString script = QString::fromLatin1(
@@ -3730,9 +3906,8 @@ void tst_QScriptEngine::stringObjects()
}
}
-void tst_QScriptEngine::getterSetterThisObject()
+void tst_QScriptEngine::getterSetterThisObject_global()
{
- // Global Object
{
QScriptEngine eng;
// read
@@ -3790,8 +3965,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QCOMPARE(ret.toString(), QString::fromLatin1("foo"));
}
}
+}
- // other object
+void tst_QScriptEngine::getterSetterThisObject_plain()
+{
{
QScriptEngine eng;
eng.evaluate("o = {}");
@@ -3808,8 +3985,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo"));
QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo"));
}
+}
- // getter+setter in prototype chain
+void tst_QScriptEngine::getterSetterThisObject_prototypeChain()
+{
{
QScriptEngine eng;
eng.evaluate("o = {}; p = {}; o.__proto__ = p");
@@ -3827,8 +4006,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo"));
QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo"));
}
+}
- // getter+setter in activation
+void tst_QScriptEngine::getterSetterThisObject_activation()
+{
{
QScriptEngine eng;
QScriptContext *ctx = eng.pushContext();
@@ -4522,6 +4703,17 @@ void tst_QScriptEngine::installTranslatorFunctions()
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("foobar"));
}
+ {
+ QScriptValue ret = eng.evaluate("'foo%0'.arg(123)");
+ QVERIFY(ret.isString());
+ QCOMPARE(ret.toString(), QString::fromLatin1("foo123"));
+ }
+ {
+ // Maybe this should throw an error?
+ QScriptValue ret = eng.evaluate("'foo%0'.arg()");
+ QVERIFY(ret.isString());
+ QCOMPARE(ret.toString(), QString());
+ }
{
QScriptValue ret = eng.evaluate("qsTrId('foo')");
@@ -4533,6 +4725,7 @@ void tst_QScriptEngine::installTranslatorFunctions()
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("foo"));
}
+ QVERIFY(eng.evaluate("QT_TRID_NOOP()").isUndefined());
}
static QScriptValue callQsTr(QScriptContext *ctx, QScriptEngine *eng)
@@ -4567,9 +4760,14 @@ void tst_QScriptEngine::translateScript()
QCOMPARE(engine.evaluate("eval('qsTranslate(\\'FooContext\\', \\'Goodbye\\')')", fileName).toString(), QString::fromLatin1("Farvel"));
QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8')", fileName).toString(), QString::fromLatin1("Farvel"));
+ QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'CodecForTr')", fileName).toString(), QString::fromLatin1("Farvel"));
+
+ QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8', 42)", fileName).toString(), QString::fromLatin1("Goodbye"));
QCOMPARE(engine.evaluate("qsTr('One', 'not the same one')", fileName).toString(), QString::fromLatin1("Enda en"));
+ QCOMPARE(engine.evaluate("qsTr('One', 'not the same one', 42)", fileName).toString(), QString::fromLatin1("One"));
+
QVERIFY(engine.evaluate("QT_TR_NOOP()").isUndefined());
QCOMPARE(engine.evaluate("QT_TR_NOOP('One')").toString(), QString::fromLatin1("One"));
@@ -4638,6 +4836,7 @@ void tst_QScriptEngine::translateWithInvalidArgs_data()
QTest::newRow("qsTranslate()") << "qsTranslate()" << "Error: qsTranslate() requires at least two arguments";
QTest::newRow("qsTranslate('foo')") << "qsTranslate('foo')" << "Error: qsTranslate() requires at least two arguments";
+ QTest::newRow("qsTranslate(123, 'foo')") << "qsTranslate(123, 'foo')" << "Error: qsTranslate(): first argument (context) must be a string";
QTest::newRow("qsTranslate('foo', 123)") << "qsTranslate('foo', 123)" << "Error: qsTranslate(): second argument (text) must be a string";
QTest::newRow("qsTranslate('foo', 'bar', 123)") << "qsTranslate('foo', 'bar', 123)" << "Error: qsTranslate(): third argument (comment) must be a string";
QTest::newRow("qsTranslate('foo', 'bar', 'baz', 123)") << "qsTranslate('foo', 'bar', 'baz', 123)" << "Error: qsTranslate(): fourth argument (encoding) must be a string";
@@ -4755,6 +4954,93 @@ void tst_QScriptEngine::translateScriptIdBased()
QString::fromLatin1("qtn_foo_bar")); // Doesn't have plural
}
+// How to add a new test row:
+// - Find a nice list of Unicode characters to choose from
+// - Write source string/context/comment in .js using Unicode escape sequences (\uABCD)
+// - Update corresponding .ts file (e.g. lupdate foo.js -ts foo.ts -codecfortr UTF-8)
+// - Enter translation in Linguist
+// - Update corresponding .qm file (e.g. lrelease foo.ts)
+// - Evaluate script that performs translation; make sure the correct result is returned
+// (e.g. by setting the resulting string as the text of a QLabel and visually verifying
+// that it looks the same as what you entered in Linguist :-) )
+// - Generate the expectedTranslation column data using toUtf8().toHex()
+void tst_QScriptEngine::translateScriptUnicode_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QString fileName = QString::fromLatin1("translatable-unicode.js");
+ QTest::newRow("qsTr('H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << fileName << QString::fromUtf8("\xcd\xbb\xcd\xbc\xcd\xbd");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << fileName << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+ QTest::newRow("qsTr('\\u0391\\u0392\\u0393')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('\\u0391\\u0392\\u0393')") << fileName << QString::fromUtf8("\xd3\x9c\xd2\xb4\xd1\xbc");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')") << fileName << QString::fromUtf8("\xd8\xae\xd8\xb3\xd8\xb3");
+ QTest::newRow("qsTr('H\\u2082O', 'not the same H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O', 'not the same H\\u2082O')") << fileName << QString::fromUtf8("\xd4\xb6\xd5\x8a\xd5\x92");
+ QTest::newRow("qsTr('H\\u2082O')")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << QString() << QString::fromUtf8("\x48\xe2\x82\x82\x4f");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << QString() << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+}
+
+void tst_QScriptEngine::translateScriptUnicode()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/translatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression, fileName).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QTest::newRow("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1'')")
+ << QString::fromLatin1("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1')") << QString::fromUtf8("\xc6\xa7\xc6\xb0\xc6\x88\xc8\xbc\xc8\x9d\xc8\xbf\xc8\x99");
+ QTest::newRow("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')")
+ << QString::fromLatin1("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')") << QString::fromUtf8("\xc7\xa0\xc8\xa1\xc8\x8b\xc8\x85\xc8\x95");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)") << QString::fromUtf8("\x31\x30\x20\xc6\x92\xc6\xa1\xc7\x92\x28\xc8\x99\x29");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')") << QString::fromUtf8("\xc6\x91\xc6\xb0\xc7\xb9");
+ QTest::newRow("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')")
+ << QString::fromLatin1("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')") << QString::fromUtf8("\xc7\x8d\xc6\x80\xc6\xa8\xc6\x90\xc6\x9e\xc6\xab");
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/idtranslatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
void tst_QScriptEngine::functionScopes()
{
QScriptEngine eng;
@@ -4932,8 +5218,11 @@ void tst_QScriptEngine::evaluateProgram()
QVERIFY(differentProgram != program);
QVERIFY(!eng.evaluate(differentProgram).equals(expected));
}
+}
- // Program that accesses variable in the scope
+void tst_QScriptEngine::evaluateProgram_customScope()
+{
+ QScriptEngine eng;
{
QScriptProgram program("a");
QVERIFY(!program.isNull());
@@ -4970,8 +5259,11 @@ void tst_QScriptEngine::evaluateProgram()
ctx->popScope();
}
+}
- // Program that creates closure
+void tst_QScriptEngine::evaluateProgram_closure()
+{
+ QScriptEngine eng;
{
QScriptProgram program("(function() { var count = 0; return function() { return count++; }; })");
QVERIFY(!program.isNull());
@@ -4991,7 +5283,11 @@ void tst_QScriptEngine::evaluateProgram()
QVERIFY(ret.isNumber());
}
}
+}
+void tst_QScriptEngine::evaluateProgram_executeLater()
+{
+ QScriptEngine eng;
// Program created in a function call, then executed later
{
QScriptValue fun = eng.newFunction(createProgram);
@@ -5012,8 +5308,11 @@ void tst_QScriptEngine::evaluateProgram()
QCOMPARE(ret.toInt32(), 123);
}
}
+}
- // Same program run in different engines
+void tst_QScriptEngine::evaluateProgram_multipleEngines()
+{
+ QScriptEngine eng;
{
QString code("1 + 2");
QScriptProgram program(code);
@@ -5027,8 +5326,11 @@ void tst_QScriptEngine::evaluateProgram()
}
}
}
+}
- // No program
+void tst_QScriptEngine::evaluateProgram_empty()
+{
+ QScriptEngine eng;
{
QScriptProgram program;
QVERIFY(program.isNull());
@@ -5101,6 +5403,10 @@ void tst_QScriptEngine::qRegExpInport_data()
QTest::newRow("aaa") << QRegExp("a{2,5}") << "aAaAaaaaaAa";
QTest::newRow("aaa minimal") << minimal(QRegExp("a{2,5}")) << "aAaAaaaaaAa";
QTest::newRow("minimal") << minimal(QRegExp(".*\\} [*8]")) << "}?} ?} *";
+ QTest::newRow(".? minimal") << minimal(QRegExp(".?")) << ".?";
+ QTest::newRow(".+ minimal") << minimal(QRegExp(".+")) << ".+";
+ QTest::newRow("[.?] minimal") << minimal(QRegExp("[.?]")) << ".?";
+ QTest::newRow("[.+] minimal") << minimal(QRegExp("[.+]")) << ".+";
}
void tst_QScriptEngine::qRegExpInport()
@@ -5445,5 +5751,31 @@ void tst_QScriptEngine::newGrowingStaticScopeObject()
eng.popContext();
}
+QT_BEGIN_NAMESPACE
+Q_SCRIPT_DECLARE_QMETAOBJECT(QStandardItemModel, QObject*)
+QT_END_NAMESPACE
+
+void tst_QScriptEngine::scriptValueFromQMetaObject()
+{
+ QScriptEngine eng;
+ {
+ QScriptValue meta = eng.scriptValueFromQMetaObject<QScriptEngine>();
+ QVERIFY(meta.isQMetaObject());
+ QCOMPARE(meta.toQMetaObject(), &QScriptEngine::staticMetaObject);
+ // Because of missing Q_SCRIPT_DECLARE_QMETAOBJECT() for QScriptEngine.
+ QVERIFY(!meta.construct().isValid());
+ }
+ {
+ QScriptValue meta = eng.scriptValueFromQMetaObject<QStandardItemModel>();
+ QVERIFY(meta.isQMetaObject());
+ QCOMPARE(meta.toQMetaObject(), &QStandardItemModel::staticMetaObject);
+ QScriptValue obj = meta.construct(QScriptValueList() << eng.newQObject(&eng));
+ QVERIFY(obj.isQObject());
+ QStandardItemModel *model = qobject_cast<QStandardItemModel*>(obj.toQObject());
+ QVERIFY(model != 0);
+ QCOMPARE(model->parent(), (QObject*)&eng);
+ }
+}
+
QTEST_MAIN(tst_QScriptEngine)
#include "tst_qscriptengine.moc"
diff --git a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
index c5e4954679..6b49858555 100644
--- a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
+++ b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
@@ -50,24 +50,11 @@
#include <qmenu.h>
#include <qplaintextedit.h>
#include <qtoolbar.h>
+#include "../../shared/util.h"
//TESTED_CLASS=
//TESTED_FILES=
-// Will try to wait for the condition while allowing event processing
-#define QTRY_COMPARE(__expr, __expected) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if ((__expr) != (__expected)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QCOMPARE(__expr, __expected); \
- } while(0)
-
// Can't use QTest::qWait() because it causes event loop to hang on some platforms
static void qsWait(int ms)
{
@@ -89,6 +76,9 @@ public:
tst_QScriptEngineDebugger();
virtual ~tst_QScriptEngineDebugger();
+protected slots:
+ void recordDebuggerStateAndContinue();
+
private slots:
void attachAndDetach();
void action();
@@ -97,6 +87,11 @@ private slots:
void debuggerSignals();
void consoleCommands();
void multithreadedDebugging();
+ void autoShowStandardWindow();
+ void standardWindowOwnership();
+
+private:
+ QScriptEngineDebugger::DebuggerState m_recordedDebuggerState;
};
tst_QScriptEngineDebugger::tst_QScriptEngineDebugger()
@@ -107,6 +102,14 @@ tst_QScriptEngineDebugger::~tst_QScriptEngineDebugger()
{
}
+void tst_QScriptEngineDebugger::recordDebuggerStateAndContinue()
+{
+ QScriptEngineDebugger *debugger = qobject_cast<QScriptEngineDebugger*>(sender());
+ Q_ASSERT(debugger != 0);
+ m_recordedDebuggerState = debugger->state();
+ debugger->action(QScriptEngineDebugger::ContinueAction)->trigger();
+}
+
void tst_QScriptEngineDebugger::attachAndDetach()
{
#if defined(Q_OS_WINCE) && _WIN32_WCE < 0x600
@@ -784,5 +787,68 @@ void tst_QScriptEngineDebugger::multithreadedDebugging()
QTRY_COMPARE(threadFinishedSpy.count(), 1);
}
+void tst_QScriptEngineDebugger::autoShowStandardWindow()
+{
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.setAutoShowStandardWindow(false);
+ QCOMPARE(debugger.autoShowStandardWindow(), false);
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.standardWindow()->hide();
+
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+ }
+
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ debugger.setAutoShowStandardWindow(false);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ QSignalSpy evaluationResumedSpy(&debugger, SIGNAL(evaluationResumed()));
+ engine.evaluate("debugger");
+ QTRY_COMPARE(evaluationResumedSpy.count(), 1);
+ QVERIFY(!debugger.standardWindow()->isVisible());
+ }
+}
+
+void tst_QScriptEngineDebugger::standardWindowOwnership()
+{
+ QScriptEngine engine;
+ QPointer<QMainWindow> win;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ }
+ QVERIFY(win == 0);
+
+ // Reparent the window.
+ QWidget widget;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ win->setParent(&widget);
+ }
+ QVERIFY(win != 0);
+}
+
QTEST_MAIN(tst_QScriptEngineDebugger)
#include "tst_qscriptenginedebugger.moc"
diff --git a/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro b/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro
new file mode 100644
index 0000000000..d4671c8731
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+CONFIG -= app_bundle
+SUBDIRS = simpleplugin staticplugin test
diff --git a/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp
new file mode 100644
index 0000000000..1679512646
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtScript/qscriptextensionplugin.h>
+#include <QtScript/qscriptengine.h>
+#include <qdebug.h>
+
+class SimplePlugin : public QScriptExtensionPlugin
+{
+public:
+ SimplePlugin(QObject *parent = 0);
+ ~SimplePlugin();
+
+ virtual QStringList keys() const;
+ virtual void initialize(const QString &key, QScriptEngine *engine);
+};
+
+SimplePlugin::SimplePlugin(QObject *parent)
+ : QScriptExtensionPlugin(parent)
+{
+}
+
+SimplePlugin::~SimplePlugin()
+{
+}
+
+QStringList SimplePlugin::keys() const
+{
+ return QStringList() << "simple"
+ << "simple.foo"
+ << "simple.foo.bar";
+}
+
+void SimplePlugin::initialize(const QString &key, QScriptEngine *engine)
+{
+ engine->globalObject().setProperty("pluginKey", key);
+ QScriptValue package = setupPackage(key, engine);
+ engine->globalObject().setProperty("package", package);
+}
+
+Q_EXPORT_PLUGIN2(simpleplugin, SimplePlugin)
diff --git a/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro
new file mode 100644
index 0000000000..e184ca4ee5
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro
@@ -0,0 +1,10 @@
+TEMPLATE = lib
+CONFIG += plugin
+SOURCES = simpleplugin.cpp
+QT = core script
+TARGET = simpleplugin
+DESTDIR = ../plugins/script
+
+symbian {
+ TARGET.EPOCALLOWDLLDATA=1
+}
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/__init__.js b/tests/auto/qscriptextensionplugin/staticplugin/__init__.js
new file mode 100644
index 0000000000..4e462aea98
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/__init__.js
@@ -0,0 +1,6 @@
+spy = {
+ extension: __extension__,
+ setupPackage: __setupPackage__,
+ postInit: __postInit__
+};
+__postInit__ = function() { postInitWasCalled = true; };
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp
new file mode 100644
index 0000000000..b13f723c1f
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtScript/qscriptextensionplugin.h>
+#include <QtScript/qscriptengine.h>
+#include <qdebug.h>
+
+class StaticPlugin : public QScriptExtensionPlugin
+{
+public:
+ StaticPlugin(QObject *parent = 0);
+ ~StaticPlugin();
+
+ virtual QStringList keys() const;
+ virtual void initialize(const QString &key, QScriptEngine *engine);
+};
+
+StaticPlugin::StaticPlugin(QObject *parent)
+ : QScriptExtensionPlugin(parent)
+{
+}
+
+StaticPlugin::~StaticPlugin()
+{
+}
+
+QStringList StaticPlugin::keys() const
+{
+ return QStringList() << "static";
+}
+
+void StaticPlugin::initialize(const QString &key, QScriptEngine *engine)
+{
+ engine->globalObject().setProperty("pluginKey", key);
+}
+
+Q_EXPORT_PLUGIN2(staticplugin, StaticPlugin)
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro
new file mode 100644
index 0000000000..a003338583
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro
@@ -0,0 +1,7 @@
+TEMPLATE = lib
+CONFIG += static plugin
+SOURCES = staticplugin.cpp
+RESOURCES = staticplugin.qrc
+QT = core script
+TARGET = staticplugin
+DESTDIR = ../plugins/script
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc
new file mode 100644
index 0000000000..293bf0e6cb
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/qtscriptextension/static/">
+<file>__init__.js</file>
+</qresource>
+</RCC>
+
diff --git a/tests/auto/qscriptextensionplugin/test/test.pro b/tests/auto/qscriptextensionplugin/test/test.pro
new file mode 100644
index 0000000000..549bac266c
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/test/test.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+
+QT = core script
+SOURCES = ../tst_qscriptextensionplugin.cpp
+CONFIG -= app_bundle
+LIBS += -L../plugins/script -lstaticplugin
+
+TARGET = tst_qscriptextensionplugin
+CONFIG(debug_and_release) {
+ CONFIG(debug, debug|release) {
+ DESTDIR = ../debug
+ } else {
+ DESTDIR = ../release
+ }
+} else {
+ DESTDIR = ..
+}
+
diff --git a/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp b/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp
new file mode 100644
index 0000000000..e8b5e0a10c
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QtScript/qscriptengine.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QScriptExtensionPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QScriptExtensionPlugin();
+ virtual ~tst_QScriptExtensionPlugin();
+
+private slots:
+ void importSimplePlugin();
+ void importStaticPlugin();
+};
+
+tst_QScriptExtensionPlugin::tst_QScriptExtensionPlugin()
+{
+}
+
+tst_QScriptExtensionPlugin::~tst_QScriptExtensionPlugin()
+{
+}
+
+void tst_QScriptExtensionPlugin::importSimplePlugin()
+{
+ QScriptEngine eng;
+ QCoreApplication::addLibraryPath("plugins");
+
+ QVERIFY(eng.importedExtensions().isEmpty());
+
+ QStringList available = eng.availableExtensions();
+ QVERIFY(available.contains("simple"));
+ QVERIFY(available.contains("simple.foo"));
+ QVERIFY(available.contains("simple.foo.bar"));
+
+ QScriptValue extensionObject;
+ {
+ QVERIFY(eng.importExtension("simple").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("simple"));
+ QVERIFY(eng.availableExtensions().contains("simple"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ extensionObject = eng.globalObject().property("simple");
+ QVERIFY(extensionObject.isObject());
+ QVERIFY(extensionObject.equals(eng.globalObject().property("package")));
+ }
+
+ {
+ QVERIFY(eng.importExtension("simple.foo").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 2);
+ QCOMPARE(eng.importedExtensions().at(1), QString::fromLatin1("simple.foo"));
+ QVERIFY(eng.availableExtensions().contains("simple.foo"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
+ QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
+ QVERIFY(extensionObject.property("foo").isObject());
+ QVERIFY(extensionObject.property("foo").equals(eng.globalObject().property("package")));
+ }
+
+ {
+ QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QCOMPARE(eng.importedExtensions().at(2), QString::fromLatin1("simple.foo.bar"));
+ QVERIFY(eng.availableExtensions().contains("simple.foo.bar"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo.bar"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
+ QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
+ QVERIFY(extensionObject.property("foo").property("bar").isObject());
+ QVERIFY(extensionObject.property("foo").property("bar").equals(eng.globalObject().property("package")));
+ }
+
+ // Extensions can't be imported multiple times.
+ eng.globalObject().setProperty("pluginKey", QScriptValue());
+ QVERIFY(eng.importExtension("simple").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+
+ QVERIFY(eng.importExtension("simple.foo").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+
+ QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+}
+
+void tst_QScriptExtensionPlugin::importStaticPlugin()
+{
+ Q_INIT_RESOURCE(staticplugin);
+ QScriptEngine eng;
+ QVERIFY(eng.availableExtensions().contains("static"));
+ QVERIFY(eng.importExtension("static").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("static"));
+ QVERIFY(eng.availableExtensions().contains("static"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("static"));
+
+ // Verify that :/qtscriptextension/static/__init__.js was evaluated.
+ QVERIFY(eng.evaluate("spy").isObject());
+ QVERIFY(eng.evaluate("spy.extension").equals("static"));
+ QVERIFY(eng.evaluate("spy.setupPackage").isFunction());
+ QVERIFY(eng.evaluate("spy.postInit").isUndefined());
+
+ QVERIFY(eng.evaluate("postInitWasCalled").isBool());
+ QVERIFY(eng.evaluate("postInitWasCalled").toBool());
+
+ // Extensions can't be imported multiple times.
+ eng.globalObject().setProperty("pluginKey", QScriptValue());
+ QVERIFY(eng.importExtension("static").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+}
+
+Q_IMPORT_PLUGIN(staticplugin)
+
+QTEST_MAIN(tst_QScriptExtensionPlugin)
+#include "tst_qscriptextensionplugin.moc"
diff --git a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
index 0d57f0c033..29934d55e8 100644
--- a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
+++ b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
@@ -329,6 +329,18 @@ public:
{ m_qtFunctionInvoked = 58; m_actuals << int(arg); return arg; }
Q_INVOKABLE MyQObject::Ability myInvokableWithQualifiedFlagsArg(MyQObject::Ability arg)
{ m_qtFunctionInvoked = 59; m_actuals << int(arg); return arg; }
+ Q_INVOKABLE QWidget *myInvokableWithQWidgetStarArg(QWidget *arg)
+ { m_qtFunctionInvoked = 63; m_actuals << qVariantFromValue((QWidget*)arg); return arg; }
+ Q_INVOKABLE short myInvokableWithShortArg(short arg)
+ { m_qtFunctionInvoked = 64; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE unsigned short myInvokableWithUShortArg(unsigned short arg)
+ { m_qtFunctionInvoked = 65; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE char myInvokableWithCharArg(char arg)
+ { m_qtFunctionInvoked = 66; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE unsigned char myInvokableWithUCharArg(unsigned char arg)
+ { m_qtFunctionInvoked = 67; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE qulonglong myInvokableWithULonglongArg(qulonglong arg)
+ { m_qtFunctionInvoked = 68; m_actuals << qVariantFromValue(arg); return arg; }
Q_INVOKABLE QObjectList findObjects() const
{ return findChildren<QObject *>(); }
@@ -394,6 +406,8 @@ public Q_SLOTS:
{ m_qtFunctionInvoked = 32; m_actuals << arg; }
void myOverloadedSlot(const QDate &arg)
{ m_qtFunctionInvoked = 33; m_actuals << arg; }
+ void myOverloadedSlot(const QTime &arg)
+ { m_qtFunctionInvoked = 69; m_actuals << arg; }
void myOverloadedSlot(const QRegExp &arg)
{ m_qtFunctionInvoked = 34; m_actuals << arg; }
void myOverloadedSlot(const QVariant &arg)
@@ -514,11 +528,26 @@ protected slots:
private slots:
void registeredTypes();
void getSetStaticProperty();
+ void getSetStaticProperty_propertyFlags();
+ void getSetStaticProperty_changeInCpp();
+ void getSetStaticProperty_changeInJS();
+ void getSetStaticProperty_compatibleVariantTypes();
+ void getSetStaticProperty_conversion();
+ void getSetStaticProperty_delete();
+ void getSetStaticProperty_nonScriptable();
+ void getSetStaticProperty_writeOnly();
+ void getSetStaticProperty_readOnly();
+ void getSetStaticProperty_enum();
+ void getSetStaticProperty_qflags();
+ void getSetStaticProperty_pointerDeref();
+ void getSetStaticProperty_customGetterSetter();
+ void getSetStaticProperty_methodPersistence();
void getSetDynamicProperty();
void getSetChildren();
void callQtInvokable();
void connectAndDisconnect();
void connectAndDisconnectWithBadArgs();
+ void connectAndDisconnect_senderDeleted();
void cppConnectAndDisconnect();
void classEnums();
void classConstructor();
@@ -640,7 +669,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").isString(), true);
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").toString(),
QLatin1String("zag"));
+}
+void tst_QScriptExtQObject::getSetStaticProperty_propertyFlags()
+{
// default flags for "normal" properties
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -662,7 +694,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QVERIFY(!(mobj.propertyFlags("mySlot()") & QScriptValue::SkipInEnumeration));
QVERIFY(mobj.propertyFlags("mySlot()") & QScriptValue::QObjectMember);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInCpp()
+{
// property change in C++ should be reflected in script
m_myObject->setIntProperty(456);
QCOMPARE(m_engine->evaluate("myObject.intProperty")
@@ -686,7 +721,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_myObject->setStringProperty(QLatin1String("zab"));
QCOMPARE(m_engine->evaluate("myObject.stringProperty")
.equals(QScriptValue(m_engine, QLatin1String("zab"))), true);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInJS()
+{
// property change in script should be reflected in C++
QCOMPARE(m_engine->evaluate("myObject.intProperty = 123")
.strictlyEquals(QScriptValue(m_engine, 123)), true);
@@ -769,7 +807,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
<< QLatin1String("two")
<< QLatin1String("true"));
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_compatibleVariantTypes()
+{
// test setting properties where we can't convert the type natively but where the
// types happen to be compatible variant types already
{
@@ -788,7 +829,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("propWithCustomType", m_engine->newVariant(qVariantFromValue(t)));
QVERIFY(m_myObject->propWithCustomType().string == t.string);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_conversion()
+{
// test that we do value conversion if necessary when setting properties
{
QScriptValue br = m_engine->evaluate("myObject.brushProperty");
@@ -808,28 +852,41 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->globalObject().setProperty("myColor", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_delete()
+{
// try to delete
QCOMPARE(m_engine->evaluate("delete myObject.intProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.intProperty").toNumber(), 123.0);
+ m_myObject->setVariantProperty(42);
QCOMPARE(m_engine->evaluate("delete myObject.variantProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.variantProperty").toNumber(), 42.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_nonScriptable()
+{
// non-scriptable property
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty = 123;"
"myObject.hiddenProperty").toInt32(), 123);
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_writeOnly()
+{
// write-only property
QCOMPARE(m_myObject->writeOnlyProperty(), 789);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty = 123;"
"myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_myObject->writeOnlyProperty(), 123);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_readOnly()
+{
// read-only property
QCOMPARE(m_myObject->readOnlyProperty(), 987);
QCOMPARE(m_engine->evaluate("myObject.readOnlyProperty").toInt32(), 987);
@@ -841,7 +898,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(mobj.propertyFlags("readOnlyProperty") & QScriptValue::ReadOnly,
QScriptValue::ReadOnly);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_enum()
+{
// enum property
QCOMPARE(m_myObject->enumProperty(), MyQObject::BarPolicy);
{
@@ -866,7 +926,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_myObject->enumProperty(), MyQObject::BazPolicy);
m_engine->evaluate("myObject.enumProperty = 'nada'");
QCOMPARE(m_myObject->enumProperty(), (MyQObject::Policy)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_qflags()
+{
// flags property
QCOMPARE(m_myObject->flagsProperty(), MyQObject::FooAbility);
{
@@ -885,7 +948,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->evaluate("myObject.flagsProperty = 'ScoobyDoo'");
// ### ouch! Shouldn't QMetaProperty::write() rather not change the value...?
QCOMPARE(m_myObject->flagsProperty(), (MyQObject::Ability)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_pointerDeref()
+{
// auto-dereferencing of pointers
{
QBrush b = QColor(0xCA, 0xFE, 0xBA, 0xBE);
@@ -905,7 +971,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
}
m_engine->globalObject().setProperty("brushPointer", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_customGetterSetter()
+{
// install custom property getter+setter
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -915,7 +984,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("intProperty", 321);
QCOMPARE(mobj.property("intProperty").toInt32(), 321);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_methodPersistence()
+{
// method properties are persistent
{
QScriptValue slot = m_engine->evaluate("myObject.mySlot");
@@ -1361,6 +1433,17 @@ void tst_QScriptExtQObject::callQtInvokable()
m_myObject->resetQtFunctionInvoked();
{
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithQWidgetStarArg(null)");
+ QVERIFY(ret.isNull());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 63);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::QWidgetStar));
+ QCOMPARE(qvariant_cast<QWidget*>(v), (QObject *)0);
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
// no implicit conversion from integer to QObject*
QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithQObjectStarArg(123)");
QCOMPARE(ret.isError(), true);
@@ -1368,6 +1451,61 @@ void tst_QScriptExtQObject::callQtInvokable()
m_myObject->resetQtFunctionInvoked();
{
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithShortArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 64);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::Short));
+ QCOMPARE(qvariant_cast<short>(v), short(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithUShortArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 65);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::UShort));
+ QCOMPARE(qvariant_cast<ushort>(v), ushort(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithCharArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 66);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::Char));
+ QCOMPARE(qvariant_cast<char>(v), char(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithUCharArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 67);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::UChar));
+ QCOMPARE(qvariant_cast<uchar>(v), uchar(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithULonglongArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 68);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::ULongLong));
+ QCOMPARE(qvariant_cast<qulonglong>(v), qulonglong(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
QScriptValue fun = m_engine->evaluate("myObject.myInvokableWithQBrushArg");
QVERIFY(fun.isFunction());
QColor color(10, 20, 30, 40);
@@ -1916,6 +2054,25 @@ void tst_QScriptExtQObject::connectAndDisconnectWithBadArgs()
}
}
+void tst_QScriptExtQObject::connectAndDisconnect_senderDeleted()
+{
+ QScriptEngine eng;
+ QObject *obj = new QObject;
+ eng.globalObject().setProperty("obj", eng.newQObject(obj));
+ eng.evaluate("signal = obj.destroyed");
+ delete obj;
+ {
+ QScriptValue ret = eng.evaluate("signal.connect(function(){})");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Function.prototype.connect: cannot connect to deleted QObject"));
+ }
+ {
+ QScriptValue ret = eng.evaluate("signal.disconnect(function(){})");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Function.prototype.discconnect: cannot disconnect from deleted QObject"));
+ }
+}
+
void tst_QScriptExtQObject::cppConnectAndDisconnect()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptvalue/qscriptvalue.pro b/tests/auto/qscriptvalue/qscriptvalue.pro
index c3e9912f69..0474c3219a 100644
--- a/tests/auto/qscriptvalue/qscriptvalue.pro
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro
@@ -3,14 +3,6 @@ QT = core gui script
SOURCES += tst_qscriptvalue.cpp
HEADERS += tst_qscriptvalue.h
-# Generated by testgen
-SOURCES += \
- tst_qscriptvalue_generated_init.cpp \
- tst_qscriptvalue_generated_cast.cpp \
- tst_qscriptvalue_generated_comparison.cpp \
- tst_qscriptvalue_generated_isXXX.cpp \
- tst_qscriptvalue_generated_toXXX.cpp
-
win32-msvc* {
# With -O2, MSVC takes up to 24 minutes to compile this test!
QMAKE_CXXFLAGS_RELEASE -= -O1 -O2
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
index 18480cceaa..de753d20b7 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
@@ -56,64 +56,11 @@ tst_QScriptValue::tst_QScriptValue()
tst_QScriptValue::~tst_QScriptValue()
{
- delete engine;
+ if (engine)
+ delete engine;
}
-void tst_QScriptValue::dataHelper(InitDataFunction init, DefineDataFunction define)
-{
- QTest::addColumn<QString>("__expression__");
- (this->*init)();
- QHash<QString,QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- m_currentExpression = it.key();
- (this->*define)(it.key().toLatin1());
- }
- m_currentExpression = QString();
-}
-
-QTestData &tst_QScriptValue::newRow(const char *tag)
-{
- return QTest::newRow(tag) << m_currentExpression;
-}
-
-void tst_QScriptValue::testHelper(TestFunction fun)
-{
- QFETCH(QString, __expression__);
- QScriptValue value = m_values.value(__expression__);
- (this->*fun)(__expression__.toLatin1(), value);
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_initData()
-{
- QTest::addColumn<int>("dummy");
- initScriptValues();
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_makeData(const char *expr)
-{
- newRow(expr) << 0;
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
-{
- QScriptValue copy(value);
- QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
- QCOMPARE(copy.engine(), value.engine());
-
- QScriptValue assigned = copy;
- QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
- QCOMPARE(assigned.engine(), assigned.engine());
-
- QScriptValue other(!value.toBool());
- assigned = other;
- QVERIFY(!assigned.strictlyEquals(copy));
- QVERIFY(assigned.strictlyEquals(other));
- QCOMPARE(assigned.engine(), other.engine());
-}
-
-DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
-
-void tst_QScriptValue::ctor()
+void tst_QScriptValue::ctor_invalid()
{
QScriptEngine eng;
{
@@ -121,6 +68,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isValid(), false);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_undefinedWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, QScriptValue::UndefinedValue);
QCOMPARE(v.isValid(), true);
@@ -128,6 +80,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isObject(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_nullWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, QScriptValue::NullValue);
QCOMPARE(v.isValid(), true);
@@ -135,6 +92,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isObject(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_boolWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, false);
QCOMPARE(v.isValid(), true);
@@ -144,6 +106,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.toBoolean(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_intWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, int(1));
QCOMPARE(v.isValid(), true);
@@ -152,132 +119,102 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_int()
+{
{
QScriptValue v(int(0x43211234));
QVERIFY(v.isNumber());
QCOMPARE(v.toInt32(), 0x43211234);
}
{
- QScriptValue v(&eng, uint(1));
+ QScriptValue v(int(1));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), &eng);
- }
- {
- QScriptValue v(uint(0x43211234));
- QVERIFY(v.isNumber());
- QCOMPARE(v.toUInt32(), uint(0x43211234));
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_uintWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(&eng, 1.0);
+ QScriptValue v(&eng, uint(1));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_uint()
+{
{
- QScriptValue v(12345678910.5);
+ QScriptValue v(uint(0x43211234));
QVERIFY(v.isNumber());
- QCOMPARE(v.toNumber(), 12345678910.5);
- }
- {
- QScriptValue v(&eng, "ciao");
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isString(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toString(), QLatin1String("ciao"));
- QCOMPARE(v.engine(), &eng);
+ QCOMPARE(v.toUInt32(), uint(0x43211234));
}
{
- QScriptValue v(&eng, QString("ciao"));
+ QScriptValue v(uint(1));
QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isString(), true);
+ QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toString(), QLatin1String("ciao"));
- QCOMPARE(v.engine(), &eng);
- }
- // copy constructor, operator=
- {
- QScriptValue v(&eng, 1.0);
- QScriptValue v2(v);
- QCOMPARE(v2.strictlyEquals(v), true);
- QCOMPARE(v2.engine(), &eng);
-
- QScriptValue v3(v);
- QCOMPARE(v3.strictlyEquals(v), true);
- QCOMPARE(v3.strictlyEquals(v2), true);
- QCOMPARE(v3.engine(), &eng);
-
- QScriptValue v4(&eng, 2.0);
- QCOMPARE(v4.strictlyEquals(v), false);
- v3 = v4;
- QCOMPARE(v3.strictlyEquals(v), false);
- QCOMPARE(v3.strictlyEquals(v4), true);
-
- v2 = QScriptValue();
- QCOMPARE(v2.strictlyEquals(v), false);
QCOMPARE(v.toNumber(), 1.0);
-
- QScriptValue v5(v);
- QCOMPARE(v5.strictlyEquals(v), true);
- v = QScriptValue();
- QCOMPARE(v5.strictlyEquals(v), false);
- QCOMPARE(v5.toNumber(), 1.0);
- }
-
- // constructors that take no engine argument
- {
- QScriptValue v(QScriptValue::UndefinedValue);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isUndefined(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
- }
- {
- QScriptValue v(QScriptValue::NullValue);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isNull(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
- }
- {
- QScriptValue v(false);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isBoolean(), true);
- QCOMPARE(v.isBool(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toBoolean(), false);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_floatWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(int(1));
+ QScriptValue v(&eng, 1.0);
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
+ QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_float()
+{
{
- QScriptValue v(uint(1));
+ QScriptValue v(12345678910.5);
+ QVERIFY(v.isNumber());
+ QCOMPARE(v.toNumber(), 12345678910.5);
+ }
+ {
+ QScriptValue v(1.0);
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_stringWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(1.0);
+ QScriptValue v(&eng, "ciao");
QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isNumber(), true);
+ QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
+ QCOMPARE(v.toString(), QLatin1String("ciao"));
+ QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_string()
+{
{
- QScriptValue v("ciao");
+ QScriptValue v(QString("ciao"));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
@@ -285,26 +222,31 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
{
- QScriptValue v(QString("ciao"));
+ QScriptValue v("ciao");
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toString(), QLatin1String("ciao"));
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_copyAndAssignWithEngine()
+{
+ QScriptEngine eng;
// copy constructor, operator=
{
- QScriptValue v(1.0);
+ QScriptValue v(&eng, 1.0);
QScriptValue v2(v);
QCOMPARE(v2.strictlyEquals(v), true);
- QCOMPARE(v2.engine(), (QScriptEngine *)0);
+ QCOMPARE(v2.engine(), &eng);
QScriptValue v3(v);
QCOMPARE(v3.strictlyEquals(v), true);
QCOMPARE(v3.strictlyEquals(v2), true);
- QCOMPARE(v3.engine(), (QScriptEngine *)0);
+ QCOMPARE(v3.engine(), &eng);
- QScriptValue v4(2.0);
+ QScriptValue v4(&eng, 2.0);
QCOMPARE(v4.strictlyEquals(v), false);
v3 = v4;
QCOMPARE(v3.strictlyEquals(v), false);
@@ -320,7 +262,68 @@ void tst_QScriptValue::ctor()
QCOMPARE(v5.strictlyEquals(v), false);
QCOMPARE(v5.toNumber(), 1.0);
}
+}
+
+void tst_QScriptValue::ctor_undefined()
+{
+ QScriptValue v(QScriptValue::UndefinedValue);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isUndefined(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+
+void tst_QScriptValue::ctor_null()
+{
+ QScriptValue v(QScriptValue::NullValue);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isNull(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+
+void tst_QScriptValue::ctor_bool()
+{
+ QScriptValue v(false);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isBoolean(), true);
+ QCOMPARE(v.isBool(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.toBoolean(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+void tst_QScriptValue::ctor_copyAndAssign()
+{
+ QScriptValue v(1.0);
+ QScriptValue v2(v);
+ QCOMPARE(v2.strictlyEquals(v), true);
+ QCOMPARE(v2.engine(), (QScriptEngine *)0);
+
+ QScriptValue v3(v);
+ QCOMPARE(v3.strictlyEquals(v), true);
+ QCOMPARE(v3.strictlyEquals(v2), true);
+ QCOMPARE(v3.engine(), (QScriptEngine *)0);
+
+ QScriptValue v4(2.0);
+ QCOMPARE(v4.strictlyEquals(v), false);
+ v3 = v4;
+ QCOMPARE(v3.strictlyEquals(v), false);
+ QCOMPARE(v3.strictlyEquals(v4), true);
+
+ v2 = QScriptValue();
+ QCOMPARE(v2.strictlyEquals(v), false);
+ QCOMPARE(v.toNumber(), 1.0);
+
+ QScriptValue v5(v);
+ QCOMPARE(v5.strictlyEquals(v), true);
+ v = QScriptValue();
+ QCOMPARE(v5.strictlyEquals(v), false);
+ QCOMPARE(v5.toNumber(), 1.0);
+}
+
+void tst_QScriptValue::ctor_nullEngine()
+{
// 0 engine
QVERIFY(QScriptValue(0, QScriptValue::UndefinedValue).isUndefined());
QVERIFY(QScriptValue(0, QScriptValue::NullValue).isNull());
@@ -337,7 +340,7 @@ static QScriptValue myFunction(QScriptContext *, QScriptEngine *eng)
return eng->undefinedValue();
}
-void tst_QScriptValue::toString_old()
+void tst_QScriptValue::toString()
{
QScriptEngine eng;
@@ -451,7 +454,7 @@ void tst_QScriptValue::toString_old()
QVERIFY(variant.toString().isEmpty());
}
-void tst_QScriptValue::toNumber_old()
+void tst_QScriptValue::toNumber()
{
QScriptEngine eng;
@@ -524,7 +527,7 @@ void tst_QScriptValue::toNumber_old()
}
}
-void tst_QScriptValue::toBoolean_old() // deprecated
+void tst_QScriptValue::toBoolean() // deprecated
{
QScriptEngine eng;
@@ -621,7 +624,7 @@ void tst_QScriptValue::toBoolean_old() // deprecated
}
}
-void tst_QScriptValue::toBool_old()
+void tst_QScriptValue::toBool()
{
QScriptEngine eng;
@@ -718,7 +721,7 @@ void tst_QScriptValue::toBool_old()
}
}
-void tst_QScriptValue::toInteger_old()
+void tst_QScriptValue::toInteger()
{
QScriptEngine eng;
@@ -805,7 +808,7 @@ void tst_QScriptValue::toInteger_old()
QCOMPARE(inv.toInteger(), 0.0);
}
-void tst_QScriptValue::toInt32_old()
+void tst_QScriptValue::toInt32()
{
QScriptEngine eng;
@@ -941,7 +944,7 @@ void tst_QScriptValue::toInt32_old()
QCOMPARE(qscriptvalue_cast<qint32>(inv), 0);
}
-void tst_QScriptValue::toUInt32_old()
+void tst_QScriptValue::toUInt32()
{
QScriptEngine eng;
@@ -1073,7 +1076,7 @@ void tst_QScriptValue::toUInt32_old()
QCOMPARE(qscriptvalue_cast<quint32>(inv), quint32(0));
}
-void tst_QScriptValue::toUInt16_old()
+void tst_QScriptValue::toUInt16()
{
QScriptEngine eng;
@@ -1234,7 +1237,7 @@ void tst_QScriptValue::toUInt16_old()
Q_DECLARE_METATYPE(QVariant)
#endif
-void tst_QScriptValue::toVariant_old()
+void tst_QScriptValue::toVariant()
{
QScriptEngine eng;
@@ -1341,7 +1344,7 @@ void tst_QScriptValue::toVariant_old()
// unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...)
Q_DECLARE_METATYPE(QPushButton*)
-void tst_QScriptValue::toQObject_old()
+void tst_QScriptValue::toQObject()
{
QScriptEngine eng;
@@ -1548,7 +1551,7 @@ void tst_QScriptValue::toObject()
}
}
-void tst_QScriptValue::toDateTime_old()
+void tst_QScriptValue::toDateTime()
{
QScriptEngine eng;
QDateTime dt = eng.evaluate("new Date(0)").toDateTime();
@@ -1566,7 +1569,7 @@ void tst_QScriptValue::toDateTime_old()
QVERIFY(!eng.undefinedValue().toDateTime().isValid());
}
-void tst_QScriptValue::toRegExp_old()
+void tst_QScriptValue::toRegExp()
{
QScriptEngine eng;
{
@@ -1596,7 +1599,16 @@ void tst_QScriptValue::toRegExp_old()
QVERIFY(eng.undefinedValue().toRegExp().isEmpty());
}
-void tst_QScriptValue::instanceOf_old()
+void tst_QScriptValue::instanceOf_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue obj = eng.newObject();
+ QScriptEngine otherEngine;
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::instanceof: cannot perform operation on a value created in a different engine");
+ QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
+}
+
+void tst_QScriptValue::instanceOf()
{
QScriptEngine eng;
QScriptValue obj = eng.newObject();
@@ -1626,40 +1638,60 @@ void tst_QScriptValue::instanceOf_old()
QCOMPARE(arr.instanceOf(eng.evaluate("QObject")), false);
QCOMPARE(QScriptValue().instanceOf(arr), false);
+}
- QScriptEngine otherEngine;
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::instanceof: cannot perform operation on a value created in a different engine");
- QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
+void tst_QScriptValue::isArray_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("array");
+
+ QTest::newRow("[]") << engine->evaluate("[]") << true;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
}
-void tst_QScriptValue::isArray_old()
+void tst_QScriptValue::isArray()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("[]").isArray());
- QVERIFY(!eng.evaluate("{}").isArray());
- QVERIFY(!eng.globalObject().isArray());
- QVERIFY(!QScriptValue().isArray());
- QVERIFY(!QScriptValue(123).isArray());
- QVERIFY(!QScriptValue(false).isArray());
- QVERIFY(!eng.nullValue().isArray());
- QVERIFY(!eng.undefinedValue().isArray());
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, array);
+
+ QCOMPARE(value.isArray(), array);
}
-void tst_QScriptValue::isDate_old()
+void tst_QScriptValue::isDate_data()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("new Date()").isDate());
- QVERIFY(!eng.evaluate("[]").isDate());
- QVERIFY(!eng.evaluate("{}").isDate());
- QVERIFY(!eng.globalObject().isDate());
- QVERIFY(!QScriptValue().isDate());
- QVERIFY(!QScriptValue(123).isDate());
- QVERIFY(!QScriptValue(false).isDate());
- QVERIFY(!eng.nullValue().isDate());
- QVERIFY(!eng.undefinedValue().isDate());
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("date");
+
+ QTest::newRow("date") << engine->evaluate("new Date()") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+}
+
+void tst_QScriptValue::isDate()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, date);
+
+ QCOMPARE(value.isDate(), date);
}
-void tst_QScriptValue::isError_old()
+void tst_QScriptValue::isError_propertiesOfGlobalObject()
{
QStringList errors;
errors << "Error"
@@ -1675,27 +1707,60 @@ void tst_QScriptValue::isError_old()
QVERIFY(ctor.isFunction());
QVERIFY(ctor.property("prototype").isError());
}
- QVERIFY(!eng.globalObject().isError());
- QVERIFY(!QScriptValue().isError());
- QVERIFY(!QScriptValue(123).isError());
- QVERIFY(!QScriptValue(false).isError());
- QVERIFY(!eng.nullValue().isError());
- QVERIFY(!eng.undefinedValue().isError());
- QVERIFY(!eng.evaluate("new Object()").isError());
}
-void tst_QScriptValue::isRegExp_old()
+void tst_QScriptValue::isError_data()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("/foo/").isRegExp());
- QVERIFY(!eng.evaluate("[]").isRegExp());
- QVERIFY(!eng.evaluate("{}").isRegExp());
- QVERIFY(!eng.globalObject().isRegExp());
- QVERIFY(!QScriptValue().isRegExp());
- QVERIFY(!QScriptValue(123).isRegExp());
- QVERIFY(!QScriptValue(false).isRegExp());
- QVERIFY(!eng.nullValue().isRegExp());
- QVERIFY(!eng.undefinedValue().isRegExp());
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("error");
+
+ QTest::newRow("syntax error") << engine->evaluate("%fsdg's") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+ QTest::newRow("newObject") << engine->newObject() << false;
+ QTest::newRow("new Object") << engine->evaluate("new Object()") << false;
+}
+
+void tst_QScriptValue::isError()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, error);
+
+ QCOMPARE(value.isError(), error);
+}
+
+void tst_QScriptValue::isRegExp_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("regexp");
+
+ QTest::newRow("/foo/") << engine->evaluate("/foo/") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+}
+
+void tst_QScriptValue::isRegExp()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, regexp);
+
+ QCOMPARE(value.isRegExp(), regexp);
}
static QScriptValue getter(QScriptContext *ctx, QScriptEngine *)
@@ -1731,48 +1796,9 @@ static QScriptValue getSet__proto__(QScriptContext *ctx, QScriptEngine *)
return ctx->callee().property("value");
}
-void tst_QScriptValue::getSetProperty()
+void tst_QScriptValue::getSetProperty_HooliganTask162051()
{
QScriptEngine eng;
-
- QScriptValue object = eng.newObject();
-
- QScriptValue str = QScriptValue(&eng, "bar");
- object.setProperty("foo", str);
- QCOMPARE(object.property("foo").toString(), str.toString());
-
- QScriptValue num = QScriptValue(&eng, 123.0);
- object.setProperty("baz", num);
- QCOMPARE(object.property("baz").toNumber(), num.toNumber());
-
- QScriptValue strstr = QScriptValue("bar");
- QCOMPARE(strstr.engine(), (QScriptEngine *)0);
- object.setProperty("foo", strstr);
- QCOMPARE(object.property("foo").toString(), strstr.toString());
- QCOMPARE(strstr.engine(), &eng); // the value has been bound to the engine
-
- QScriptValue numnum = QScriptValue(123.0);
- object.setProperty("baz", numnum);
- QCOMPARE(object.property("baz").toNumber(), numnum.toNumber());
-
- QScriptValue inv;
- inv.setProperty("foo", num);
- QCOMPARE(inv.property("foo").isValid(), false);
-
- QScriptValue array = eng.newArray();
- QVERIFY(array.isArray());
- array.setProperty(0, num);
- QCOMPARE(array.property(0).toNumber(), num.toNumber());
- QCOMPARE(array.property("0").toNumber(), num.toNumber());
- QCOMPARE(array.property("length").toUInt32(), quint32(1));
- array.setProperty(1, str);
- QCOMPARE(array.property(1).toString(), str.toString());
- QCOMPARE(array.property("1").toString(), str.toString());
- QCOMPARE(array.property("length").toUInt32(), quint32(2));
- array.setProperty("length", QScriptValue(&eng, 1));
- QCOMPARE(array.property("length").toUInt32(), quint32(1));
- QCOMPARE(array.property(1).isValid(), false);
-
// task 162051 -- detecting whether the property is an array index or not
QVERIFY(eng.evaluate("a = []; a['00'] = 123; a['00']").strictlyEquals(QScriptValue(&eng, 123)));
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 0)));
@@ -1785,24 +1811,62 @@ void tst_QScriptValue::getSetProperty()
QVERIFY(eng.evaluate("a[0]").isUndefined());
QVERIFY(eng.evaluate("a[0] = 789; a[0]").strictlyEquals(QScriptValue(&eng, 789)));
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 1)));
+}
+void tst_QScriptValue::getSetProperty_HooliganTask183072()
+{
+ QScriptEngine eng;
// task 183072 -- 0x800000000 is not an array index
eng.evaluate("a = []; a[0x800000000] = 123");
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 0)));
QVERIFY(eng.evaluate("a[0]").isUndefined());
QVERIFY(eng.evaluate("a[0x800000000]").strictlyEquals(QScriptValue(&eng, 123)));
+}
- QScriptEngine otherEngine;
- QScriptValue otherNum = QScriptValue(&otherEngine, 123);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty(oof) failed: cannot set value created in a different engine");
- object.setProperty("oof", otherNum);
- QCOMPARE(object.property("oof").isValid(), false);
+void tst_QScriptValue::getSetProperty_propertyRemoval()
+{
+ // test property removal (setProperty(QScriptValue()))
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ object.setProperty("bar", str);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("foo", QScriptValue());
+ QCOMPARE(object.property("foo").isValid(), false);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("bar", QScriptValue());
+ QCOMPARE(object.property("bar").isValid(), false);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ object.setProperty("foo", QScriptValue());
+ object.setProperty("foo", QScriptValue());
+
+ eng.globalObject().setProperty("object3", object);
+ QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
+ .strictlyEquals(QScriptValue(&eng, false)), true);
+ object.setProperty("foo", num);
+ QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
+ .strictlyEquals(QScriptValue(&eng, true)), true);
+ eng.globalObject().setProperty("object3", QScriptValue());
+ QCOMPARE(eng.evaluate("this.hasOwnProperty('object3')")
+ .strictlyEquals(QScriptValue(&eng, false)), true);
+}
+
+void tst_QScriptValue::getSetProperty_resolveMode()
+{
// test ResolveMode
- QScriptValue object2 = eng.newObject();
- object.setPrototype(object2);
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue prototype = eng.newObject();
+ object.setPrototype(prototype);
QScriptValue num2 = QScriptValue(&eng, 456.0);
- object2.setProperty("propertyInPrototype", num2);
+ prototype.setProperty("propertyInPrototype", num2);
// default is ResolvePrototype
QCOMPARE(object.property("propertyInPrototype")
.strictlyEquals(num2), true);
@@ -1814,199 +1878,247 @@ void tst_QScriptValue::getSetProperty()
.strictlyEquals(num2), false);
QCOMPARE(object.property("propertyInPrototype", QScriptValue::ResolveFull)
.strictlyEquals(num2), true);
+}
- // test property removal (setProperty(QScriptValue()))
- QScriptValue object3 = eng.newObject();
- object3.setProperty("foo", num);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- object3.setProperty("bar", str);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("foo", QScriptValue());
- QCOMPARE(object3.property("foo").isValid(), false);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("foo", num);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("bar", QScriptValue());
- QCOMPARE(object3.property("bar").isValid(), false);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- object3.setProperty("foo", QScriptValue());
- object3.setProperty("foo", QScriptValue());
-
- eng.globalObject().setProperty("object3", object3);
- QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
- .strictlyEquals(QScriptValue(&eng, false)), true);
- object3.setProperty("foo", num);
- QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
- .strictlyEquals(QScriptValue(&eng, true)), true);
- eng.globalObject().setProperty("object3", QScriptValue());
- QCOMPARE(eng.evaluate("this.hasOwnProperty('object3')")
- .strictlyEquals(QScriptValue(&eng, false)), true);
+void tst_QScriptValue::getSetProperty_twoEngines()
+{
+ QScriptEngine engine;
+ QScriptValue object = engine.newObject();
- // getters and setters
- {
- QScriptValue object4 = eng.newObject();
- for (int x = 0; x < 2; ++x) {
- object4.setProperty("foo", QScriptValue());
- // getter() returns this.x
- object4.setProperty("foo", eng.newFunction(getter),
- QScriptValue::PropertyGetter | QScriptValue::UserRange);
- QCOMPARE(object4.propertyFlags("foo") & ~QScriptValue::UserRange,
- QScriptValue::PropertyGetter );
-
- QEXPECT_FAIL("", "User-range flags are not retained for getter/setter properties", Continue);
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertyGetter | QScriptValue::UserRange);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // setter() sets this.x
- object4.setProperty("foo", eng.newFunction(setter),
- QScriptValue::PropertySetter);
- QCOMPARE(object4.propertyFlags("foo") & ~QScriptValue::UserRange,
- QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
-
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(str), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
-
- // kill the getter
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- QVERIFY(!(object4.propertyFlags("foo") & QScriptValue::PropertyGetter));
- QVERIFY(object4.propertyFlags("foo") & QScriptValue::PropertySetter);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // setter should still work
- object4.setProperty("foo", num);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
-
- // kill the setter too
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
- QVERIFY(!(object4.propertyFlags("foo") & QScriptValue::PropertySetter));
- // now foo is just a regular property
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
- }
+ QScriptEngine otherEngine;
+ QScriptValue otherNum = QScriptValue(&otherEngine, 123);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty(oof) failed: cannot set value created in a different engine");
+ object.setProperty("oof", otherNum);
+ QCOMPARE(object.property("oof").isValid(), false);
+}
- for (int x = 0; x < 2; ++x) {
- object4.setProperty("foo", QScriptValue());
- // setter() sets this.x
- object4.setProperty("foo", eng.newFunction(setter), QScriptValue::PropertySetter);
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(str), true);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // getter() returns this.x
- object4.setProperty("foo", eng.newFunction(getter), QScriptValue::PropertyGetter);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // kill the setter
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: property 'foo' has a getter but no setter");
- object4.setProperty("foo", str);
-
- // getter should still work
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // kill the getter too
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- // now foo is just a regular property
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
- }
- // use a single function as both getter and setter
- object4.setProperty("foo", QScriptValue());
- object4.setProperty("foo", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // killing the getter will preserve the setter, even though they are the same function
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- QVERIFY(object4.propertyFlags("foo") & QScriptValue::PropertySetter);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // getter/setter that throws an error
- {
- QScriptValue object5 = eng.newObject();
- object5.setProperty("foo", eng.newFunction(getterSetterThrowingError),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(!eng.hasUncaughtException());
- QScriptValue ret = object5.property("foo");
- QVERIFY(ret.isError());
- QVERIFY(eng.hasUncaughtException());
- QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
- eng.evaluate("Object"); // clear exception state...
- QVERIFY(!eng.hasUncaughtException());
- object5.setProperty("foo", str);
- QVERIFY(eng.hasUncaughtException());
- QCOMPARE(eng.uncaughtException().toString(), QLatin1String("Error: set foo"));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSetters()
+{
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ QScriptValue object = eng.newObject();
+ for (int x = 0; x < 2; ++x) {
+ object.setProperty("foo", QScriptValue());
+ // getter() returns this.x
+ object.setProperty("foo", eng.newFunction(getter),
+ QScriptValue::PropertyGetter | QScriptValue::UserRange);
+ QCOMPARE(object.propertyFlags("foo") & ~QScriptValue::UserRange,
+ QScriptValue::PropertyGetter );
+
+ QEXPECT_FAIL("", "User-range flags are not retained for getter/setter properties", Continue);
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertyGetter | QScriptValue::UserRange);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // setter() sets this.x
+ object.setProperty("foo", eng.newFunction(setter),
+ QScriptValue::PropertySetter);
+ QCOMPARE(object.propertyFlags("foo") & ~QScriptValue::UserRange,
+ QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
+
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(str), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+
+ // kill the getter
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ QVERIFY(!(object.propertyFlags("foo") & QScriptValue::PropertyGetter));
+ QVERIFY(object.propertyFlags("foo") & QScriptValue::PropertySetter);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+
+ // setter should still work
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+
+ // kill the setter too
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
+ QVERIFY(!(object.propertyFlags("foo") & QScriptValue::PropertySetter));
+ // now foo is just a regular property
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+ }
+
+ for (int x = 0; x < 2; ++x) {
+ object.setProperty("foo", QScriptValue());
+ // setter() sets this.x
+ object.setProperty("foo", eng.newFunction(setter), QScriptValue::PropertySetter);
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(str), true);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+
+ // getter() returns this.x
+ object.setProperty("foo", eng.newFunction(getter), QScriptValue::PropertyGetter);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // kill the setter
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: property 'foo' has a getter but no setter");
+ object.setProperty("foo", str);
+
+ // getter should still work
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // kill the getter too
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ // now foo is just a regular property
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+ }
+
+ // use a single function as both getter and setter
+ object.setProperty("foo", QScriptValue());
+ object.setProperty("foo", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // killing the getter will preserve the setter, even though they are the same function
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ QVERIFY(object.propertyFlags("foo") & QScriptValue::PropertySetter);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+}
- // attempt to install getter+setter on built-in (native) property
- {
- QScriptValue object6 = eng.newObject();
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
-
- QScriptValue fun = eng.newFunction(getSet__proto__);
- fun.setProperty("value", QScriptValue(&eng, "boo"));
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: "
- "cannot set getter or setter of native property "
- "`__proto__'");
- object6.setProperty("__proto__", fun,
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter
- | QScriptValue::UserRange);
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
-
- object6.setProperty("__proto__", QScriptValue(),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSettersThrowError()
+{
+ // getter/setter that throws an error
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue object = eng.newObject();
- // global property that's a getter+setter
- {
- eng.globalObject().setProperty("globalGetterSetterProperty", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- eng.evaluate("globalGetterSetterProperty = 123");
- {
- QScriptValue ret = eng.evaluate("globalGetterSetterProperty");
- QVERIFY(ret.isNumber());
- QVERIFY(ret.strictlyEquals(QScriptValue(&eng, 123)));
- }
- QCOMPARE(eng.evaluate("typeof globalGetterSetterProperty").toString(),
- QString::fromLatin1("number"));
- {
- QScriptValue ret = eng.evaluate("this.globalGetterSetterProperty()");
- QVERIFY(ret.isError());
- QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a function."));
- }
- {
- QScriptValue ret = eng.evaluate("new this.globalGetterSetterProperty()");
- QVERIFY(ret.isError());
- QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a constructor."));
- }
- }
+ object.setProperty("foo", eng.newFunction(getterSetterThrowingError),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(!eng.hasUncaughtException());
+ QScriptValue ret = object.property("foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.evaluate("Object"); // clear exception state...
+ QVERIFY(!eng.hasUncaughtException());
+ object.setProperty("foo", str);
+ QVERIFY(eng.hasUncaughtException());
+ QCOMPARE(eng.uncaughtException().toString(), QLatin1String("Error: set foo"));
+}
- // "upgrading" an existing property to become a getter+setter
- {
- QScriptValue object7 = eng.newObject();
- QScriptValue num(&eng, 123);
- object7.setProperty("foo", num);
- object7.setProperty("foo", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(!object7.property("x").isValid());
- object7.setProperty("foo", num);
- QVERIFY(object7.property("x").equals(num));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSettersOnNative()
+{
+ // attempt to install getter+setter on built-in (native) property
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+
+ QScriptValue fun = eng.newFunction(getSet__proto__);
+ fun.setProperty("value", QScriptValue(&eng, "boo"));
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: "
+ "cannot set getter or setter of native property "
+ "`__proto__'");
+ object.setProperty("__proto__", fun,
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter
+ | QScriptValue::UserRange);
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+
+ object.setProperty("__proto__", QScriptValue(),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+}
+
+void tst_QScriptValue::getSetProperty_gettersAndSettersOnGlobalObject()
+{
+ // global property that's a getter+setter
+ QScriptEngine eng;
+ eng.globalObject().setProperty("globalGetterSetterProperty", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ eng.evaluate("globalGetterSetterProperty = 123");
+ {
+ QScriptValue ret = eng.evaluate("globalGetterSetterProperty");
+ QVERIFY(ret.isNumber());
+ QVERIFY(ret.strictlyEquals(QScriptValue(&eng, 123)));
+ }
+ QCOMPARE(eng.evaluate("typeof globalGetterSetterProperty").toString(),
+ QString::fromLatin1("number"));
+ {
+ QScriptValue ret = eng.evaluate("this.globalGetterSetterProperty()");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a function."));
+ }
+ {
+ QScriptValue ret = eng.evaluate("new this.globalGetterSetterProperty()");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a constructor."));
}
+}
+
+void tst_QScriptValue::getSetProperty_gettersAndSettersChange()
+{
+ // "upgrading" an existing property to become a getter+setter
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue num(&eng, 123);
+ object.setProperty("foo", num);
+ object.setProperty("foo", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(!object.property("x").isValid());
+ object.setProperty("foo", num);
+ QVERIFY(object.property("x").equals(num));
+}
+
+void tst_QScriptValue::getSetProperty_array()
+{
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ QScriptValue array = eng.newArray();
+
+ QVERIFY(array.isArray());
+ array.setProperty(0, num);
+ QCOMPARE(array.property(0).toNumber(), num.toNumber());
+ QCOMPARE(array.property("0").toNumber(), num.toNumber());
+ QCOMPARE(array.property("length").toUInt32(), quint32(1));
+ array.setProperty(1, str);
+ QCOMPARE(array.property(1).toString(), str.toString());
+ QCOMPARE(array.property("1").toString(), str.toString());
+ QCOMPARE(array.property("length").toUInt32(), quint32(2));
+ array.setProperty("length", QScriptValue(&eng, 1));
+ QCOMPARE(array.property("length").toUInt32(), quint32(1));
+ QCOMPARE(array.property(1).isValid(), false);
+}
+
+void tst_QScriptValue::getSetProperty()
+{
+ QScriptEngine eng;
+
+ QScriptValue object = eng.newObject();
+
+ QScriptValue str = QScriptValue(&eng, "bar");
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("foo").toString(), str.toString());
+
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ object.setProperty("baz", num);
+ QCOMPARE(object.property("baz").toNumber(), num.toNumber());
+
+ QScriptValue strstr = QScriptValue("bar");
+ QCOMPARE(strstr.engine(), (QScriptEngine *)0);
+ object.setProperty("foo", strstr);
+ QCOMPARE(object.property("foo").toString(), strstr.toString());
+ QCOMPARE(strstr.engine(), &eng); // the value has been bound to the engine
+
+ QScriptValue numnum = QScriptValue(123.0);
+ object.setProperty("baz", numnum);
+ QCOMPARE(object.property("baz").toNumber(), numnum.toNumber());
+
+ QScriptValue inv;
+ inv.setProperty("foo", num);
+ QCOMPARE(inv.property("foo").isValid(), false);
eng.globalObject().setProperty("object", object);
@@ -2155,50 +2267,126 @@ void tst_QScriptValue::arrayElementGetterSetter()
QVERIFY(obj.propertyFlags("1") == 0);
}
-void tst_QScriptValue::getSetPrototype()
+void tst_QScriptValue::getSetPrototype_cyclicPrototype()
{
QScriptEngine eng;
-
+ QScriptValue prototype = eng.newObject();
QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
- QScriptValue object2 = eng.newObject();
- object2.setPrototype(object);
+ QScriptValue previousPrototype = prototype.prototype();
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
+ prototype.setPrototype(prototype);
+ QCOMPARE(prototype.prototype().strictlyEquals(previousPrototype), true);
+
+ object.setPrototype(prototype);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
+ prototype.setPrototype(object);
+ QCOMPARE(prototype.prototype().strictlyEquals(previousPrototype), true);
+
+}
+
+void tst_QScriptValue::getSetPrototype_evalCyclicPrototype()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.evaluate("o = { }; p = { }; o.__proto__ = p; p.__proto__ = o");
+ QCOMPARE(eng.hasUncaughtException(), true);
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ QCOMPARE(ret.isError(), true);
+ QCOMPARE(ret.toString(), QLatin1String("Error: cyclic __proto__ value"));
+}
- QCOMPARE(object2.prototype().strictlyEquals(object), true);
+void tst_QScriptValue::getSetPrototype_eval()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.evaluate("p = { }; p.__proto__ = { }");
+ QCOMPARE(eng.hasUncaughtException(), false);
+ QCOMPARE(ret.isError(), false);
+}
+void tst_QScriptValue::getSetPrototype_invalidPrototype()
+{
+ QScriptEngine eng;
QScriptValue inv;
+ QScriptValue object = eng.newObject();
+ QScriptValue proto = object.prototype();
+ QVERIFY(object.prototype().strictlyEquals(proto));
inv.setPrototype(object);
QCOMPARE(inv.prototype().isValid(), false);
+ object.setPrototype(inv);
+ // FIXME should it be invalid or proto?
+ QVERIFY(object.prototype().strictlyEquals(inv));
+}
+void tst_QScriptValue::getSetPrototype_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue prototype = eng.newObject();
+ QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
QScriptEngine otherEngine;
- QScriptValue object3 = otherEngine.newObject();
+ QScriptValue newPrototype = otherEngine.newObject();
QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cannot set a prototype created in a different engine");
- object2.setPrototype(object3);
- QCOMPARE(object2.prototype().strictlyEquals(object), true);
+ object.setPrototype(newPrototype);
+ QCOMPARE(object.prototype().strictlyEquals(prototype), true);
- // cyclic prototypes
- QScriptValue old = object.prototype();
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
- object.setPrototype(object);
- QCOMPARE(object.prototype().strictlyEquals(old), true);
+}
- object2.setPrototype(object);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
- object.setPrototype(object2);
- QCOMPARE(object.prototype().strictlyEquals(old), true);
+void tst_QScriptValue::getSetPrototype_null()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ object.setPrototype(QScriptValue(QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
- {
- QScriptValue ret = eng.evaluate("o = { }; p = { }; o.__proto__ = p; p.__proto__ = o");
- QCOMPARE(eng.hasUncaughtException(), true);
- QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
- QCOMPARE(ret.isError(), true);
- QCOMPARE(ret.toString(), QLatin1String("Error: cyclic __proto__ value"));
- }
- {
- QScriptValue ret = eng.evaluate("p.__proto__ = { }");
- QCOMPARE(eng.hasUncaughtException(), false);
- QCOMPARE(ret.isError(), false);
- }
+ QScriptValue newProto = eng.newObject();
+ object.setPrototype(newProto);
+ QVERIFY(object.prototype().equals(newProto));
+
+ object.setPrototype(QScriptValue(&eng, QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
+}
+
+void tst_QScriptValue::getSetPrototype_notObjectOrNull()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue originalProto = object.prototype();
+
+ QEXPECT_FAIL("", "QTBUG-15154: QScriptValue::setPrototype() allows a non-Object value to be set as prototype", Abort);
+
+ // bool
+ object.setPrototype(true);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, true));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // number
+ object.setPrototype(123);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, 123));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // string
+ object.setPrototype("foo");
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, "foo"));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // undefined
+ object.setPrototype(QScriptValue(QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+}
+
+void tst_QScriptValue::getSetPrototype()
+{
+ QScriptEngine eng;
+ QScriptValue prototype = eng.newObject();
+ QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
+ QCOMPARE(object.prototype().strictlyEquals(prototype), true);
}
void tst_QScriptValue::getSetScope()
@@ -2235,38 +2423,84 @@ void tst_QScriptValue::getSetScope()
QVERIFY(!object2.scope().isValid());
}
-void tst_QScriptValue::getSetData()
+void tst_QScriptValue::getSetData_objects_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("object");
+
+ QTest::newRow("object from evaluate") << engine->evaluate("new Object()");
+ QTest::newRow("object from engine") << engine->newObject();
+ QTest::newRow("Array") << engine->newArray();
+ QTest::newRow("Date") << engine->newDate(12324);
+ QTest::newRow("QObject") << engine->newQObject(this);
+ QTest::newRow("RegExp") << engine->newRegExp(QRegExp());
+}
+
+void tst_QScriptValue::getSetData_objects()
+{
+ QFETCH(QScriptValue, object);
+
+ QVERIFY(!object.data().isValid());
+ QScriptValue v1(true);
+ object.setData(v1);
+ QVERIFY(object.data().strictlyEquals(v1));
+ QScriptValue v2(123);
+ object.setData(v2);
+ QVERIFY(object.data().strictlyEquals(v2));
+ QScriptValue v3 = engine->newObject();
+ object.setData(v3);
+ QVERIFY(object.data().strictlyEquals(v3));
+ object.setData(QScriptValue());
+ QVERIFY(!object.data().isValid());
+}
+
+void tst_QScriptValue::getSetData_nonObjects_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("undefined (bound)") << engine->undefinedValue();
+ QTest::newRow("null (bound)") << engine->nullValue();
+ QTest::newRow("string (bound)") << QScriptValue(engine, "Pong");
+ QTest::newRow("bool (bound)") << QScriptValue(engine, false);
+
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("string") << QScriptValue("Pong");
+ QTest::newRow("bool") << QScriptValue(true);
+}
+
+void tst_QScriptValue::getSetData_nonObjects()
+{
+ QFETCH(QScriptValue, value);
+
+ QVERIFY(!value.data().isValid());
+ QScriptValue v1(true);
+ value.setData(v1);
+ QVERIFY(!value.data().isValid());
+ QScriptValue v2(123);
+ value.setData(v2);
+ QVERIFY(!value.data().isValid());
+ QScriptValue v3 = engine->newObject();
+ value.setData(v3);
+ QVERIFY(!value.data().isValid());
+ value.setData(QScriptValue());
+ QVERIFY(!value.data().isValid());
+}
+
+void tst_QScriptValue::setData_QTBUG15144()
{
QScriptEngine eng;
- {
- QScriptValue object = eng.newObject();
- QVERIFY(!object.data().isValid());
- QScriptValue v1(true);
- object.setData(v1);
- QVERIFY(object.data().strictlyEquals(v1));
- QScriptValue v2(123);
- object.setData(v2);
- QVERIFY(object.data().strictlyEquals(v2));
- QScriptValue v3 = eng.newObject();
- object.setData(v3);
- QVERIFY(object.data().strictlyEquals(v3));
- object.setData(QScriptValue());
- QVERIFY(!object.data().isValid());
- }
- {
- QScriptValue value = eng.undefinedValue();
- QVERIFY(!value.data().isValid());
- QScriptValue v1(true);
- value.setData(v1);
- QVERIFY(!value.data().isValid());
- QScriptValue v2(123);
- value.setData(v2);
- QVERIFY(!value.data().isValid());
- QScriptValue v3 = eng.newObject();
- value.setData(v3);
- QVERIFY(!value.data().isValid());
- value.setData(QScriptValue());
- QVERIFY(!value.data().isValid());
+ QScriptValue obj = eng.newObject();
+ for (int i = 0; i < 10000; ++i) {
+ // Create an object with property 'fooN' on it, and immediately kill
+ // the reference to the object so it and the property name become garbage.
+ eng.evaluate(QString::fromLatin1("o = {}; o.foo%0 = 10; o = null;").arg(i));
+ // Setting the data will cause a JS string to be allocated, which could
+ // trigger a GC. This should not cause a crash.
+ obj.setData("foodfight");
}
}
@@ -2276,24 +2510,52 @@ public:
TestScriptClass(QScriptEngine *engine) : QScriptClass(engine) {}
};
-void tst_QScriptValue::getSetScriptClass()
+void tst_QScriptValue::getSetScriptClass_emptyClass_data()
{
- QScriptEngine eng;
- QScriptValue inv;
- QCOMPARE(inv.scriptClass(), (QScriptClass*)0);
- QScriptValue num(123);
- QCOMPARE(num.scriptClass(), (QScriptClass*)0);
+ newEngine();
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("number") << QScriptValue(123);
+ QTest::newRow("string") << QScriptValue("pong");
+ QTest::newRow("bool") << QScriptValue(false);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+
+ QTest::newRow("number") << QScriptValue(engine, 123);
+ QTest::newRow("string") << QScriptValue(engine, "pong");
+ QTest::newRow("bool") << QScriptValue(engine, true);
+ QTest::newRow("null") << QScriptValue(engine->nullValue());
+ QTest::newRow("undefined") << QScriptValue(engine->undefinedValue());
+ QTest::newRow("object") << QScriptValue(engine->newObject());
+ QTest::newRow("date") << QScriptValue(engine->evaluate("new Date()"));
+ QTest::newRow("qobject") << QScriptValue(engine->newQObject(this));
+}
+
+void tst_QScriptValue::getSetScriptClass_emptyClass()
+{
+ QFETCH(QScriptValue, value);
+ QCOMPARE(value.scriptClass(), (QScriptClass*)0);
+}
+void tst_QScriptValue::getSetScriptClass_JSObjectFromCpp()
+{
+ QScriptEngine eng;
TestScriptClass testClass(&eng);
// object created in C++ (newObject())
{
QScriptValue obj = eng.newObject();
- QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
obj.setScriptClass(&testClass);
QCOMPARE(obj.scriptClass(), (QScriptClass*)&testClass);
obj.setScriptClass(0);
QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
}
+}
+
+void tst_QScriptValue::getSetScriptClass_JSObjectFromJS()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
// object created in JS
{
QScriptValue obj = eng.evaluate("new Object");
@@ -2308,6 +2570,12 @@ void tst_QScriptValue::getSetScriptClass()
obj.setScriptClass(0);
QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
}
+}
+
+void tst_QScriptValue::getSetScriptClass_QVariant()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
// object that already has a(n internal) class
{
QScriptValue obj = eng.newVariant(QUrl("http://example.com"));
@@ -2319,10 +2587,15 @@ void tst_QScriptValue::getSetScriptClass()
QVERIFY(!obj.isVariant());
QCOMPARE(obj.toVariant(), QVariant(QVariantMap()));
}
+}
+
+void tst_QScriptValue::getSetScriptClass_QObject()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
{
QScriptValue obj = eng.newQObject(this);
QVERIFY(obj.isQObject());
- QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
obj.setScriptClass(&testClass);
QCOMPARE(obj.scriptClass(), (QScriptClass*)&testClass);
QVERIFY(obj.isObject());
@@ -2351,83 +2624,89 @@ static QScriptValue returnInvalidValue(QScriptContext *, QScriptEngine *)
return QScriptValue();
}
-void tst_QScriptValue::call()
+void tst_QScriptValue::call_function()
{
QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { return 1; })");
+ QVERIFY(fun.isFunction());
+ QScriptValue result = fun.call();
+ QVERIFY(result.isNumber());
+ QCOMPARE(result.toInt32(), 1);
+}
- {
- QScriptValue fun = eng.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
- QScriptValue result = fun.call();
- QVERIFY(result.isNumber());
- QCOMPARE(result.toInt32(), 1);
- }
-
+void tst_QScriptValue::call_object()
+{
+ QScriptEngine eng;
QScriptValue Object = eng.evaluate("Object");
QCOMPARE(Object.isFunction(), true);
- {
- QScriptValue result = Object.call(Object);
- QCOMPARE(result.isObject(), true);
- }
+ QScriptValue result = Object.call(Object);
+ QCOMPARE(result.isObject(), true);
+}
+void tst_QScriptValue::call_newObjects()
+{
+ QScriptEngine eng;
// test that call() doesn't construct new objects
QScriptValue Number = eng.evaluate("Number");
+ QScriptValue Object = eng.evaluate("Object");
QCOMPARE(Object.isFunction(), true);
- {
- QScriptValueList args;
- args << QScriptValue(&eng, 123);
- QScriptValue result = Number.call(Object, args);
- QCOMPARE(result.strictlyEquals(args.at(0)), true);
- }
+ QScriptValueList args;
+ args << QScriptValue(&eng, 123);
+ QScriptValue result = Number.call(Object, args);
+ QCOMPARE(result.strictlyEquals(args.at(0)), true);
+}
+void tst_QScriptValue::call_this()
+{
+ QScriptEngine eng;
// test that correct "this" object is used
- {
- QScriptValue fun = eng.evaluate("(function() { return this; })");
- QCOMPARE(fun.isFunction(), true);
+ QScriptValue fun = eng.evaluate("(function() { return this; })");
+ QCOMPARE(fun.isFunction(), true);
- {
- QScriptValue numberObject = QScriptValue(&eng, 123.0).toObject();
- QScriptValue result = fun.call(numberObject);
- QCOMPARE(result.isObject(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- }
+ QScriptValue numberObject = QScriptValue(&eng, 123.0).toObject();
+ QScriptValue result = fun.call(numberObject);
+ QCOMPARE(result.isObject(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+}
+void tst_QScriptValue::call_arguments()
+{
+ QScriptEngine eng;
// test that correct arguments are passed
- {
- QScriptValue fun = eng.evaluate("(function() { return arguments[0]; })");
- QCOMPARE(fun.isFunction(), true);
-
- {
- QScriptValue result = fun.call(eng.undefinedValue());
- QCOMPARE(result.isUndefined(), true);
- }
-
- {
- QScriptValueList args;
- args << QScriptValue(&eng, 123.0);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QCOMPARE(result.isNumber(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- // V2 constructors
- {
- QScriptValueList args;
- args << QScriptValue(123.0);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QCOMPARE(result.isNumber(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- {
- QScriptValue args = eng.newArray();
- args.setProperty(0, 123);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QVERIFY(result.isNumber());
- QCOMPARE(result.toNumber(), 123.0);
- }
+ QScriptValue fun = eng.evaluate("(function() { return arguments[0]; })");
+ QCOMPARE(fun.isFunction(), true);
+ {
+ QScriptValue result = fun.call(eng.undefinedValue());
+ QCOMPARE(result.isUndefined(), true);
+ }
+ {
+ QScriptValueList args;
+ args << QScriptValue(&eng, 123.0);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QCOMPARE(result.isNumber(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+ }
+ // V2 constructors
+ {
+ QScriptValueList args;
+ args << QScriptValue(123.0);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QCOMPARE(result.isNumber(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+ }
+ {
+ QScriptValue args = eng.newArray();
+ args.setProperty(0, 123);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QVERIFY(result.isNumber());
+ QCOMPARE(result.toNumber(), 123.0);
}
+}
+void tst_QScriptValue::call()
+{
+ QScriptEngine eng;
{
QScriptValue fun = eng.evaluate("(function() { return arguments[1]; })");
QCOMPARE(fun.isFunction(), true);
@@ -2448,7 +2727,6 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 456.0);
}
}
-
{
QScriptValue fun = eng.evaluate("(function() { throw new Error('foo'); })");
QCOMPARE(fun.isFunction(), true);
@@ -2461,7 +2739,6 @@ void tst_QScriptValue::call()
QVERIFY(result.strictlyEquals(eng.uncaughtException()));
}
}
-
{
eng.clearExceptions();
QScriptValue fun = eng.newFunction(getArg);
@@ -2489,7 +2766,6 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 123.0);
}
}
-
{
QScriptValue fun = eng.newFunction(evaluateArg);
{
@@ -2501,11 +2777,12 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 123.0);
}
}
+}
- QScriptValue inv;
- QCOMPARE(inv.call().isValid(), false);
-
+void tst_QScriptValue::call_invalidArguments()
+{
// test that invalid arguments are handled gracefully
+ QScriptEngine eng;
{
QScriptValue fun = eng.newFunction(getArg);
{
@@ -2538,6 +2815,35 @@ void tst_QScriptValue::call()
QCOMPARE(qIsNaN(ret.toNumber()), true);
}
}
+}
+
+void tst_QScriptValue::call_invalidReturn()
+{
+ // test that invalid return value is handled gracefully
+ QScriptEngine eng;
+ QScriptValue fun = eng.newFunction(returnInvalidValue);
+ eng.globalObject().setProperty("returnInvalidValue", fun);
+ QScriptValue ret = eng.evaluate("returnInvalidValue() + returnInvalidValue()");
+ QCOMPARE(ret.isValid(), true);
+ QCOMPARE(ret.isNumber(), true);
+ QCOMPARE(qIsNaN(ret.toNumber()), true);
+}
+
+void tst_QScriptValue::call_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.evaluate("Object");
+ QScriptEngine otherEngine;
+ QScriptValue fun = otherEngine.evaluate("(function() { return 1; })");
+ QVERIFY(fun.isFunction());
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
+ "cannot call function with thisObject created in "
+ "a different engine");
+ QCOMPARE(fun.call(object).isValid(), false);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
+ "cannot call function with argument created in "
+ "a different engine");
+ QCOMPARE(fun.call(QScriptValue(), QScriptValueList() << QScriptValue(&eng, 123)).isValid(), false);
{
QScriptValue fun = eng.evaluate("Object");
QVERIFY(fun.isFunction());
@@ -2548,76 +2854,74 @@ void tst_QScriptValue::call()
QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: cannot call function with argument created in a different engine");
fun.call(QScriptValue(), args);
}
+}
- // test that invalid return value is handled gracefully
- {
- QScriptValue fun = eng.newFunction(returnInvalidValue);
- eng.globalObject().setProperty("returnInvalidValue", fun);
- QScriptValue ret = eng.evaluate("returnInvalidValue() + returnInvalidValue()");
- QCOMPARE(ret.isValid(), true);
- QCOMPARE(ret.isNumber(), true);
- QCOMPARE(qIsNaN(ret.toNumber()), true);
- }
+void tst_QScriptValue::call_array()
+{
+ QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { return arguments; })");
+ QVERIFY(fun.isFunction());
+ QScriptValue array = eng.newArray(3);
+ array.setProperty(0, QScriptValue(&eng, 123.0));
+ array.setProperty(1, QScriptValue(&eng, 456.0));
+ array.setProperty(2, QScriptValue(&eng, 789.0));
+ // call with single array object as arguments
+ QScriptValue ret = fun.call(QScriptValue(), array);
+ QVERIFY(!eng.hasUncaughtException());
+ QCOMPARE(ret.isError(), false);
+ QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true);
+ QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true);
+ QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true);
+ // call with arguments object as arguments
+ QScriptValue ret2 = fun.call(QScriptValue(), ret);
+ QCOMPARE(ret2.isError(), false);
+ QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true);
+ QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true);
+ QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true);
+ // call with null as arguments
+ QScriptValue ret3 = fun.call(QScriptValue(), eng.nullValue());
+ QCOMPARE(ret3.isError(), false);
+ QCOMPARE(ret3.property("length").isNumber(), true);
+ QCOMPARE(ret3.property("length").toNumber(), 0.0);
+ // call with undefined as arguments
+ QScriptValue ret4 = fun.call(QScriptValue(), eng.undefinedValue());
+ QCOMPARE(ret4.isError(), false);
+ QCOMPARE(ret4.property("length").isNumber(), true);
+ QCOMPARE(ret4.property("length").toNumber(), 0.0);
+ // call with something else as arguments
+ QScriptValue ret5 = fun.call(QScriptValue(), QScriptValue(&eng, 123.0));
+ QCOMPARE(ret5.isError(), true);
+ // call with a non-array object as arguments
+ QScriptValue ret6 = fun.call(QScriptValue(), eng.globalObject());
+ QVERIFY(ret6.isError());
+ QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array"));
+}
- {
- QScriptEngine otherEngine;
- QScriptValue fun = otherEngine.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
- "cannot call function with thisObject created in "
- "a different engine");
- QCOMPARE(fun.call(Object).isValid(), false);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
- "cannot call function with argument created in "
- "a different engine");
- QCOMPARE(fun.call(QScriptValue(), QScriptValueList() << QScriptValue(&eng, 123)).isValid(), false);
- }
- {
- QScriptValue fun = eng.evaluate("(function() { return arguments; })");
- QVERIFY(fun.isFunction());
- QScriptValue array = eng.newArray(3);
- array.setProperty(0, QScriptValue(&eng, 123.0));
- array.setProperty(1, QScriptValue(&eng, 456.0));
- array.setProperty(2, QScriptValue(&eng, 789.0));
- // call with single array object as arguments
- QScriptValue ret = fun.call(QScriptValue(), array);
- QVERIFY(!eng.hasUncaughtException());
- QCOMPARE(ret.isError(), false);
- QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true);
- QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true);
- QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true);
- // call with arguments object as arguments
- QScriptValue ret2 = fun.call(QScriptValue(), ret);
- QCOMPARE(ret2.isError(), false);
- QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true);
- QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true);
- QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true);
- // call with null as arguments
- QScriptValue ret3 = fun.call(QScriptValue(), eng.nullValue());
- QCOMPARE(ret3.isError(), false);
- QCOMPARE(ret3.property("length").isNumber(), true);
- QCOMPARE(ret3.property("length").toNumber(), 0.0);
- // call with undefined as arguments
- QScriptValue ret4 = fun.call(QScriptValue(), eng.undefinedValue());
- QCOMPARE(ret4.isError(), false);
- QCOMPARE(ret4.property("length").isNumber(), true);
- QCOMPARE(ret4.property("length").toNumber(), 0.0);
- // call with something else as arguments
- QScriptValue ret5 = fun.call(QScriptValue(), QScriptValue(&eng, 123.0));
- QCOMPARE(ret5.isError(), true);
- // call with a non-array object as arguments
- QScriptValue ret6 = fun.call(QScriptValue(), eng.globalObject());
- QVERIFY(ret6.isError());
- QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array"));
- }
+void tst_QScriptValue::call_nonFunction_data()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool") << QScriptValue(false);
+ QTest::newRow("int") << QScriptValue(123);
+ QTest::newRow("string") << QScriptValue(QString::fromLatin1("ciao"));
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+
+ QTest::newRow("bool bound") << QScriptValue(engine, false);
+ QTest::newRow("int bound") << QScriptValue(engine, 123);
+ QTest::newRow("string bound") << QScriptValue(engine, QString::fromLatin1("ciao"));
+ QTest::newRow("undefined bound") << engine->undefinedValue();
+ QTest::newRow("null bound") << engine->nullValue();
+}
+void tst_QScriptValue::call_nonFunction()
+{
// calling things that are not functions
- QVERIFY(!QScriptValue(false).call().isValid());
- QVERIFY(!QScriptValue(123).call().isValid());
- QVERIFY(!QScriptValue(QString::fromLatin1("ciao")).call().isValid());
- QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).call().isValid());
- QVERIFY(!QScriptValue(QScriptValue::NullValue).call().isValid());
+ QFETCH(QScriptValue, value);
+ QVERIFY(!value.call().isValid());
}
static QScriptValue ctorReturningUndefined(QScriptContext *ctx, QScriptEngine *)
@@ -2756,7 +3060,32 @@ void tst_QScriptValue::construct()
QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid());
}
-void tst_QScriptValue::lessThan_old()
+void tst_QScriptValue::construct_constructorThrowsPrimitive()
+{
+ QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { throw 123; })");
+ QVERIFY(fun.isFunction());
+ // construct(QScriptValueList)
+ {
+ QScriptValue ret = fun.construct();
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toNumber(), 123.0);
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.clearExceptions();
+ }
+ // construct(QScriptValue)
+ {
+ QScriptValue ret = fun.construct(eng.newArray());
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toNumber(), 123.0);
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.clearExceptions();
+ }
+}
+
+void tst_QScriptValue::lessThan()
{
QScriptEngine eng;
@@ -2850,7 +3179,7 @@ void tst_QScriptValue::lessThan_old()
QCOMPARE(date1.lessThan(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::equals_old()
+void tst_QScriptValue::equals()
{
QScriptEngine eng;
@@ -3043,7 +3372,7 @@ void tst_QScriptValue::equals_old()
QCOMPARE(date1.equals(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::strictlyEquals_old()
+void tst_QScriptValue::strictlyEquals()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 8bfaa6a944..7bf0b66f18 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -49,8 +49,6 @@
#include <QtScript/qscriptvalue.h>
#include <QtTest/QtTest>
-#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
-
Q_DECLARE_METATYPE(QVariant)
Q_DECLARE_METATYPE(QScriptValue)
@@ -63,162 +61,102 @@ public:
virtual ~tst_QScriptValue();
private slots:
- // Generated test functions
- void isArray_data();
- void isArray();
-
- void isBool_data();
- void isBool();
+ void toObject();
- void isBoolean_data();
- void isBoolean();
+ void ctor_invalid();
+ void ctor_undefinedWithEngine();
+ void ctor_undefined();
+ void ctor_nullWithEngine();
+ void ctor_null();
+ void ctor_boolWithEngine();
+ void ctor_bool();
+ void ctor_intWithEngine();
+ void ctor_int();
+ void ctor_uintWithEngine();
+ void ctor_uint();
+ void ctor_floatWithEngine();
+ void ctor_float();
+ void ctor_stringWithEngine();
+ void ctor_string();
+ void ctor_copyAndAssignWithEngine();
+ void ctor_copyAndAssign();
+ void ctor_nullEngine();
- void isDate_data();
+ void toString();
+ void toNumber();
+ void toBoolean();
+ void toBool();
+ void toInteger();
+ void toInt32();
+ void toUInt32();
+ void toUInt16();
+ void toVariant();
+ void toQObject();
+ void toDateTime();
+ void toRegExp();
+ void instanceOf_twoEngines();
+ void instanceOf();
+ void isArray_data();
+ void isArray();
void isDate();
-
+ void isDate_data();
+ void isError_propertiesOfGlobalObject();
void isError_data();
void isError();
-
- void isFunction_data();
- void isFunction();
-
- void isNull_data();
- void isNull();
-
- void isNumber_data();
- void isNumber();
-
- void isObject_data();
- void isObject();
-
- void isQMetaObject_data();
- void isQMetaObject();
-
- void isQObject_data();
- void isQObject();
-
void isRegExp_data();
void isRegExp();
- void isString_data();
- void isString();
-
- void isUndefined_data();
- void isUndefined();
-
- void isValid_data();
- void isValid();
-
- void isVariant_data();
- void isVariant();
-
- void toBool_data();
- void toBool();
-
- void toBoolean_data();
- void toBoolean();
-
-// void toDateTime_data();
-// void toDateTime();
-
- void toInt32_data();
- void toInt32();
-
- void toInteger_data();
- void toInteger();
-
- void toNumber_data();
- void toNumber();
-
-// void toQMetaObject_data();
-// void toQMetaObject();
-
-// void toQObject_data();
-// void toQObject();
-
-// void toRegExp_data();
-// void toRegExp();
-
- void toString_data();
- void toString();
-
- void toUInt16_data();
- void toUInt16();
-
- void toUInt32_data();
- void toUInt32();
-
-// void toVariant_data();
-// void toVariant();
-
- void equals_data();
+ void lessThan();
void equals();
-
- void strictlyEquals_data();
void strictlyEquals();
- void lessThan_data();
- void lessThan();
-
- void instanceOf_data();
- void instanceOf();
-
- void assignAndCopyConstruct_data();
- void assignAndCopyConstruct();
-
- void qscriptvalue_castQString_data();
- void qscriptvalue_castQString();
-
- void qscriptvalue_castqsreal_data();
- void qscriptvalue_castqsreal();
-
- void qscriptvalue_castbool_data();
- void qscriptvalue_castbool();
-
- void qscriptvalue_castqint32_data();
- void qscriptvalue_castqint32();
-
- void qscriptvalue_castquint32_data();
- void qscriptvalue_castquint32();
-
- void qscriptvalue_castquint16_data();
- void qscriptvalue_castquint16();
-
- // Non-generated test functions
-
- void toObject();
- void ctor();
-
- void toString_old();
- void toNumber_old();
- void toBoolean_old();
- void toBool_old();
- void toInteger_old();
- void toInt32_old();
- void toUInt32_old();
- void toUInt16_old();
- void toVariant_old();
- void toQObject_old();
- void toDateTime_old();
- void toRegExp_old();
- void instanceOf_old();
- void isArray_old();
- void isDate_old();
- void isError_old();
- void isRegExp_old();
-
- void lessThan_old();
- void equals_old();
- void strictlyEquals_old();
-
+ void getSetPrototype_cyclicPrototype();
+ void getSetPrototype_evalCyclicPrototype();
+ void getSetPrototype_eval();
+ void getSetPrototype_invalidPrototype();
+ void getSetPrototype_twoEngines();
+ void getSetPrototype_null();
+ void getSetPrototype_notObjectOrNull();
void getSetPrototype();
void getSetScope();
+ void getSetProperty_HooliganTask162051();
+ void getSetProperty_HooliganTask183072();
+ void getSetProperty_propertyRemoval();
+ void getSetProperty_resolveMode();
+ void getSetProperty_twoEngines();
+ void getSetProperty_gettersAndSetters();
+ void getSetProperty_gettersAndSettersThrowError();
+ void getSetProperty_gettersAndSettersOnNative();
+ void getSetProperty_gettersAndSettersOnGlobalObject();
+ void getSetProperty_gettersAndSettersChange();
+ void getSetProperty_array();
void getSetProperty();
void arrayElementGetterSetter();
- void getSetData();
- void getSetScriptClass();
+ void getSetData_objects_data();
+ void getSetData_objects();
+ void getSetData_nonObjects_data();
+ void getSetData_nonObjects();
+ void setData_QTBUG15144();
+ void getSetScriptClass_emptyClass_data();
+ void getSetScriptClass_emptyClass();
+ void getSetScriptClass_JSObjectFromCpp();
+ void getSetScriptClass_JSObjectFromJS();
+ void getSetScriptClass_QVariant();
+ void getSetScriptClass_QObject();
+ void call_function();
+ void call_object();
+ void call_newObjects();
+ void call_this();
+ void call_arguments();
void call();
+ void call_invalidArguments();
+ void call_invalidReturn();
+ void call_twoEngines();
+ void call_array();
+ void call_nonFunction_data();
+ void call_nonFunction();
void construct();
+ void construct_constructorThrowsPrimitive();
void castToPointer();
void prettyPrinter_data();
void prettyPrinter();
@@ -228,187 +166,15 @@ private slots:
void nestedObjectToVariant_data();
void nestedObjectToVariant();
-private:
- typedef void (tst_QScriptValue::*InitDataFunction)();
- typedef void (tst_QScriptValue::*DefineDataFunction)(const char *);
- void dataHelper(InitDataFunction init, DefineDataFunction define);
- QTestData &newRow(const char *tag);
-
- typedef void (tst_QScriptValue::*TestFunction)(const char *, const QScriptValue &);
- void testHelper(TestFunction fun);
-
- // Generated functions
-
- void initScriptValues();
-
- void isArray_initData();
- void isArray_makeData(const char *expr);
- void isArray_test(const char *expr, const QScriptValue &value);
-
- void isBool_initData();
- void isBool_makeData(const char *expr);
- void isBool_test(const char *expr, const QScriptValue &value);
-
- void isBoolean_initData();
- void isBoolean_makeData(const char *expr);
- void isBoolean_test(const char *expr, const QScriptValue &value);
-
- void isDate_initData();
- void isDate_makeData(const char *expr);
- void isDate_test(const char *expr, const QScriptValue &value);
-
- void isError_initData();
- void isError_makeData(const char *expr);
- void isError_test(const char *expr, const QScriptValue &value);
-
- void isFunction_initData();
- void isFunction_makeData(const char *expr);
- void isFunction_test(const char *expr, const QScriptValue &value);
-
- void isNull_initData();
- void isNull_makeData(const char *expr);
- void isNull_test(const char *expr, const QScriptValue &value);
-
- void isNumber_initData();
- void isNumber_makeData(const char *expr);
- void isNumber_test(const char *expr, const QScriptValue &value);
-
- void isObject_initData();
- void isObject_makeData(const char *expr);
- void isObject_test(const char *expr, const QScriptValue &value);
-
- void isQMetaObject_initData();
- void isQMetaObject_makeData(const char *expr);
- void isQMetaObject_test(const char *expr, const QScriptValue &value);
-
- void isQObject_initData();
- void isQObject_makeData(const char *expr);
- void isQObject_test(const char *expr, const QScriptValue &value);
-
- void isRegExp_initData();
- void isRegExp_makeData(const char *expr);
- void isRegExp_test(const char *expr, const QScriptValue &value);
-
- void isString_initData();
- void isString_makeData(const char *expr);
- void isString_test(const char *expr, const QScriptValue &value);
-
- void isUndefined_initData();
- void isUndefined_makeData(const char *expr);
- void isUndefined_test(const char *expr, const QScriptValue &value);
-
- void isValid_initData();
- void isValid_makeData(const char *expr);
- void isValid_test(const char *expr, const QScriptValue &value);
-
- void isVariant_initData();
- void isVariant_makeData(const char *expr);
- void isVariant_test(const char *expr, const QScriptValue &value);
-
- void toBool_initData();
- void toBool_makeData(const char *);
- void toBool_test(const char *, const QScriptValue &value);
-
- void toBoolean_initData();
- void toBoolean_makeData(const char *);
- void toBoolean_test(const char *, const QScriptValue &value);
-
- void toDateTime_initData();
- void toDateTime_makeData(const char *);
- void toDateTime_test(const char *, const QScriptValue &value);
-
- void toInt32_initData();
- void toInt32_makeData(const char *);
- void toInt32_test(const char *, const QScriptValue &value);
-
- void toInteger_initData();
- void toInteger_makeData(const char *);
- void toInteger_test(const char *, const QScriptValue &value);
-
- void toNumber_initData();
- void toNumber_makeData(const char *);
- void toNumber_test(const char *, const QScriptValue &value);
-
- void toQMetaObject_initData();
- void toQMetaObject_makeData(const char *);
- void toQMetaObject_test(const char *, const QScriptValue &value);
-
- void toQObject_initData();
- void toQObject_makeData(const char *);
- void toQObject_test(const char *, const QScriptValue &value);
-
- void toRegExp_initData();
- void toRegExp_makeData(const char *);
- void toRegExp_test(const char *, const QScriptValue &value);
-
- void toString_initData();
- void toString_makeData(const char *);
- void toString_test(const char *, const QScriptValue &value);
-
- void toUInt16_initData();
- void toUInt16_makeData(const char *);
- void toUInt16_test(const char *, const QScriptValue &value);
-
- void toUInt32_initData();
- void toUInt32_makeData(const char *);
- void toUInt32_test(const char *, const QScriptValue &value);
-
- void toVariant_initData();
- void toVariant_makeData(const char *);
- void toVariant_test(const char *, const QScriptValue &value);
-
- void equals_initData();
- void equals_makeData(const char *);
- void equals_test(const char *, const QScriptValue &value);
-
- void strictlyEquals_initData();
- void strictlyEquals_makeData(const char *);
- void strictlyEquals_test(const char *, const QScriptValue &value);
-
- void lessThan_initData();
- void lessThan_makeData(const char *);
- void lessThan_test(const char *, const QScriptValue &value);
-
- void instanceOf_initData();
- void instanceOf_makeData(const char *);
- void instanceOf_test(const char *, const QScriptValue &value);
-
- void assignAndCopyConstruct_initData();
- void assignAndCopyConstruct_makeData(const char *);
- void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castQString_initData();
- void qscriptvalue_castQString_makeData(const char *);
- void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castqsreal_initData();
- void qscriptvalue_castqsreal_makeData(const char *);
- void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castbool_initData();
- void qscriptvalue_castbool_makeData(const char *);
- void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castqint32_initData();
- void qscriptvalue_castqint32_makeData(const char *);
- void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castquint32_initData();
- void qscriptvalue_castquint32_makeData(const char *);
- void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castquint16_initData();
- void qscriptvalue_castquint16_makeData(const char *);
- void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
private:
+ void newEngine()
+ {
+ if (engine)
+ delete engine;
+ engine = new QScriptEngine();
+ }
QScriptEngine *engine;
- QHash<QString, QScriptValue> m_values;
- QString m_currentExpression;
};
-#define DEFINE_TEST_FUNCTION(name) \
-void tst_QScriptValue::name##_data() { dataHelper(&tst_QScriptValue::name##_initData, &tst_QScriptValue::name##_makeData); } \
-void tst_QScriptValue::name() { testHelper(&tst_QScriptValue::name##_test); }
-
#endif
diff --git a/tests/auto/qscriptvaluegenerated/.gitignore b/tests/auto/qscriptvaluegenerated/.gitignore
new file mode 100644
index 0000000000..f724cb900f
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/.gitignore
@@ -0,0 +1 @@
+tst_qscriptvalue
diff --git a/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro b/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro
new file mode 100644
index 0000000000..c3e9912f69
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+QT = core gui script
+SOURCES += tst_qscriptvalue.cpp
+HEADERS += tst_qscriptvalue.h
+
+# Generated by testgen
+SOURCES += \
+ tst_qscriptvalue_generated_init.cpp \
+ tst_qscriptvalue_generated_cast.cpp \
+ tst_qscriptvalue_generated_comparison.cpp \
+ tst_qscriptvalue_generated_isXXX.cpp \
+ tst_qscriptvalue_generated_toXXX.cpp
+
+win32-msvc* {
+ # With -O2, MSVC takes up to 24 minutes to compile this test!
+ QMAKE_CXXFLAGS_RELEASE -= -O1 -O2
+ QMAKE_CXXFLAGS_RELEASE += -Od
+}
diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvaluegenerated/testgen/data.txt
index 73677ec0fb..2cc1229b3f 100644
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ b/tests/auto/qscriptvaluegenerated/testgen/data.txt
@@ -116,6 +116,11 @@ engine->evaluate("/foo/")
engine->evaluate("new Object()")
engine->evaluate("new Array()")
engine->evaluate("new Error()")
+engine->evaluate("new Boolean(true)")
+engine->evaluate("new Boolean(false)")
+engine->evaluate("new Number(123)")
+engine->evaluate("new RegExp('foo', 'gim')")
+engine->evaluate("new String('ciao')")
engine->evaluate("a = new Object(); a.foo = 22; a.foo")
engine->evaluate("Undefined")
engine->evaluate("Null")
@@ -154,8 +159,9 @@ engine->newArray()
engine->newArray(10)
engine->newDate(QDateTime())
engine->newQMetaObject(&QObject::staticMetaObject)
+engine->newRegExp("foo", "gim")
engine->newVariant(QVariant())
engine->newVariant(QVariant(123))
engine->newVariant(QVariant(false))
engine->newQObject(0)
-engine->newQObject(engine) \ No newline at end of file
+engine->newQObject(engine)
diff --git a/tests/auto/qscriptvalue/testgen/gen.py b/tests/auto/qscriptvaluegenerated/testgen/gen.py
index 6e48f46d67..6e48f46d67 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvaluegenerated/testgen/gen.py
diff --git a/tests/auto/qscriptvalue/testgen/main.cpp b/tests/auto/qscriptvaluegenerated/testgen/main.cpp
index 06726352aa..06726352aa 100644
--- a/tests/auto/qscriptvalue/testgen/main.cpp
+++ b/tests/auto/qscriptvaluegenerated/testgen/main.cpp
diff --git a/tests/auto/qscriptvalue/testgen/testgen.pro b/tests/auto/qscriptvaluegenerated/testgen/testgen.pro
index 47709a811d..47709a811d 100644
--- a/tests/auto/qscriptvalue/testgen/testgen.pro
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgen.pro
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
index 9d7d33d2e6..183b62c222 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
@@ -156,14 +156,14 @@ static QString generateLicence()
static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
{
- static const QString templ("void tst_QScriptValue::%1_initData()\n"\
+ static const QString templ("void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<bool>(\"expected\");\n"\
" initScriptValues();\n"\
"}\n"\
"\n"\
"static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QSet<QString> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -174,7 +174,7 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
" newRow(expr) << %1.contains(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(bool, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
@@ -197,8 +197,9 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
set.append("\",");
set.append("\n \"");
set.append(escape(t));
- set.append("\"");
}
+ if (!list.isEmpty())
+ set.append("\"\n");
return result.arg(name, set.join(QString()), QString::number(list.count()));
}
@@ -207,7 +208,7 @@ template<typename T>
static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<%2>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -215,7 +216,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
"\n"\
"static QString %1_tagArray[] = {%4};\n\n"\
"static %2 %1_valueArray[] = {%5};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %2> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -226,7 +227,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
" newRow(expr) << %1.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
@@ -268,7 +269,7 @@ template<>
QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<%2>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -276,7 +277,7 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
"\n"\
"static QString %1_tagArray[] = {%3};\n"\
"static %2 %1_valueArray[] = {%4};\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %2> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -287,7 +288,7 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
" newRow(expr) << %1.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%2, expected);\n"\
"%666"
@@ -345,7 +346,7 @@ template<typename T>
static QString generateCastDef(const QList<QPair<QString, T> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
"{\n"\
" QTest::addColumn<%1>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -353,7 +354,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
"\n"\
"static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
"static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %1> value;\n"\
" if (value.isEmpty()) {\n"\
@@ -364,7 +365,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
" newRow(expr) << value.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%1, expected);\n"\
" QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
@@ -401,7 +402,7 @@ template<>
QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
"{\n"\
" QTest::addColumn<%1>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -409,7 +410,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
"\n"\
"static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
"static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %1> value;\n"\
" if (value.isEmpty()) {\n"\
@@ -420,7 +421,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
" newRow(expr) << value.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%1, expected);\n"\
" if (qIsNaN(expected)) {\n"
@@ -469,7 +470,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<QScriptValue>(\"other\");\n"\
" QTest::addColumn<bool>(\"expected\");\n"\
@@ -477,7 +478,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
"}\n"\
"\n"\
"static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char *expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char *expr)\n"\
"{\n"\
" static QSet<QString> equals;\n"\
" if (equals.isEmpty()) {\n"\
@@ -492,7 +493,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
" }\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char *, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char *, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(QScriptValue, other);\n"\
" QFETCH(bool, expected);\n"\
@@ -520,7 +521,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
static QString generateInitDef(const QVector<QString>& allDataTags)
{
- static const QString templ = "void tst_QScriptValue::initScriptValues()\n"\
+ static const QString templ = "void tst_QScriptValueGenerated::initScriptValues()\n"\
"{\n"\
" m_values.clear();\n"\
" if (engine)\n"\
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.h b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.h
index 1c61fc55dd..1c61fc55dd 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.h
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.h
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp
new file mode 100644
index 0000000000..962a2af14f
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+#include <QtGui/QPushButton>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_BEGIN_NAMESPACE
+extern bool qt_script_isJITEnabled();
+QT_END_NAMESPACE
+
+tst_QScriptValueGenerated::tst_QScriptValueGenerated()
+ : engine(0)
+{
+}
+
+tst_QScriptValueGenerated::~tst_QScriptValueGenerated()
+{
+ delete engine;
+}
+
+void tst_QScriptValueGenerated::dataHelper(InitDataFunction init, DefineDataFunction define)
+{
+ QTest::addColumn<QString>("__expression__");
+ (this->*init)();
+ QHash<QString,QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ m_currentExpression = it.key();
+ (this->*define)(it.key().toLatin1());
+ }
+ m_currentExpression = QString();
+}
+
+QTestData &tst_QScriptValueGenerated::newRow(const char *tag)
+{
+ return QTest::newRow(tag) << m_currentExpression;
+}
+
+void tst_QScriptValueGenerated::testHelper(TestFunction fun)
+{
+ QFETCH(QString, __expression__);
+ QScriptValue value = m_values.value(__expression__);
+ (this->*fun)(__expression__.toLatin1(), value);
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_initData()
+{
+ QTest::addColumn<int>("dummy");
+ initScriptValues();
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_makeData(const char *expr)
+{
+ newRow(expr) << 0;
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
+{
+ QScriptValue copy(value);
+ QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
+ QCOMPARE(copy.engine(), value.engine());
+
+ QScriptValue assigned = copy;
+ QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
+ QCOMPARE(assigned.engine(), assigned.engine());
+
+ QScriptValue other(!value.toBool());
+ assigned = other;
+ QVERIFY(!assigned.strictlyEquals(copy));
+ QVERIFY(assigned.strictlyEquals(other));
+ QCOMPARE(assigned.engine(), other.engine());
+}
+
+DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
+
+QTEST_MAIN(tst_QScriptValueGenerated)
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h
new file mode 100644
index 0000000000..8248ef3b42
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h
@@ -0,0 +1,370 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TST_QSCRIPTVALUE_H
+#define TST_QSCRIPTVALUE_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qnumeric.h>
+#include <QtScript/qscriptclass.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtTest/QtTest>
+
+#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QScriptValue)
+
+class tst_QScriptValueGenerated : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QScriptValueGenerated();
+ virtual ~tst_QScriptValueGenerated();
+
+private slots:
+ // Generated test functions
+ void isArray_data();
+ void isArray();
+
+ void isBool_data();
+ void isBool();
+
+ void isBoolean_data();
+ void isBoolean();
+
+ void isDate_data();
+ void isDate();
+
+ void isError_data();
+ void isError();
+
+ void isFunction_data();
+ void isFunction();
+
+ void isNull_data();
+ void isNull();
+
+ void isNumber_data();
+ void isNumber();
+
+ void isObject_data();
+ void isObject();
+
+ void isQMetaObject_data();
+ void isQMetaObject();
+
+ void isQObject_data();
+ void isQObject();
+
+ void isRegExp_data();
+ void isRegExp();
+
+ void isString_data();
+ void isString();
+
+ void isUndefined_data();
+ void isUndefined();
+
+ void isValid_data();
+ void isValid();
+
+ void isVariant_data();
+ void isVariant();
+
+ void toBool_data();
+ void toBool();
+
+ void toBoolean_data();
+ void toBoolean();
+
+// void toDateTime_data();
+// void toDateTime();
+
+ void toInt32_data();
+ void toInt32();
+
+ void toInteger_data();
+ void toInteger();
+
+ void toNumber_data();
+ void toNumber();
+
+// void toQMetaObject_data();
+// void toQMetaObject();
+
+// void toQObject_data();
+// void toQObject();
+
+// void toRegExp_data();
+// void toRegExp();
+
+ void toString_data();
+ void toString();
+
+ void toUInt16_data();
+ void toUInt16();
+
+ void toUInt32_data();
+ void toUInt32();
+
+// void toVariant_data();
+// void toVariant();
+
+ void equals_data();
+ void equals();
+
+ void strictlyEquals_data();
+ void strictlyEquals();
+
+ void lessThan_data();
+ void lessThan();
+
+ void instanceOf_data();
+ void instanceOf();
+
+ void assignAndCopyConstruct_data();
+ void assignAndCopyConstruct();
+
+ void qscriptvalue_castQString_data();
+ void qscriptvalue_castQString();
+
+ void qscriptvalue_castqsreal_data();
+ void qscriptvalue_castqsreal();
+
+ void qscriptvalue_castbool_data();
+ void qscriptvalue_castbool();
+
+ void qscriptvalue_castqint32_data();
+ void qscriptvalue_castqint32();
+
+ void qscriptvalue_castquint32_data();
+ void qscriptvalue_castquint32();
+
+ void qscriptvalue_castquint16_data();
+ void qscriptvalue_castquint16();
+
+private:
+ typedef void (tst_QScriptValueGenerated::*InitDataFunction)();
+ typedef void (tst_QScriptValueGenerated::*DefineDataFunction)(const char *);
+ void dataHelper(InitDataFunction init, DefineDataFunction define);
+ QTestData &newRow(const char *tag);
+
+ typedef void (tst_QScriptValueGenerated::*TestFunction)(const char *, const QScriptValue &);
+ void testHelper(TestFunction fun);
+
+ // Generated functions
+
+ void initScriptValues();
+
+ void isArray_initData();
+ void isArray_makeData(const char *expr);
+ void isArray_test(const char *expr, const QScriptValue &value);
+
+ void isBool_initData();
+ void isBool_makeData(const char *expr);
+ void isBool_test(const char *expr, const QScriptValue &value);
+
+ void isBoolean_initData();
+ void isBoolean_makeData(const char *expr);
+ void isBoolean_test(const char *expr, const QScriptValue &value);
+
+ void isDate_initData();
+ void isDate_makeData(const char *expr);
+ void isDate_test(const char *expr, const QScriptValue &value);
+
+ void isError_initData();
+ void isError_makeData(const char *expr);
+ void isError_test(const char *expr, const QScriptValue &value);
+
+ void isFunction_initData();
+ void isFunction_makeData(const char *expr);
+ void isFunction_test(const char *expr, const QScriptValue &value);
+
+ void isNull_initData();
+ void isNull_makeData(const char *expr);
+ void isNull_test(const char *expr, const QScriptValue &value);
+
+ void isNumber_initData();
+ void isNumber_makeData(const char *expr);
+ void isNumber_test(const char *expr, const QScriptValue &value);
+
+ void isObject_initData();
+ void isObject_makeData(const char *expr);
+ void isObject_test(const char *expr, const QScriptValue &value);
+
+ void isQMetaObject_initData();
+ void isQMetaObject_makeData(const char *expr);
+ void isQMetaObject_test(const char *expr, const QScriptValue &value);
+
+ void isQObject_initData();
+ void isQObject_makeData(const char *expr);
+ void isQObject_test(const char *expr, const QScriptValue &value);
+
+ void isRegExp_initData();
+ void isRegExp_makeData(const char *expr);
+ void isRegExp_test(const char *expr, const QScriptValue &value);
+
+ void isString_initData();
+ void isString_makeData(const char *expr);
+ void isString_test(const char *expr, const QScriptValue &value);
+
+ void isUndefined_initData();
+ void isUndefined_makeData(const char *expr);
+ void isUndefined_test(const char *expr, const QScriptValue &value);
+
+ void isValid_initData();
+ void isValid_makeData(const char *expr);
+ void isValid_test(const char *expr, const QScriptValue &value);
+
+ void isVariant_initData();
+ void isVariant_makeData(const char *expr);
+ void isVariant_test(const char *expr, const QScriptValue &value);
+
+ void toBool_initData();
+ void toBool_makeData(const char *);
+ void toBool_test(const char *, const QScriptValue &value);
+
+ void toBoolean_initData();
+ void toBoolean_makeData(const char *);
+ void toBoolean_test(const char *, const QScriptValue &value);
+
+ void toDateTime_initData();
+ void toDateTime_makeData(const char *);
+ void toDateTime_test(const char *, const QScriptValue &value);
+
+ void toInt32_initData();
+ void toInt32_makeData(const char *);
+ void toInt32_test(const char *, const QScriptValue &value);
+
+ void toInteger_initData();
+ void toInteger_makeData(const char *);
+ void toInteger_test(const char *, const QScriptValue &value);
+
+ void toNumber_initData();
+ void toNumber_makeData(const char *);
+ void toNumber_test(const char *, const QScriptValue &value);
+
+ void toQMetaObject_initData();
+ void toQMetaObject_makeData(const char *);
+ void toQMetaObject_test(const char *, const QScriptValue &value);
+
+ void toQObject_initData();
+ void toQObject_makeData(const char *);
+ void toQObject_test(const char *, const QScriptValue &value);
+
+ void toRegExp_initData();
+ void toRegExp_makeData(const char *);
+ void toRegExp_test(const char *, const QScriptValue &value);
+
+ void toString_initData();
+ void toString_makeData(const char *);
+ void toString_test(const char *, const QScriptValue &value);
+
+ void toUInt16_initData();
+ void toUInt16_makeData(const char *);
+ void toUInt16_test(const char *, const QScriptValue &value);
+
+ void toUInt32_initData();
+ void toUInt32_makeData(const char *);
+ void toUInt32_test(const char *, const QScriptValue &value);
+
+ void toVariant_initData();
+ void toVariant_makeData(const char *);
+ void toVariant_test(const char *, const QScriptValue &value);
+
+ void equals_initData();
+ void equals_makeData(const char *);
+ void equals_test(const char *, const QScriptValue &value);
+
+ void strictlyEquals_initData();
+ void strictlyEquals_makeData(const char *);
+ void strictlyEquals_test(const char *, const QScriptValue &value);
+
+ void lessThan_initData();
+ void lessThan_makeData(const char *);
+ void lessThan_test(const char *, const QScriptValue &value);
+
+ void instanceOf_initData();
+ void instanceOf_makeData(const char *);
+ void instanceOf_test(const char *, const QScriptValue &value);
+
+ void assignAndCopyConstruct_initData();
+ void assignAndCopyConstruct_makeData(const char *);
+ void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castQString_initData();
+ void qscriptvalue_castQString_makeData(const char *);
+ void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqsreal_initData();
+ void qscriptvalue_castqsreal_makeData(const char *);
+ void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castbool_initData();
+ void qscriptvalue_castbool_makeData(const char *);
+ void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqint32_initData();
+ void qscriptvalue_castqint32_makeData(const char *);
+ void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint32_initData();
+ void qscriptvalue_castquint32_makeData(const char *);
+ void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint16_initData();
+ void qscriptvalue_castquint16_makeData(const char *);
+ void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
+
+private:
+ QScriptEngine *engine;
+ QHash<QString, QScriptValue> m_values;
+ QString m_currentExpression;
+};
+
+#define DEFINE_TEST_FUNCTION(name) \
+void tst_QScriptValueGenerated::name##_data() { dataHelper(&tst_QScriptValueGenerated::name##_initData, &tst_QScriptValueGenerated::name##_makeData); } \
+void tst_QScriptValueGenerated::name() { testHelper(&tst_QScriptValueGenerated::name##_test); }
+
+#endif
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
index e6518100bc..2353116269 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
@@ -47,13 +47,13 @@
-void tst_QScriptValue::qscriptvalue_castQString_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castQString_initData()
{
QTest::addColumn<QString>("expected");
initScriptValues();
}
-static QString qscriptvalue_castQString_tagArray [] = {
+static QString qscriptvalue_castQString_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -157,6 +157,11 @@ static QString qscriptvalue_castQString_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -191,95 +196,99 @@ static QString qscriptvalue_castQString_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static QString qscriptvalue_castQString_valueArray [] = {
- "", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "", "",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "", "",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "", "QScriptEngine(name = \"\")", };
-void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static QString qscriptvalue_castQString_valueArray[] = {
+ "", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "",
+ "", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "", "QScriptEngine(name = \"\")"};
+void tst_QScriptValueGenerated::qscriptvalue_castQString_makeData(const char* expr)
{
static QHash<QString, QString> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castQString_tagArray[i], qscriptvalue_castQString_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
{
QFETCH(QString, expected);
QCOMPARE(qscriptvalue_cast<QString>(value), expected);
@@ -289,13 +298,13 @@ void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptV
DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
-void tst_QScriptValue::qscriptvalue_castqsreal_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_initData()
{
QTest::addColumn<qsreal>("expected");
initScriptValues();
}
-static QString qscriptvalue_castqsreal_tagArray [] = {
+static QString qscriptvalue_castqsreal_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -399,6 +408,11 @@ static QString qscriptvalue_castqsreal_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -433,39 +447,40 @@ static QString qscriptvalue_castqsreal_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal qscriptvalue_castqsreal_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
-void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static qsreal qscriptvalue_castqsreal_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_makeData(const char* expr)
{
static QHash<QString, qsreal> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castqsreal_tagArray[i], qscriptvalue_castqsreal_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
{
QFETCH(qsreal, expected);
if (qIsNaN(expected)) {
@@ -485,13 +500,13 @@ void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptVa
DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
-void tst_QScriptValue::qscriptvalue_castbool_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castbool_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString qscriptvalue_castbool_tagArray [] = {
+static QString qscriptvalue_castbool_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -595,6 +610,11 @@ static QString qscriptvalue_castbool_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -629,95 +649,99 @@ static QString qscriptvalue_castbool_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static bool qscriptvalue_castbool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
-void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static bool qscriptvalue_castbool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
+void tst_QScriptValueGenerated::qscriptvalue_castbool_makeData(const char* expr)
{
static QHash<QString, bool> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castbool_tagArray[i], qscriptvalue_castbool_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(qscriptvalue_cast<bool>(value), expected);
@@ -727,13 +751,13 @@ void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValu
DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
-void tst_QScriptValue::qscriptvalue_castqint32_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_initData()
{
QTest::addColumn<qint32>("expected");
initScriptValues();
}
-static QString qscriptvalue_castqint32_tagArray [] = {
+static QString qscriptvalue_castqint32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -837,6 +861,11 @@ static QString qscriptvalue_castqint32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -871,95 +900,99 @@ static QString qscriptvalue_castqint32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qint32 qscriptvalue_castqint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static qint32 qscriptvalue_castqint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_makeData(const char* expr)
{
static QHash<QString, qint32> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castqint32_tagArray[i], qscriptvalue_castqint32_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
{
QFETCH(qint32, expected);
QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
@@ -969,13 +1002,13 @@ void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptVa
DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
-void tst_QScriptValue::qscriptvalue_castquint32_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_initData()
{
QTest::addColumn<quint32>("expected");
initScriptValues();
}
-static QString qscriptvalue_castquint32_tagArray [] = {
+static QString qscriptvalue_castquint32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1079,6 +1112,11 @@ static QString qscriptvalue_castquint32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1113,95 +1151,99 @@ static QString qscriptvalue_castquint32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint32 qscriptvalue_castquint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static quint32 qscriptvalue_castquint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_makeData(const char* expr)
{
static QHash<QString, quint32> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castquint32_tagArray[i], qscriptvalue_castquint32_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
{
QFETCH(quint32, expected);
QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
@@ -1211,13 +1253,13 @@ void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptV
DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
-void tst_QScriptValue::qscriptvalue_castquint16_initData()
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_initData()
{
QTest::addColumn<quint16>("expected");
initScriptValues();
}
-static QString qscriptvalue_castquint16_tagArray [] = {
+static QString qscriptvalue_castquint16_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1321,6 +1363,11 @@ static QString qscriptvalue_castquint16_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1355,95 +1402,99 @@ static QString qscriptvalue_castquint16_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint16 qscriptvalue_castquint16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static quint16 qscriptvalue_castquint16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_makeData(const char* expr)
{
static QHash<QString, quint16> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castquint16_tagArray[i], qscriptvalue_castquint16_valueArray[i]);
}
newRow(expr) << value.value(expr);
}
-void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
{
QFETCH(quint16, expected);
QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
index 6e1f8ee8db..f8a6cdad9c 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
@@ -47,14 +47,14 @@
-void tst_QScriptValue::equals_initData()
+void tst_QScriptValueGenerated::equals_initData()
{
QTest::addColumn<QScriptValue>("other");
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString equals_array [] = {
+static QString equals_array[] = {
"QScriptValue() <=> QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
@@ -83,6 +83,7 @@ static QString equals_array [] = {
"QScriptValue(true) <=> QScriptValue(true)",
"QScriptValue(true) <=> QScriptValue(0, true)",
"QScriptValue(true) <=> QScriptValue(engine, true)",
+ "QScriptValue(true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(true) <=> engine->evaluate(\"true\")",
"QScriptValue(false) <=> QScriptValue(false)",
"QScriptValue(false) <=> QScriptValue(0)",
@@ -105,6 +106,7 @@ static QString equals_array [] = {
"QScriptValue(false) <=> engine->evaluate(\"[]\")",
"QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(false) <=> engine->evaluate(\"false\")",
"QScriptValue(false) <=> engine->evaluate(\"0\")",
"QScriptValue(false) <=> engine->evaluate(\"0.0\")",
@@ -141,6 +143,7 @@ static QString equals_array [] = {
"QScriptValue(0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0) <=> engine->evaluate(\"false\")",
"QScriptValue(0) <=> engine->evaluate(\"0\")",
"QScriptValue(0) <=> engine->evaluate(\"0.0\")",
@@ -169,6 +172,7 @@ static QString equals_array [] = {
"QScriptValue(0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
@@ -182,6 +186,7 @@ static QString equals_array [] = {
"QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(123.0) <=> engine->newVariant(QVariant(123))",
@@ -242,6 +247,7 @@ static QString equals_array [] = {
"QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -249,6 +255,7 @@ static QString equals_array [] = {
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(QString(\"\")) <=> QScriptValue(0)",
@@ -268,6 +275,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -292,6 +300,7 @@ static QString equals_array [] = {
"QScriptValue(QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(QString()) <=> engine->evaluate(\"0.0\")",
@@ -310,6 +319,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -321,6 +331,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -353,6 +364,7 @@ static QString equals_array [] = {
"QScriptValue(0, true) <=> QScriptValue(true)",
"QScriptValue(0, true) <=> QScriptValue(0, true)",
"QScriptValue(0, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(0, true) <=> engine->evaluate(\"true\")",
"QScriptValue(0, false) <=> QScriptValue(false)",
"QScriptValue(0, false) <=> QScriptValue(0)",
@@ -375,6 +387,7 @@ static QString equals_array [] = {
"QScriptValue(0, false) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, false) <=> engine->evaluate(\"false\")",
"QScriptValue(0, false) <=> engine->evaluate(\"0\")",
"QScriptValue(0, false) <=> engine->evaluate(\"0.0\")",
@@ -411,6 +424,7 @@ static QString equals_array [] = {
"QScriptValue(0, 0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"false\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
@@ -439,6 +453,7 @@ static QString equals_array [] = {
"QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
@@ -452,6 +467,7 @@ static QString equals_array [] = {
"QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))",
@@ -512,6 +528,7 @@ static QString equals_array [] = {
"QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -519,6 +536,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(0, QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(0, QString(\"\")) <=> QScriptValue(0)",
@@ -538,6 +556,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -562,6 +581,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")",
@@ -580,6 +600,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -591,6 +612,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -622,6 +644,7 @@ static QString equals_array [] = {
"QScriptValue(engine, true) <=> QScriptValue(true)",
"QScriptValue(engine, true) <=> QScriptValue(0, true)",
"QScriptValue(engine, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, false) <=> QScriptValue(false)",
"QScriptValue(engine, false) <=> QScriptValue(0)",
@@ -644,6 +667,7 @@ static QString equals_array [] = {
"QScriptValue(engine, false) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")",
@@ -680,6 +704,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
@@ -708,6 +733,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
@@ -721,6 +747,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))",
@@ -781,6 +808,7 @@ static QString equals_array [] = {
"QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -788,6 +816,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)",
@@ -807,6 +836,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -831,6 +861,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")",
@@ -849,6 +880,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -860,6 +892,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -950,6 +983,53 @@ static QString equals_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
@@ -982,6 +1062,7 @@ static QString equals_array [] = {
"engine->evaluate(\"true\") <=> QScriptValue(true)",
"engine->evaluate(\"true\") <=> QScriptValue(0, true)",
"engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Boolean(true)\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"false\") <=> QScriptValue(false)",
"engine->evaluate(\"false\") <=> QScriptValue(0)",
@@ -1004,6 +1085,7 @@ static QString equals_array [] = {
"engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")",
@@ -1040,6 +1122,7 @@ static QString equals_array [] = {
"engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
@@ -1068,6 +1151,7 @@ static QString equals_array [] = {
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
@@ -1081,6 +1165,7 @@ static QString equals_array [] = {
"engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))",
"engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
"engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")",
"engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))",
@@ -1124,6 +1209,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
"engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"''\") <=> QScriptValue(false)",
"engine->evaluate(\"''\") <=> QScriptValue(0)",
@@ -1143,6 +1229,7 @@ static QString equals_array [] = {
"engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")",
@@ -1161,6 +1248,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)",
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)",
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")",
@@ -1172,6 +1260,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
"engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)",
"engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
"engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))",
@@ -1225,6 +1314,7 @@ static QString equals_array [] = {
"engine->newArray(10) <=> engine->newArray(10)",
"engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))",
@@ -1271,14 +1361,14 @@ static QString equals_array [] = {
"engine->newQObject(0) <=> engine->nullValue()",
"engine->newQObject(0) <=> engine->undefinedValue()",
"engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
-void tst_QScriptValue::equals_makeData(const char *expr)
+void tst_QScriptValueGenerated::equals_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(1217);
- for (unsigned i = 0; i < 1217; ++i)
+ equals.reserve(1307);
+ for (unsigned i = 0; i < 1307; ++i)
equals.insert(equals_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -1288,7 +1378,7 @@ void tst_QScriptValue::equals_makeData(const char *expr)
}
}
-void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
+void tst_QScriptValueGenerated::equals_test(const char *, const QScriptValue& value)
{
QFETCH(QScriptValue, other);
QFETCH(bool, expected);
@@ -1298,14 +1388,14 @@ void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
DEFINE_TEST_FUNCTION(equals)
-void tst_QScriptValue::strictlyEquals_initData()
+void tst_QScriptValueGenerated::strictlyEquals_initData()
{
QTest::addColumn<QScriptValue>("other");
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString strictlyEquals_array [] = {
+static QString strictlyEquals_array[] = {
"QScriptValue() <=> QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
@@ -1697,6 +1787,11 @@ static QString strictlyEquals_array [] = {
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
@@ -1819,6 +1914,7 @@ static QString strictlyEquals_array [] = {
"engine->newArray(10) <=> engine->newArray(10)",
"engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
@@ -1828,14 +1924,14 @@ static QString strictlyEquals_array [] = {
"engine->newQObject(0) <=> engine->evaluate(\"null\")",
"engine->newQObject(0) <=> engine->nullValue()",
"engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
-void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
+void tst_QScriptValueGenerated::strictlyEquals_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(523);
- for (unsigned i = 0; i < 523; ++i)
+ equals.reserve(529);
+ for (unsigned i = 0; i < 529; ++i)
equals.insert(strictlyEquals_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -1845,7 +1941,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
}
}
-void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& value)
+void tst_QScriptValueGenerated::strictlyEquals_test(const char *, const QScriptValue& value)
{
QFETCH(QScriptValue, other);
QFETCH(bool, expected);
@@ -1855,14 +1951,14 @@ void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& val
DEFINE_TEST_FUNCTION(strictlyEquals)
-void tst_QScriptValue::lessThan_initData()
+void tst_QScriptValueGenerated::lessThan_initData()
{
QTest::addColumn<QScriptValue>("other");
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString lessThan_array [] = {
+static QString lessThan_array[] = {
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))",
@@ -1899,6 +1995,8 @@ static QString lessThan_array [] = {
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -1942,6 +2040,7 @@ static QString lessThan_array [] = {
"QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(true) <=> engine->evaluate(\"122\")",
"QScriptValue(true) <=> engine->evaluate(\"124\")",
@@ -1989,6 +2088,8 @@ static QString lessThan_array [] = {
"QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(false) <=> engine->evaluate(\"true\")",
"QScriptValue(false) <=> engine->evaluate(\"122\")",
@@ -2026,6 +2127,7 @@ static QString lessThan_array [] = {
"QScriptValue(int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -2089,6 +2191,8 @@ static QString lessThan_array [] = {
"QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0) <=> engine->evaluate(\"true\")",
"QScriptValue(0) <=> engine->evaluate(\"122\")",
@@ -2138,6 +2242,8 @@ static QString lessThan_array [] = {
"QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(0.0) <=> engine->evaluate(\"122\")",
@@ -2207,6 +2313,8 @@ static QString lessThan_array [] = {
"QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")",
@@ -2279,6 +2387,9 @@ static QString lessThan_array [] = {
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")",
@@ -2398,6 +2509,9 @@ static QString lessThan_array [] = {
"QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"true\")",
@@ -2438,6 +2552,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")",
@@ -2465,6 +2580,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")",
@@ -2549,6 +2665,11 @@ static QString lessThan_array [] = {
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -2575,6 +2696,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"-Infinity\") <=> engine->nullValue()",
"QScriptValue(\"-Infinity\") <=> engine->newObject()",
"QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(\"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(\"-Infinity\") <=> engine->newQObject(0)",
@@ -2659,6 +2781,10 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -2680,6 +2806,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"\")) <=> engine->newObject()",
"QScriptValue(QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(QString()) <=> QScriptValue(true)",
@@ -2746,6 +2873,10 @@ static QString lessThan_array [] = {
"QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Null\")",
@@ -2767,6 +2898,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString()) <=> engine->newObject()",
"QScriptValue(QString()) <=> engine->newArray(10)",
"QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(QString()) <=> engine->newQObject(engine)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(true)",
@@ -2826,6 +2958,9 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -2886,6 +3021,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -2947,6 +3083,8 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")",
@@ -3001,6 +3139,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -3044,6 +3184,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, true) <=> engine->evaluate(\"122\")",
"QScriptValue(0, true) <=> engine->evaluate(\"124\")",
@@ -3091,6 +3232,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, false) <=> engine->evaluate(\"true\")",
"QScriptValue(0, false) <=> engine->evaluate(\"122\")",
@@ -3128,6 +3271,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -3191,6 +3335,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"122\")",
@@ -3240,6 +3386,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")",
@@ -3309,6 +3457,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")",
@@ -3381,6 +3531,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")",
@@ -3500,6 +3653,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")",
@@ -3540,6 +3696,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")",
@@ -3567,6 +3724,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")",
@@ -3651,6 +3809,11 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -3677,6 +3840,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"-Infinity\") <=> engine->nullValue()",
"QScriptValue(0, \"-Infinity\") <=> engine->newObject()",
"QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)",
@@ -3761,6 +3925,10 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -3782,6 +3950,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->newObject()",
"QScriptValue(0, QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(0, QString()) <=> QScriptValue(true)",
@@ -3848,6 +4017,10 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")",
@@ -3869,6 +4042,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString()) <=> engine->newObject()",
"QScriptValue(0, QString()) <=> engine->newArray(10)",
"QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, QString()) <=> engine->newQObject(engine)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)",
@@ -3928,6 +4102,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -3988,6 +4165,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -4050,6 +4228,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")",
@@ -4105,6 +4285,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -4148,6 +4330,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"122\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"124\")",
@@ -4195,6 +4378,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"122\")",
@@ -4232,6 +4417,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -4295,6 +4481,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"122\")",
@@ -4344,6 +4532,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")",
@@ -4413,6 +4603,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")",
@@ -4485,6 +4677,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")",
@@ -4604,6 +4799,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")",
@@ -4644,6 +4842,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")",
@@ -4671,6 +4870,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")",
@@ -4755,6 +4955,11 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -4781,6 +4986,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()",
"QScriptValue(engine, \"-Infinity\") <=> engine->newObject()",
"QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)",
@@ -4865,6 +5071,10 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -4886,6 +5096,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->newObject()",
"QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(engine, QString()) <=> QScriptValue(true)",
@@ -4952,6 +5163,10 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")",
@@ -4973,6 +5188,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString()) <=> engine->newObject()",
"QScriptValue(engine, QString()) <=> engine->newArray(10)",
"QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, QString()) <=> engine->newQObject(engine)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)",
@@ -5032,6 +5248,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -5092,6 +5311,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -5155,6 +5375,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")",
@@ -5238,6 +5460,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")",
@@ -5259,6 +5485,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"[]\") <=> engine->newObject()",
"engine->evaluate(\"[]\") <=> engine->newArray(10)",
"engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"[]\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"[]\") <=> engine->newQObject(engine)",
"engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")",
@@ -5275,6 +5502,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)",
@@ -5341,6 +5569,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")",
@@ -5362,6 +5594,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Array.prototype\") <=> engine->newObject()",
"engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)",
"engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)",
"engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
@@ -5393,6 +5626,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")",
@@ -5455,6 +5689,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")",
@@ -5465,6 +5701,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")",
"engine->evaluate(\"/foo/\") <=> engine->newObject()",
"engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"/foo/\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)",
"engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")",
"engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -5480,6 +5717,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"new Array()\") <=> QScriptValue(true)",
@@ -5546,6 +5784,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")",
@@ -5567,6 +5809,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->newObject()",
"engine->evaluate(\"new Array()\") <=> engine->newArray(10)",
"engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new Array()\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)",
"engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")",
@@ -5591,6 +5834,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")",
@@ -5599,6 +5843,175 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Error()\") <=> engine->newObject()",
"engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newObject()",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)",
@@ -5626,6 +6039,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")",
@@ -5651,6 +6065,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"Undefined\") <=> engine->newObject()",
"engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
@@ -5670,6 +6085,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")",
@@ -5691,6 +6107,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"True\") <=> engine->newObject()",
@@ -5711,6 +6128,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"True\")",
@@ -5753,6 +6171,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"122\")",
@@ -5796,6 +6216,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"122\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"124\")",
@@ -5843,6 +6264,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"122\")",
@@ -5880,6 +6303,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())",
"engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"124\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")",
@@ -5943,6 +6367,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"122\")",
@@ -5992,6 +6418,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")",
@@ -6061,6 +6489,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")",
@@ -6133,6 +6563,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")",
@@ -6252,6 +6685,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")",
@@ -6348,6 +6784,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")",
@@ -6369,6 +6809,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"''\") <=> engine->newObject()",
"engine->evaluate(\"''\") <=> engine->newArray(10)",
"engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"''\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"''\") <=> engine->newQObject(engine)",
"engine->evaluate(\"'0'\") <=> QScriptValue(true)",
@@ -6428,6 +6869,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")",
@@ -6488,6 +6932,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")",
@@ -6549,6 +6994,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")",
@@ -6603,6 +7050,8 @@ static QString lessThan_array [] = {
"engine->nullValue() <=> QScriptValue(engine, \"Infinity\")",
"engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))",
"engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->nullValue() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->nullValue() <=> engine->evaluate(\"new Number(123)\")",
"engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->nullValue() <=> engine->evaluate(\"true\")",
"engine->nullValue() <=> engine->evaluate(\"122\")",
@@ -6630,6 +7079,7 @@ static QString lessThan_array [] = {
"engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newObject() <=> engine->evaluate(\"new String('ciao')\")",
"engine->newObject() <=> engine->evaluate(\"'ciao'\")",
"engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->newArray() <=> QScriptValue(true)",
@@ -6696,6 +7146,10 @@ static QString lessThan_array [] = {
"engine->newArray() <=> engine->evaluate(\"/foo/\")",
"engine->newArray() <=> engine->evaluate(\"new Object()\")",
"engine->newArray() <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newArray() <=> engine->evaluate(\"new Number(123)\")",
+ "engine->newArray() <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray() <=> engine->evaluate(\"new String('ciao')\")",
"engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newArray() <=> engine->evaluate(\"Undefined\")",
"engine->newArray() <=> engine->evaluate(\"Null\")",
@@ -6717,6 +7171,7 @@ static QString lessThan_array [] = {
"engine->newArray() <=> engine->newObject()",
"engine->newArray() <=> engine->newArray(10)",
"engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray() <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newArray() <=> engine->newVariant(QVariant(123))",
"engine->newArray() <=> engine->newQObject(engine)",
"engine->newArray(10) <=> QScriptValue(\"NaN\")",
@@ -6756,6 +7211,8 @@ static QString lessThan_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"/foo/\")",
"engine->newArray(10) <=> engine->evaluate(\"new Object()\")",
"engine->newArray(10) <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newArray(10) <=> engine->evaluate(\"Undefined\")",
"engine->newArray(10) <=> engine->evaluate(\"Null\")",
"engine->newArray(10) <=> engine->evaluate(\"True\")",
@@ -6766,6 +7223,7 @@ static QString lessThan_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"'12.4'\")",
"engine->newArray(10) <=> engine->newObject()",
"engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray(10) <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newArray(10) <=> engine->newQObject(engine)",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -6781,7 +7239,53 @@ static QString lessThan_array [] = {
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Array\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Number\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Object()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Error()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Undefined\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Null\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"True\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"False\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'0'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'123'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newObject()",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQObject(engine)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))",
"engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)",
@@ -6841,6 +7345,8 @@ static QString lessThan_array [] = {
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")",
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))",
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Number(123)\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")",
@@ -6890,6 +7396,8 @@ static QString lessThan_array [] = {
"engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")",
"engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))",
"engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Number(123)\")",
"engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newQObject(0) <=> engine->evaluate(\"true\")",
"engine->newQObject(0) <=> engine->evaluate(\"122\")",
@@ -6919,20 +7427,21 @@ static QString lessThan_array [] = {
"engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")",
"engine->newQObject(engine) <=> engine->evaluate(\"Null\")",
"engine->newQObject(engine) <=> engine->evaluate(\"True\")",
"engine->newQObject(engine) <=> engine->evaluate(\"False\")",
"engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")",
"engine->newQObject(engine) <=> engine->newObject()",
- "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)",};
+ "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)"};
-void tst_QScriptValue::lessThan_makeData(const char *expr)
+void tst_QScriptValueGenerated::lessThan_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(5063);
- for (unsigned i = 0; i < 5063; ++i)
+ equals.reserve(5476);
+ for (unsigned i = 0; i < 5476; ++i)
equals.insert(lessThan_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -6942,7 +7451,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
}
}
-void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
+void tst_QScriptValueGenerated::lessThan_test(const char *, const QScriptValue& value)
{
QFETCH(QScriptValue, other);
QFETCH(bool, expected);
@@ -6952,14 +7461,14 @@ void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
DEFINE_TEST_FUNCTION(lessThan)
-void tst_QScriptValue::instanceOf_initData()
+void tst_QScriptValueGenerated::instanceOf_initData()
{
QTest::addColumn<QScriptValue>("other");
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString instanceOf_array [] = {
+static QString instanceOf_array[] = {
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
"engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")",
@@ -6985,6 +7494,12 @@ static QString instanceOf_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
@@ -6996,17 +7511,18 @@ static QString instanceOf_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"Array\")",
"engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",};
+ "engine->newQObject(engine) <=> engine->evaluate(\"Object\")"};
-void tst_QScriptValue::instanceOf_makeData(const char *expr)
+void tst_QScriptValueGenerated::instanceOf_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(40);
- for (unsigned i = 0; i < 40; ++i)
+ equals.reserve(47);
+ for (unsigned i = 0; i < 47; ++i)
equals.insert(instanceOf_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -7016,7 +7532,7 @@ void tst_QScriptValue::instanceOf_makeData(const char *expr)
}
}
-void tst_QScriptValue::instanceOf_test(const char *, const QScriptValue& value)
+void tst_QScriptValueGenerated::instanceOf_test(const char *, const QScriptValue& value)
{
QFETCH(QScriptValue, other);
QFETCH(bool, expected);
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
index a9eb2cad87..ae40684a51 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
@@ -46,10 +46,10 @@
#include "tst_qscriptvalue.h"
-void tst_QScriptValue::initScriptValues()
+void tst_QScriptValueGenerated::initScriptValues()
{
m_values.clear();
- if (engine)
+ if (engine)
delete engine;
engine = new QScriptEngine;
DEFINE_TEST_VALUE(QScriptValue());
@@ -155,6 +155,11 @@ void tst_QScriptValue::initScriptValues()
DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(true)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(false)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Number(123)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new RegExp('foo', 'gim')"));
+ DEFINE_TEST_VALUE(engine->evaluate("new String('ciao')"));
DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo"));
DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
DEFINE_TEST_VALUE(engine->evaluate("Null"));
@@ -189,6 +194,7 @@ void tst_QScriptValue::initScriptValues()
DEFINE_TEST_VALUE(engine->newArray(10));
DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
+ DEFINE_TEST_VALUE(engine->newRegExp("foo", "gim"));
DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
index 106043b19f..26b8c62451 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
@@ -46,13 +46,13 @@
#include "tst_qscriptvalue.h"
-void tst_QScriptValue::isValid_initData()
+void tst_QScriptValueGenerated::isValid_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isValid_array [] = {
+static QString isValid_array[] = {
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
"QScriptValue(true)",
@@ -155,6 +155,11 @@ static QString isValid_array [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -189,24 +194,26 @@ static QString isValid_array [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"
+};
-void tst_QScriptValue::isValid_makeData(const char* expr)
+void tst_QScriptValueGenerated::isValid_makeData(const char* expr)
{
static QSet<QString> isValid;
if (isValid.isEmpty()) {
- isValid.reserve(141);
- for (unsigned i = 0; i < 141; ++i)
+ isValid.reserve(147);
+ for (unsigned i = 0; i < 147; ++i)
isValid.insert(isValid_array[i]);
}
newRow(expr) << isValid.contains(expr);
}
-void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isValid_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isValid(), expected);
@@ -216,13 +223,13 @@ void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isValid)
-void tst_QScriptValue::isBool_initData()
+void tst_QScriptValueGenerated::isBool_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isBool_array [] = {
+static QString isBool_array[] = {
"QScriptValue(true)",
"QScriptValue(false)",
"QScriptValue(0, true)",
@@ -230,9 +237,10 @@ static QString isBool_array [] = {
"QScriptValue(engine, true)",
"QScriptValue(engine, false)",
"engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
+ "engine->evaluate(\"false\")"
+};
-void tst_QScriptValue::isBool_makeData(const char* expr)
+void tst_QScriptValueGenerated::isBool_makeData(const char* expr)
{
static QSet<QString> isBool;
if (isBool.isEmpty()) {
@@ -243,7 +251,7 @@ void tst_QScriptValue::isBool_makeData(const char* expr)
newRow(expr) << isBool.contains(expr);
}
-void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBool(), expected);
@@ -253,13 +261,13 @@ void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isBool)
-void tst_QScriptValue::isBoolean_initData()
+void tst_QScriptValueGenerated::isBoolean_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isBoolean_array [] = {
+static QString isBoolean_array[] = {
"QScriptValue(true)",
"QScriptValue(false)",
"QScriptValue(0, true)",
@@ -267,9 +275,10 @@ static QString isBoolean_array [] = {
"QScriptValue(engine, true)",
"QScriptValue(engine, false)",
"engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
+ "engine->evaluate(\"false\")"
+};
-void tst_QScriptValue::isBoolean_makeData(const char* expr)
+void tst_QScriptValueGenerated::isBoolean_makeData(const char* expr)
{
static QSet<QString> isBoolean;
if (isBoolean.isEmpty()) {
@@ -280,7 +289,7 @@ void tst_QScriptValue::isBoolean_makeData(const char* expr)
newRow(expr) << isBoolean.contains(expr);
}
-void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBoolean(), expected);
@@ -290,13 +299,13 @@ void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isBoolean)
-void tst_QScriptValue::isNumber_initData()
+void tst_QScriptValueGenerated::isNumber_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isNumber_array [] = {
+static QString isNumber_array[] = {
"QScriptValue(int(122))",
"QScriptValue(uint(124))",
"QScriptValue(0)",
@@ -352,9 +361,10 @@ static QString isNumber_array [] = {
"engine->evaluate(\"0x10001\")",
"engine->evaluate(\"NaN\")",
"engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",};
+ "engine->evaluate(\"-Infinity\")"
+};
-void tst_QScriptValue::isNumber_makeData(const char* expr)
+void tst_QScriptValueGenerated::isNumber_makeData(const char* expr)
{
static QSet<QString> isNumber;
if (isNumber.isEmpty()) {
@@ -365,7 +375,7 @@ void tst_QScriptValue::isNumber_makeData(const char* expr)
newRow(expr) << isNumber.contains(expr);
}
-void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isNumber_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNumber(), expected);
@@ -375,13 +385,13 @@ void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isNumber)
-void tst_QScriptValue::isFunction_initData()
+void tst_QScriptValueGenerated::isFunction_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isFunction_array [] = {
+static QString isFunction_array[] = {
"engine->evaluate(\"Function.prototype\")",
"engine->evaluate(\"Object\")",
"engine->evaluate(\"Array\")",
@@ -391,20 +401,23 @@ static QString isFunction_array [] = {
"engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"/foo/\")",
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
-void tst_QScriptValue::isFunction_makeData(const char* expr)
+void tst_QScriptValueGenerated::isFunction_makeData(const char* expr)
{
static QSet<QString> isFunction;
if (isFunction.isEmpty()) {
- isFunction.reserve(10);
- for (unsigned i = 0; i < 10; ++i)
+ isFunction.reserve(12);
+ for (unsigned i = 0; i < 12; ++i)
isFunction.insert(isFunction_array[i]);
}
newRow(expr) << isFunction.contains(expr);
}
-void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isFunction_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isFunction(), expected);
@@ -414,21 +427,22 @@ void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isFunction)
-void tst_QScriptValue::isNull_initData()
+void tst_QScriptValueGenerated::isNull_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isNull_array [] = {
+static QString isNull_array[] = {
"QScriptValue(QScriptValue::NullValue)",
"QScriptValue(0, QScriptValue::NullValue)",
"QScriptValue(engine, QScriptValue::NullValue)",
"engine->evaluate(\"null\")",
"engine->nullValue()",
- "engine->newQObject(0)",};
+ "engine->newQObject(0)"
+};
-void tst_QScriptValue::isNull_makeData(const char* expr)
+void tst_QScriptValueGenerated::isNull_makeData(const char* expr)
{
static QSet<QString> isNull;
if (isNull.isEmpty()) {
@@ -439,7 +453,7 @@ void tst_QScriptValue::isNull_makeData(const char* expr)
newRow(expr) << isNull.contains(expr);
}
-void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isNull_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNull(), expected);
@@ -449,13 +463,13 @@ void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isNull)
-void tst_QScriptValue::isString_initData()
+void tst_QScriptValueGenerated::isString_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isString_array [] = {
+static QString isString_array[] = {
"QScriptValue(\"NaN\")",
"QScriptValue(\"Infinity\")",
"QScriptValue(\"-Infinity\")",
@@ -490,9 +504,10 @@ static QString isString_array [] = {
"engine->evaluate(\"''\")",
"engine->evaluate(\"'0'\")",
"engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",};
+ "engine->evaluate(\"'12.4'\")"
+};
-void tst_QScriptValue::isString_makeData(const char* expr)
+void tst_QScriptValueGenerated::isString_makeData(const char* expr)
{
static QSet<QString> isString;
if (isString.isEmpty()) {
@@ -503,7 +518,7 @@ void tst_QScriptValue::isString_makeData(const char* expr)
newRow(expr) << isString.contains(expr);
}
-void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isString_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isString(), expected);
@@ -513,21 +528,22 @@ void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isString)
-void tst_QScriptValue::isUndefined_initData()
+void tst_QScriptValueGenerated::isUndefined_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isUndefined_array [] = {
+static QString isUndefined_array[] = {
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(0, QScriptValue::UndefinedValue)",
"QScriptValue(engine, QScriptValue::UndefinedValue)",
"engine->evaluate(\"{}\")",
"engine->evaluate(\"undefined\")",
- "engine->undefinedValue()",};
+ "engine->undefinedValue()"
+};
-void tst_QScriptValue::isUndefined_makeData(const char* expr)
+void tst_QScriptValueGenerated::isUndefined_makeData(const char* expr)
{
static QSet<QString> isUndefined;
if (isUndefined.isEmpty()) {
@@ -538,7 +554,7 @@ void tst_QScriptValue::isUndefined_makeData(const char* expr)
newRow(expr) << isUndefined.contains(expr);
}
-void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isUndefined_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isUndefined(), expected);
@@ -548,18 +564,19 @@ void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isUndefined)
-void tst_QScriptValue::isVariant_initData()
+void tst_QScriptValueGenerated::isVariant_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isVariant_array [] = {
+static QString isVariant_array[] = {
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",};
+ "engine->newVariant(QVariant(false))"
+};
-void tst_QScriptValue::isVariant_makeData(const char* expr)
+void tst_QScriptValueGenerated::isVariant_makeData(const char* expr)
{
static QSet<QString> isVariant;
if (isVariant.isEmpty()) {
@@ -570,7 +587,7 @@ void tst_QScriptValue::isVariant_makeData(const char* expr)
newRow(expr) << isVariant.contains(expr);
}
-void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isVariant_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isVariant(), expected);
@@ -580,16 +597,17 @@ void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isVariant)
-void tst_QScriptValue::isQObject_initData()
+void tst_QScriptValueGenerated::isQObject_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isQObject_array [] = {
- "engine->newQObject(engine)",};
+static QString isQObject_array[] = {
+ "engine->newQObject(engine)"
+};
-void tst_QScriptValue::isQObject_makeData(const char* expr)
+void tst_QScriptValueGenerated::isQObject_makeData(const char* expr)
{
static QSet<QString> isQObject;
if (isQObject.isEmpty()) {
@@ -600,7 +618,7 @@ void tst_QScriptValue::isQObject_makeData(const char* expr)
newRow(expr) << isQObject.contains(expr);
}
-void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isQObject_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isQObject(), expected);
@@ -610,16 +628,17 @@ void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isQObject)
-void tst_QScriptValue::isQMetaObject_initData()
+void tst_QScriptValueGenerated::isQMetaObject_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isQMetaObject_array [] = {
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
+static QString isQMetaObject_array[] = {
+ "engine->newQMetaObject(&QObject::staticMetaObject)"
+};
-void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
+void tst_QScriptValueGenerated::isQMetaObject_makeData(const char* expr)
{
static QSet<QString> isQMetaObject;
if (isQMetaObject.isEmpty()) {
@@ -630,7 +649,7 @@ void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
newRow(expr) << isQMetaObject.contains(expr);
}
-void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isQMetaObject_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isQMetaObject(), expected);
@@ -640,13 +659,13 @@ void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value
DEFINE_TEST_FUNCTION(isQMetaObject)
-void tst_QScriptValue::isObject_initData()
+void tst_QScriptValueGenerated::isObject_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isObject_array [] = {
+static QString isObject_array[] = {
"engine->evaluate(\"[]\")",
"engine->evaluate(\"Object.prototype\")",
"engine->evaluate(\"Date.prototype\")",
@@ -664,6 +683,11 @@ static QString isObject_array [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
"engine->evaluate(\"True\")",
@@ -673,23 +697,25 @@ static QString isObject_array [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"
+};
-void tst_QScriptValue::isObject_makeData(const char* expr)
+void tst_QScriptValueGenerated::isObject_makeData(const char* expr)
{
static QSet<QString> isObject;
if (isObject.isEmpty()) {
- isObject.reserve(30);
- for (unsigned i = 0; i < 30; ++i)
+ isObject.reserve(36);
+ for (unsigned i = 0; i < 36; ++i)
isObject.insert(isObject_array[i]);
}
newRow(expr) << isObject.contains(expr);
}
-void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isObject_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isObject(), expected);
@@ -699,17 +725,18 @@ void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isObject)
-void tst_QScriptValue::isDate_initData()
+void tst_QScriptValueGenerated::isDate_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isDate_array [] = {
+static QString isDate_array[] = {
"engine->evaluate(\"Date.prototype\")",
- "engine->newDate(QDateTime())",};
+ "engine->newDate(QDateTime())"
+};
-void tst_QScriptValue::isDate_makeData(const char* expr)
+void tst_QScriptValueGenerated::isDate_makeData(const char* expr)
{
static QSet<QString> isDate;
if (isDate.isEmpty()) {
@@ -720,7 +747,7 @@ void tst_QScriptValue::isDate_makeData(const char* expr)
newRow(expr) << isDate.contains(expr);
}
-void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isDate_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isDate(), expected);
@@ -730,27 +757,30 @@ void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isDate)
-void tst_QScriptValue::isRegExp_initData()
+void tst_QScriptValueGenerated::isRegExp_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isRegExp_array [] = {
- "engine->evaluate(\"/foo/\")",};
+static QString isRegExp_array[] = {
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
-void tst_QScriptValue::isRegExp_makeData(const char* expr)
+void tst_QScriptValueGenerated::isRegExp_makeData(const char* expr)
{
static QSet<QString> isRegExp;
if (isRegExp.isEmpty()) {
- isRegExp.reserve(1);
- for (unsigned i = 0; i < 1; ++i)
+ isRegExp.reserve(3);
+ for (unsigned i = 0; i < 3; ++i)
isRegExp.insert(isRegExp_array[i]);
}
newRow(expr) << isRegExp.contains(expr);
}
-void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isRegExp_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isRegExp(), expected);
@@ -760,20 +790,21 @@ void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isRegExp)
-void tst_QScriptValue::isArray_initData()
+void tst_QScriptValueGenerated::isArray_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isArray_array [] = {
+static QString isArray_array[] = {
"engine->evaluate(\"[]\")",
"engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"new Array()\")",
"engine->newArray()",
- "engine->newArray(10)",};
+ "engine->newArray(10)"
+};
-void tst_QScriptValue::isArray_makeData(const char* expr)
+void tst_QScriptValueGenerated::isArray_makeData(const char* expr)
{
static QSet<QString> isArray;
if (isArray.isEmpty()) {
@@ -784,7 +815,7 @@ void tst_QScriptValue::isArray_makeData(const char* expr)
newRow(expr) << isArray.contains(expr);
}
-void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isArray_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isArray(), expected);
@@ -794,21 +825,22 @@ void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(isArray)
-void tst_QScriptValue::isError_initData()
+void tst_QScriptValueGenerated::isError_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString isError_array [] = {
+static QString isError_array[] = {
"engine->evaluate(\"Error.prototype\")",
"engine->evaluate(\"new Error()\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
"engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",};
+ "engine->evaluate(\"False\")"
+};
-void tst_QScriptValue::isError_makeData(const char* expr)
+void tst_QScriptValueGenerated::isError_makeData(const char* expr)
{
static QSet<QString> isError;
if (isError.isEmpty()) {
@@ -819,7 +851,7 @@ void tst_QScriptValue::isError_makeData(const char* expr)
newRow(expr) << isError.contains(expr);
}
-void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::isError_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isError(), expected);
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
index 754f4e0b25..e663645a35 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
@@ -47,13 +47,13 @@
-void tst_QScriptValue::toString_initData()
+void tst_QScriptValueGenerated::toString_initData()
{
QTest::addColumn<QString>("expected");
initScriptValues();
}
-static QString toString_tagArray [] = {
+static QString toString_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -157,6 +157,11 @@ static QString toString_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -191,97 +196,101 @@ static QString toString_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static QString toString_valueArray [] = {
- "", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "undefined", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "undefined", "null",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "null", "undefined",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "null", "QScriptEngine(name = \"\")", };
+static QString toString_valueArray[] = {
+ "", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "undefined", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "null",
+ "undefined", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "null", "QScriptEngine(name = \"\")"};
-void tst_QScriptValue::toString_makeData(const char* expr)
+void tst_QScriptValueGenerated::toString_makeData(const char* expr)
{
static QHash<QString, QString> toString;
if (toString.isEmpty()) {
- toString.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toString.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toString.insert(toString_tagArray[i], toString_valueArray[i]);
}
newRow(expr) << toString.value(expr);
}
-void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toString_test(const char*, const QScriptValue& value)
{
QFETCH(QString, expected);
QCOMPARE(value.toString(), expected);
@@ -291,13 +300,13 @@ void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toString)
-void tst_QScriptValue::toNumber_initData()
+void tst_QScriptValueGenerated::toNumber_initData()
{
QTest::addColumn<qsreal>("expected");
initScriptValues();
}
-static QString toNumber_tagArray [] = {
+static QString toNumber_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -401,6 +410,11 @@ static QString toNumber_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -435,39 +449,40 @@ static QString toNumber_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toNumber_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
-void tst_QScriptValue::toNumber_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static qsreal toNumber_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
+void tst_QScriptValueGenerated::toNumber_makeData(const char* expr)
{
static QHash<QString, qsreal> toNumber;
if (toNumber.isEmpty()) {
- toNumber.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toNumber.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toNumber.insert(toNumber_tagArray[i], toNumber_valueArray[i]);
}
newRow(expr) << toNumber.value(expr);
}
-void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toNumber_test(const char*, const QScriptValue& value)
{
QFETCH(qsreal, expected);
if (qIsNaN(expected)) {
@@ -486,13 +501,13 @@ void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toNumber)
-void tst_QScriptValue::toBool_initData()
+void tst_QScriptValueGenerated::toBool_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString toBool_tagArray [] = {
+static QString toBool_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -596,6 +611,11 @@ static QString toBool_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -630,97 +650,101 @@ static QString toBool_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static bool toBool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
+static bool toBool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
-void tst_QScriptValue::toBool_makeData(const char* expr)
+void tst_QScriptValueGenerated::toBool_makeData(const char* expr)
{
static QHash<QString, bool> toBool;
if (toBool.isEmpty()) {
- toBool.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toBool.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toBool.insert(toBool_tagArray[i], toBool_valueArray[i]);
}
newRow(expr) << toBool.value(expr);
}
-void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBool(), expected);
@@ -730,13 +754,13 @@ void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toBool)
-void tst_QScriptValue::toBoolean_initData()
+void tst_QScriptValueGenerated::toBoolean_initData()
{
QTest::addColumn<bool>("expected");
initScriptValues();
}
-static QString toBoolean_tagArray [] = {
+static QString toBoolean_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -840,6 +864,11 @@ static QString toBoolean_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -874,97 +903,101 @@ static QString toBoolean_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static bool toBoolean_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
+static bool toBoolean_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
-void tst_QScriptValue::toBoolean_makeData(const char* expr)
+void tst_QScriptValueGenerated::toBoolean_makeData(const char* expr)
{
static QHash<QString, bool> toBoolean;
if (toBoolean.isEmpty()) {
- toBoolean.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toBoolean.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toBoolean.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]);
}
newRow(expr) << toBoolean.value(expr);
}
-void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBoolean(), expected);
@@ -974,13 +1007,13 @@ void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toBoolean)
-void tst_QScriptValue::toInteger_initData()
+void tst_QScriptValueGenerated::toInteger_initData()
{
QTest::addColumn<qsreal>("expected");
initScriptValues();
}
-static QString toInteger_tagArray [] = {
+static QString toInteger_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1084,6 +1117,11 @@ static QString toInteger_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1118,39 +1156,40 @@ static QString toInteger_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toInteger_valueArray [] = {
- 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
- 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
- qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
- 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
- 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
- 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
- 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
- 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
- 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 1, 0, 122, 124, 0, 0, 123, 0, 0, 1126240820,
- 65536, 65537, 0, qInf(), qInf(), 0, 0, 0, 123, 12,
- 0, 0, 0, 0, 0, 0, 0, 0, 123, 0,
- 0, 0, };
-void tst_QScriptValue::toInteger_makeData(const char* expr)
+ "engine->newQObject(engine)"};
+static qsreal toInteger_valueArray[] = {
+ 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
+ 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
+ qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
+ 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
+ 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
+ 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
+ 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
+ 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
+ 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 123, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 1, 0, 122, 124, 0,
+ 0, 123, 0, 0, 1126240820, 65536, 65537, 0, qInf(), qInf(),
+ 0, 0, 0, 123, 12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 123, 0, 0, 0};
+void tst_QScriptValueGenerated::toInteger_makeData(const char* expr)
{
static QHash<QString, qsreal> toInteger;
if (toInteger.isEmpty()) {
- toInteger.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toInteger.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toInteger.insert(toInteger_tagArray[i], toInteger_valueArray[i]);
}
newRow(expr) << toInteger.value(expr);
}
-void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toInteger_test(const char*, const QScriptValue& value)
{
QFETCH(qsreal, expected);
if (qIsInf(expected)) {
@@ -1165,13 +1204,13 @@ void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toInteger)
-void tst_QScriptValue::toInt32_initData()
+void tst_QScriptValueGenerated::toInt32_initData()
{
QTest::addColumn<qint32>("expected");
initScriptValues();
}
-static QString toInt32_tagArray [] = {
+static QString toInt32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1275,6 +1314,11 @@ static QString toInt32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1309,97 +1353,101 @@ static QString toInt32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static qint32 toInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static qint32 toInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
-void tst_QScriptValue::toInt32_makeData(const char* expr)
+void tst_QScriptValueGenerated::toInt32_makeData(const char* expr)
{
static QHash<QString, qint32> toInt32;
if (toInt32.isEmpty()) {
- toInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toInt32.insert(toInt32_tagArray[i], toInt32_valueArray[i]);
}
newRow(expr) << toInt32.value(expr);
}
-void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toInt32_test(const char*, const QScriptValue& value)
{
QFETCH(qint32, expected);
QCOMPARE(value.toInt32(), expected);
@@ -1409,13 +1457,13 @@ void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toInt32)
-void tst_QScriptValue::toUInt32_initData()
+void tst_QScriptValueGenerated::toUInt32_initData()
{
QTest::addColumn<quint32>("expected");
initScriptValues();
}
-static QString toUInt32_tagArray [] = {
+static QString toUInt32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1519,6 +1567,11 @@ static QString toUInt32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1553,97 +1606,101 @@ static QString toUInt32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static quint32 toUInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static quint32 toUInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
-void tst_QScriptValue::toUInt32_makeData(const char* expr)
+void tst_QScriptValueGenerated::toUInt32_makeData(const char* expr)
{
static QHash<QString, quint32> toUInt32;
if (toUInt32.isEmpty()) {
- toUInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toUInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toUInt32.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]);
}
newRow(expr) << toUInt32.value(expr);
}
-void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toUInt32_test(const char*, const QScriptValue& value)
{
QFETCH(quint32, expected);
QCOMPARE(value.toUInt32(), expected);
@@ -1653,13 +1710,13 @@ void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
DEFINE_TEST_FUNCTION(toUInt32)
-void tst_QScriptValue::toUInt16_initData()
+void tst_QScriptValueGenerated::toUInt16_initData()
{
QTest::addColumn<quint16>("expected");
initScriptValues();
}
-static QString toUInt16_tagArray [] = {
+static QString toUInt16_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1763,6 +1820,11 @@ static QString toUInt16_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1797,97 +1859,101 @@ static QString toUInt16_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static quint16 toUInt16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static quint16 toUInt16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
-void tst_QScriptValue::toUInt16_makeData(const char* expr)
+void tst_QScriptValueGenerated::toUInt16_makeData(const char* expr)
{
static QHash<QString, quint16> toUInt16;
if (toUInt16.isEmpty()) {
- toUInt16.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toUInt16.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toUInt16.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]);
}
newRow(expr) << toUInt16.value(expr);
}
-void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
+void tst_QScriptValueGenerated::toUInt16_test(const char*, const QScriptValue& value)
{
QFETCH(quint16, expected);
QCOMPARE(value.toUInt16(), expected);
diff --git a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
index 55773f0cfa..df11537f8c 100644
--- a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
+++ b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
@@ -71,6 +71,7 @@ private slots:
void iterateString();
void iterateGetterSetter();
void assignObjectToIterator();
+ void iterateNonObject();
};
tst_QScriptValueIterator::tst_QScriptValueIterator()
@@ -583,5 +584,25 @@ void tst_QScriptValueIterator::assignObjectToIterator()
QCOMPARE(it.name(), QString::fromLatin1("bar"));
}
+void tst_QScriptValueIterator::iterateNonObject()
+{
+ QScriptValueIterator it(123);
+ QVERIFY(!it.hasNext());
+ it.next();
+ QVERIFY(!it.hasPrevious());
+ it.previous();
+ it.toFront();
+ it.toBack();
+ it.name();
+ it.scriptName();
+ it.flags();
+ it.value();
+ it.setValue(1);
+ it.remove();
+ QScriptValue num(5);
+ it = num;
+ QVERIFY(!it.hasNext());
+}
+
QTEST_MAIN(tst_QScriptValueIterator)
#include "tst_qscriptvalueiterator.moc"
diff --git a/tests/auto/qsemaphore/qsemaphore.pro b/tests/auto/qsemaphore/qsemaphore.pro
index f720c0b20b..5978215f07 100644
--- a/tests/auto/qsemaphore/qsemaphore.pro
+++ b/tests/auto/qsemaphore/qsemaphore.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qsemaphore.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
index 01ef68a585..c0c10c054d 100644
--- a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
+++ b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qsequentialanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qset/qset.pro b/tests/auto/qset/qset.pro
index b45a015c23..ebdf0d68f0 100644
--- a/tests/auto/qset/qset.pro
+++ b/tests/auto/qset/qset.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/qset/tst_qset.cpp
index 319cdf42a6..6f377f58c7 100644
--- a/tests/auto/qset/tst_qset.cpp
+++ b/tests/auto/qset/tst_qset.cpp
@@ -65,6 +65,7 @@ public:
private slots:
void operator_eq();
+ void swap();
void size();
void capacity();
void reserve();
@@ -145,6 +146,16 @@ void tst_QSet::operator_eq()
}
}
+void tst_QSet::swap()
+{
+ QSet<int> s1, s2;
+ s1.insert(1);
+ s2.insert(2);
+ s1.swap(s2);
+ QCOMPARE(*s1.begin(),2);
+ QCOMPARE(*s2.begin(),1);
+}
+
void tst_QSet::size()
{
QSet<int> set;
diff --git a/tests/auto/qsharedpointer/qsharedpointer.pro b/tests/auto/qsharedpointer/qsharedpointer.pro
index bbd31d7c7a..014006e782 100644
--- a/tests/auto/qsharedpointer/qsharedpointer.pro
+++ b/tests/auto/qsharedpointer/qsharedpointer.pro
@@ -12,3 +12,4 @@ QT = core
!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
include(externaltests.pri)
+CONFIG += parallel_test
diff --git a/tests/auto/qsignalspy/qsignalspy.pro b/tests/auto/qsignalspy/qsignalspy.pro
index 4bc4a7b751..d3ae63b5bc 100644
--- a/tests/auto/qsignalspy/qsignalspy.pro
+++ b/tests/auto/qsignalspy/qsignalspy.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsignalspy.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsize/qsize.pro b/tests/auto/qsize/qsize.pro
index 14786b8b35..a1814ac8c5 100644
--- a/tests/auto/qsize/qsize.pro
+++ b/tests/auto/qsize/qsize.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsize.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsizef/qsizef.pro b/tests/auto/qsizef/qsizef.pro
index 703d721545..5aa07d72a1 100644
--- a/tests/auto/qsizef/qsizef.pro
+++ b/tests/auto/qsizef/qsizef.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsizef.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsplitter/tst_qsplitter.cpp b/tests/auto/qsplitter/tst_qsplitter.cpp
index e7b5dc7c22..7cb2b65ff1 100644
--- a/tests/auto/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/qsplitter/tst_qsplitter.cpp
@@ -1230,7 +1230,8 @@ void tst_QSplitter::testShowHide()
QSplitter *split = new QSplitter(Qt::Horizontal);
- QWidget widget;
+ QWidget topLevel;
+ QWidget widget(&topLevel);
widget.resize(400 + split->handleWidth(), 200);
QVBoxLayout *lay=new QVBoxLayout(&widget);
lay->setMargin(0);
@@ -1240,7 +1241,7 @@ void tst_QSplitter::testShowHide()
split->setSizes(QList<int>() << 200 << 200);
lay->addWidget(split);
widget.setLayout(lay);
- widget.show();
+ topLevel.show();
QTest::qWait(100);
@@ -1378,8 +1379,9 @@ class MyTextEdit : public QTextEdit
void tst_QSplitter::task169702_sizes()
{
+ QWidget topLevel;
// Create two nested (non-collapsible) splitters
- QSplitter* outerSplitter = new QSplitter(Qt::Vertical);
+ QSplitter* outerSplitter = new QSplitter(Qt::Vertical, &topLevel);
outerSplitter->setChildrenCollapsible(false);
QSplitter* splitter = new QSplitter(Qt::Horizontal, outerSplitter);
splitter->setChildrenCollapsible(false);
@@ -1396,12 +1398,12 @@ void tst_QSplitter::task169702_sizes()
splitter->addWidget(new QTextEdit("Bar"));
outerSplitter->setGeometry(100, 100, 500, 500);
- outerSplitter->show();
+ topLevel.show();
QTest::qWait(100);
testW->m_iFactor++;
testW->updateGeometry();
- QTest::qWait(100);
+ QTest::qWait(500);//100 is too fast for Maemo
//Make sure the minimimSizeHint is respected
QCOMPARE(testW->size().height(), testW->minimumSizeHint().height());
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index 5837719ca9..80535df8cb 100644
--- a/tests/auto/qsqldatabase/tst_databases.h
+++ b/tests/auto/qsqldatabase/tst_databases.h
@@ -208,7 +208,7 @@ public:
// addDb( "QOCI8", "//horsehead.nokia.troll.no:1521/ustest.troll.no", "scott", "tiger", "" ); // Oracle 9i on horsehead
// addDb( "QOCI8", "//iceblink.nokia.troll.no:1521/ice.troll.no", "scott", "tiger", "" ); // Oracle 8 on iceblink (not currently working)
// addDb( "QOCI", "//silence.nokia.troll.no:1521/testdb", "scott", "tiger" ); // Oracle 10g on silence
-// addDb( "QOCI", "//oracle10g-nokia.trolltech.com.au:1521/XE", "scott", "tiger" ); // Oracle 10gexpress on xen
+// addDb( "QOCI", "//bq-oracle10g.apac.nokia.com:1521/XE", "scott", "tiger" ); // Oracle 10gexpress
// This requires a local ODBC data source to be configured( pointing to a MySql database )
// addDb( "QODBC", "mysqlodbc", "troll", "trond" );
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index c7a61a5fdd..b4a3e08748 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -139,6 +139,8 @@ private slots:
void oraClob();
void oraLong_data() { generic_data("QOCI"); }
void oraLong();
+ void oraOCINumber_data() { generic_data("QOCI"); }
+ void oraOCINumber();
void outValuesDB2_data() { generic_data("QDB2"); }
void outValuesDB2();
void storedProceduresIBase_data() {generic_data("QIBASE"); }
@@ -209,6 +211,9 @@ private slots:
void QTBUG_6852();
void QTBUG_5765_data() { generic_data("QMYSQL"); }
void QTBUG_5765();
+ void QTBUG_14132_data() { generic_data("QOCI"); }
+ void QTBUG_14132();
+
void sqlite_constraint_data() { generic_data("QSQLITE"); }
void sqlite_constraint();
@@ -327,7 +332,8 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
<< qTableName( "Planet", __FILE__ )
<< qTableName( "task_250026", __FILE__ )
<< qTableName( "task_234422", __FILE__ )
- << qTableName("test141895", __FILE__);
+ << qTableName("test141895", __FILE__)
+ << qTableName("qtest_oraOCINumber", __FILE__);
if ( db.driverName().startsWith("QPSQL") )
tablenames << qTableName("task_233829", __FILE__);
@@ -2933,6 +2939,25 @@ void tst_QSqlQuery::QTBUG_551()
QCOMPARE(res_outLst[2].toString(), QLatin1String("3. Value is 2"));
}
+void tst_QSqlQuery::QTBUG_14132()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ QSqlQuery q(db);
+ const QString procedureName(qTableName("procedure", __FILE__));
+ QVERIFY_SQL(q, exec("CREATE OR REPLACE PROCEDURE "+ procedureName + " (outStr OUT varchar2) \n\
+ is \n\
+ begin \n\
+ outStr := 'OUTSTRING'; \n\
+ end;"));
+ QString placeholder = "XXXXXXXXX";
+ QVERIFY(q.prepare("CALL "+procedureName+"(?)"));
+ q.addBindValue(placeholder, QSql::Out);
+ QVERIFY_SQL(q, exec());
+ QCOMPARE(q.boundValue(0).toString(), QLatin1String("OUTSTRING"));
+}
+
void tst_QSqlQuery::QTBUG_5251()
{
QFETCH( QString, dbName );
@@ -3080,6 +3105,110 @@ void tst_QSqlQuery::QTBUG_5765()
QCOMPARE(q.value(0).toInt(), 123);
}
+void tst_QSqlQuery::oraOCINumber()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ const QString qtest_oraOCINumber(qTableName("qtest_oraOCINumber", __FILE__));
+
+ QSqlQuery q( db );
+ q.setForwardOnly( true );
+ QVERIFY_SQL( q, exec( "create table " + qtest_oraOCINumber +
+ " (col1 number(20), col2 number(20))" ) );
+ QVERIFY(q.prepare("insert into " + qtest_oraOCINumber + " values (?, ?)"));
+ QVariantList col1Values;
+ QVariantList col2Values;
+ col1Values << (qulonglong)(1)
+ << (qulonglong)(0)
+ << (qulonglong)(INT_MAX)
+ << (qulonglong)(UINT_MAX)
+ << (qulonglong)(LONG_MAX)
+ << (qulonglong)(ULONG_MAX)
+ << (qulonglong)(LLONG_MAX)
+ << (qulonglong)(ULLONG_MAX);
+
+ col2Values << (qlonglong)(1)
+ << (qlonglong)(0)
+ << (qlonglong)(-1)
+ << (qlonglong)(LONG_MAX)
+ << (qlonglong)(LONG_MIN)
+ << (qlonglong)(ULONG_MAX)
+ << (qlonglong)(LLONG_MAX)
+ << (qlonglong)(LLONG_MIN);
+
+ q.addBindValue(col1Values);
+ q.addBindValue(col2Values);
+ QVERIFY(q.execBatch());
+ QString sqlStr = "select * from " + qtest_oraOCINumber + " where col1 = :bindValue0 AND col2 = :bindValue1";
+ QVERIFY(q.prepare(sqlStr));
+
+ q.bindValue(":bindValue0", (qulonglong)(1), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(1), QSql::InOut);
+
+ QVERIFY_SQL( q, exec() );
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), qulonglong(1));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(1));
+
+ q.bindValue(":bindValue0", (qulonglong)(0), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(0), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(0));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(0));
+
+ q.bindValue(":bindValue0", (qulonglong)(INT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(-1), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(INT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(-1));
+
+ q.bindValue(":bindValue0", (qulonglong)(UINT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(UINT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MIN));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(ULONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(ULONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MIN));
+
+}
+
void tst_QSqlQuery::sqlite_constraint()
{
QFETCH( QString, dbName );
diff --git a/tests/auto/qsslcertificate/qsslcertificate.pro b/tests/auto/qsslcertificate/qsslcertificate.pro
index e21587bd84..05cce8e509 100644
--- a/tests/auto/qsslcertificate/qsslcertificate.pro
+++ b/tests/auto/qsslcertificate/qsslcertificate.pro
@@ -24,5 +24,6 @@ wince*: {
DEFINES += SRCDIR=\\\".\\\"
} else:!symbian {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
- TARGET.CAPABILITY = NetworkServices
}
+
+symbian:TARGET.CAPABILITY = NetworkServices ReadUserData
diff --git a/tests/auto/qstate/qstate.pro b/tests/auto/qstate/qstate.pro
index 9131fa84f8..6ee7e0cd00 100644
--- a/tests/auto/qstate/qstate.pro
+++ b/tests/auto/qstate/qstate.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qstate.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstl/qstl.pro b/tests/auto/qstl/qstl.pro
index 5c9987496c..a0c9db1dfc 100644
--- a/tests/auto/qstl/qstl.pro
+++ b/tests/auto/qstl/qstl.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstl.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstring/qstring.pro b/tests/auto/qstring/qstring.pro
index ed758c634b..e980042351 100644
--- a/tests/auto/qstring/qstring.pro
+++ b/tests/auto/qstring/qstring.pro
@@ -6,3 +6,4 @@ symbian:LIBS += -llibm
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index 003332ce03..5d961df806 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -114,6 +114,7 @@ private slots:
void remove_string();
void remove_regexp_data();
void remove_regexp();
+ void swap();
void prepend();
void prepend_bytearray_data();
void prepend_bytearray();
@@ -1852,6 +1853,16 @@ void tst_QString::operator_pluseq_bytearray()
}
}
+void tst_QString::swap()
+{
+ QString s1, s2;
+ s1 = "s1";
+ s2 = "s2";
+ s1.swap(s2);
+ QCOMPARE(s1,QLatin1String("s2"));
+ QCOMPARE(s2,QLatin1String("s1"));
+}
+
void tst_QString::prepend()
{
QString a;
@@ -4571,8 +4582,10 @@ void tst_QString::nanAndInf()
CHECK_NAN("nan ", true, true)
CHECK_NAN("\t NAN", true, true)
CHECK_NAN("\t NAN ", true, true)
+#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail
CHECK_NAN("-nan", false, false)
CHECK_NAN("+NAN", false, false)
+#endif
CHECK_NAN("NaN", true, true)
CHECK_NAN("nAn", true, true)
CHECK_NAN("NANe-10", false, false)
diff --git a/tests/auto/qstringbuilder1/qstringbuilder1.pro b/tests/auto/qstringbuilder1/qstringbuilder1.pro
index 5bb14d4290..dc9062f4da 100644
--- a/tests/auto/qstringbuilder1/qstringbuilder1.pro
+++ b/tests/auto/qstringbuilder1/qstringbuilder1.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qstringbuilder1.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder2/qstringbuilder2.pro b/tests/auto/qstringbuilder2/qstringbuilder2.pro
index 4152dc31e3..a57c6f19f2 100644
--- a/tests/auto/qstringbuilder2/qstringbuilder2.pro
+++ b/tests/auto/qstringbuilder2/qstringbuilder2.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder2.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder3/qstringbuilder3.pro b/tests/auto/qstringbuilder3/qstringbuilder3.pro
index b4d222591d..5aced7c258 100644
--- a/tests/auto/qstringbuilder3/qstringbuilder3.pro
+++ b/tests/auto/qstringbuilder3/qstringbuilder3.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder3.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder4/qstringbuilder4.pro b/tests/auto/qstringbuilder4/qstringbuilder4.pro
index 6ec522884b..0532a9b925 100644
--- a/tests/auto/qstringbuilder4/qstringbuilder4.pro
+++ b/tests/auto/qstringbuilder4/qstringbuilder4.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder4.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringlist/qstringlist.pro b/tests/auto/qstringlist/qstringlist.pro
index aee074bad3..d82a3487fd 100644
--- a/tests/auto/qstringlist/qstringlist.pro
+++ b/tests/auto/qstringlist/qstringlist.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstringlist.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstringmatcher/qstringmatcher.pro b/tests/auto/qstringmatcher/qstringmatcher.pro
index 2c1509746a..c5249ec84a 100644
--- a/tests/auto/qstringmatcher/qstringmatcher.pro
+++ b/tests/auto/qstringmatcher/qstringmatcher.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qstringmatcher.cpp
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstringref/qstringref.pro b/tests/auto/qstringref/qstringref.pro
index 48e7ddf17f..34f2de46ae 100644
--- a/tests/auto/qstringref/qstringref.pro
+++ b/tests/auto/qstringref/qstringref.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qstringref.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 04b1e79f09..efcbc53939 100644
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -48,6 +48,7 @@
#endif
#include <private/qstylesheetstyle_p.h>
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -103,6 +104,7 @@ private slots:
//at the end because it mess with the style.
void widgetStyle();
void appStyle();
+ void QTBUG11658_cachecrash();
private:
QColor COLOR(const QWidget& w) {
w.ensurePolished();
@@ -822,6 +824,8 @@ void tst_QStyleSheetStyle::focusColors()
void tst_QStyleSheetStyle::hoverColors()
{
+ if (!PlatformQuirks::haveMouseCursor())
+ QSKIP("No mouse Cursor on this platform",SkipAll);
QList<QWidget *> widgets;
widgets << new QPushButton("TESTING");
widgets << new QLineEdit("TESTING");
@@ -979,10 +983,11 @@ void tst_QStyleSheetStyle::background()
void tst_QStyleSheetStyle::tabAlignement()
{
- QTabWidget tabWidget;
+ QWidget topLevel;
+ QTabWidget tabWidget(&topLevel);
tabWidget.addTab(new QLabel("tab1"),"tab1");
tabWidget.resize(QSize(400,400));
- tabWidget.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&tabWidget);
QTest::qWait(50);
QTabBar *bar = qFindChild<QTabBar*>(&tabWidget);
@@ -1622,6 +1627,37 @@ void tst_QStyleSheetStyle::changeStyleInChangeEvent()
wid.ensurePolished();
}
+void tst_QStyleSheetStyle::QTBUG11658_cachecrash()
+{
+ //should not crash
+ class Widget : public QWidget
+ {
+ public:
+ Widget(QWidget *parent = 0)
+ : QWidget(parent)
+ {
+ QVBoxLayout* pLayout = new QVBoxLayout(this);
+ QCheckBox* pCheckBox = new QCheckBox(this);
+ pLayout->addWidget(pCheckBox);
+ setLayout(pLayout);
+
+ QString szStyleSheet = QLatin1String("* { color: red; }");
+ qApp->setStyleSheet(szStyleSheet);
+ qApp->setStyle(QStyleFactory::create(QLatin1String("Windows")));
+ }
+ };
+
+ Widget *w = new Widget();
+ delete w;
+ w = new Widget();
+ w->show();
+
+ QTest::qWaitForWindowShown(w);
+ delete w;
+ qApp->setStyleSheet(QString());
+}
+
+
QTEST_MAIN(tst_QStyleSheetStyle)
#include "tst_qstylesheetstyle.moc"
diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp
index 3e5d077a85..6c920c97c9 100644
--- a/tests/auto/qtableview/tst_qtableview.cpp
+++ b/tests/auto/qtableview/tst_qtableview.cpp
@@ -2591,9 +2591,10 @@ void tst_QTableView::scrollTo()
QFETCH(int, expectedVerticalScroll);
QtTestTableModel model(rowCount, columnCount);
- QtTestTableView view;
+ QWidget toplevel;
+ QtTestTableView view(&toplevel);
- view.show();
+ toplevel.show();
// resizing to this size will ensure that there can ONLY_BE_ONE_CELL inside the view.
QSize forcedSize(columnWidth * 2, rowHeight * 2);
view.resize(forcedSize);
@@ -2748,10 +2749,11 @@ void tst_QTableView::indexAt()
QFETCH(int, expectedColumn);
QtTestTableModel model(rowCount, columnCount);
- QtTestTableView view;
+ QWidget toplevel;
+ QtTestTableView view(&toplevel);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
//some styles change the scroll mode in their polish
view.setHorizontalScrollMode(QAbstractItemView::ScrollPerItem);
@@ -3657,20 +3659,23 @@ void tst_QTableView::mouseWheel()
#ifdef Q_OS_WINCE
QSKIP("Since different Windows CE versions sport different taskbars, we skip this test", SkipAll);
#endif
+
QFETCH(int, scrollMode);
QFETCH(int, delta);
QFETCH(int, horizontalPositon);
QFETCH(int, verticalPosition);
QtTestTableModel model(100, 100);
- QtTestTableView view;
+ QWidget topLevel;
+ QtTestTableView view(&topLevel);
view.resize(500, 500);
for (int r = 0; r < 100; ++r)
view.setRowHeight(r, 50);
for (int c = 0; c < 100; ++c)
view.setColumnWidth(c, 100);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ topLevel.show();
+
+ QTest::qWaitForWindowShown(&topLevel);
view.setModel(&model);
@@ -3772,7 +3777,7 @@ void tst_QTableView::task191545_dragSelectRows()
QRect cellRect = table.visualRect(model.index(3, 0));
QHeaderView *vHeader = table.verticalHeader();
QWidget *vHeaderVp = vHeader->viewport();
- QPoint rowPos(5, (cellRect.top() + cellRect.bottom()) / 2);
+ QPoint rowPos(cellRect.center());
QMouseEvent rowPressEvent(QEvent::MouseButtonPress, rowPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier);
qApp->sendEvent(vHeaderVp, &rowPressEvent);
@@ -3851,6 +3856,7 @@ void tst_QTableView::task191545_dragSelectRows()
QMouseEvent cellReleaseEvent(QEvent::MouseButtonRelease, cellPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier);
qApp->sendEvent(tableVp, &cellReleaseEvent);
+ QTest::qWait(200);
for (int i = 0; i < 6; ++i)
for (int j = 0; j < 6; ++j) {
QModelIndex index = model.index(3 + i, 3 + j, table.rootIndex());
diff --git a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
index e93c5d25da..ee2b77d63c 100644
--- a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
+++ b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentfilter.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
index 4fdcc222fe..a61d275241 100644
--- a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
+++ b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentiteratekernel.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
index 8cae71443d..6fc358514e 100644
--- a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
+++ b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentmap.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
index ac29dd425b..24576048e9 100644
--- a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
+++ b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentrun.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
index 8fdc50c88e..8b10ea4efa 100644
--- a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -61,6 +61,9 @@ private slots:
void implicitConvertibleTypes();
void runWaitLoop();
void recursive();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
#if 0
void createFunctor();
#endif
@@ -374,6 +377,41 @@ int fn2(double, int *)
return 1;
}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwFunction()
+{
+ throw QtConcurrent::Exception();
+}
+
+int throwFunctionReturn()
+{
+ throw QtConcurrent::Exception();
+ return 0;
+}
+
+void tst_QtConcurrentRun::exceptions()
+{
+ bool caught = false;
+ try {
+ QtConcurrent::run(throwFunction).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+
+ caught = false;
+ try {
+ QtConcurrent::run(throwFunctionReturn).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
#if 0
void tst_QtConcurrentRun::createFunctor()
{
diff --git a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
index cd8d74e6fd..bbfcf5ebe3 100644
--- a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
+++ b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentthreadengine.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
index e8fb9cb224..5f3cb119f4 100644
--- a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
+++ b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
@@ -9,3 +9,4 @@ wince*|symbian:{
addFiles.path = .
DEPLOYMENT += addFiles
}
+CONFIG += parallel_test
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp
index 808299b805..23f6a6c96e 100644
--- a/tests/auto/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp
@@ -2054,6 +2054,7 @@ void tst_QTextDocument::clonePreservesIndentWidth()
doc->setIndentWidth(42);
QTextDocument *clone = doc->clone();
QCOMPARE(clone->indentWidth(), qreal(42));
+ delete clone;
}
void tst_QTextDocument::blockCount()
diff --git a/tests/auto/qtextedit/tst_qtextedit.cpp b/tests/auto/qtextedit/tst_qtextedit.cpp
index 101baa53b5..d1832d8cb5 100644
--- a/tests/auto/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/qtextedit/tst_qtextedit.cpp
@@ -58,6 +58,7 @@
#include <qimagereader.h>
#include <qimagewriter.h>
#include <qcommonstyle.h>
+#include <qlayout.h>
#include <qabstracttextdocumentlayout.h>
#include <qtextdocumentfragment.h>
@@ -2111,6 +2112,7 @@ void tst_QTextEdit::setDocumentPreservesPalette()
QPalette whitePal = ed->palette();
whitePal.setColor(QPalette::Active, QPalette::Text, "white");
+
QVERIFY(whitePal != ed->palette());
ed->setPalette(whitePal);
QVERIFY(whitePal.color(QPalette::Active, QPalette::Text)
@@ -2155,9 +2157,15 @@ void tst_QTextEdit::pasteFromQt3RichText()
void tst_QTextEdit::noWrapBackgrounds()
{
+ QWidget topLevel;
+ QVBoxLayout *layout = new QVBoxLayout(&topLevel);
+
QTextEdit edit;
edit.setLineWrapMode(QTextEdit::NoWrap);
+ // hide the cursor in order to make the image comparison below reliable
+ edit.setCursorWidth(0);
+
QTextFrame *root = edit.document()->rootFrame();
QTextFrameFormat frameFormat = root->frameFormat();
frameFormat.setLeftMargin(2);
@@ -2170,6 +2178,9 @@ void tst_QTextEdit::noWrapBackgrounds()
edit.insertPlainText(QLatin1String(" \n \n \n \n"));
edit.setFixedSize(100, 200);
+ layout->addWidget(&edit);
+ topLevel.show();
+
QImage img = QPixmap::grabWidget(edit.viewport()).toImage();
QCOMPARE(img, img.mirrored(true, false));
}
diff --git a/tests/auto/qthread/qthread.pro b/tests/auto/qthread/qthread.pro
index 0b042ab8b2..d3b1028034 100644
--- a/tests/auto/qthread/qthread.pro
+++ b/tests/auto/qthread/qthread.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qthread.cpp
QT = core
symbian:LIBS += -llibpthread
+CONFIG += parallel_test
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 843749a31b..f290a2b0bd 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -106,6 +106,7 @@ private slots:
void adoptMultipleThreads();
void QTBUG13810_exitAndStart();
+ void connectThreadFinishedSignalToObjectDeleteLaterSlot();
void stressTest();
};
@@ -975,6 +976,19 @@ void tst_QThread::QTBUG13810_exitAndStart()
QCOMPARE(sync1.m_prop, 89);
}
+void tst_QThread::connectThreadFinishedSignalToObjectDeleteLaterSlot()
+{
+ QThread thread;
+ QObject *object = new QObject;
+ QWeakPointer<QObject> p = object;
+ QVERIFY(!p.isNull());
+ connect(&thread, SIGNAL(started()), &thread, SLOT(quit()), Qt::DirectConnection);
+ connect(&thread, SIGNAL(finished()), object, SLOT(deleteLater()));
+ object->moveToThread(&thread);
+ thread.start();
+ QVERIFY(thread.wait(30000));
+ QVERIFY(p.isNull());
+}
QTEST_MAIN(tst_QThread)
#include "tst_qthread.moc"
diff --git a/tests/auto/qthreadonce/qthreadonce.pro b/tests/auto/qthreadonce/qthreadonce.pro
index a672a03f0c..d7ef4d4c23 100644
--- a/tests/auto/qthreadonce/qthreadonce.pro
+++ b/tests/auto/qthreadonce/qthreadonce.pro
@@ -10,3 +10,4 @@ QT = core
# Temporary:
SOURCES += qthreadonce.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadpool/qthreadpool.pro b/tests/auto/qthreadpool/qthreadpool.pro
index 3f6ea64948..dbaeb208dd 100644
--- a/tests/auto/qthreadpool/qthreadpool.pro
+++ b/tests/auto/qthreadpool/qthreadpool.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qthreadpool.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadstorage/qthreadstorage.pro b/tests/auto/qthreadstorage/qthreadstorage.pro
index a06f89c368..0dc8d086df 100644
--- a/tests/auto/qthreadstorage/qthreadstorage.pro
+++ b/tests/auto/qthreadstorage/qthreadstorage.pro
@@ -2,3 +2,4 @@ TEMPLATE = subdirs
SUBDIRS = \
tst_qthreadstorage.pro \
crashOnExit.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qtime/qtime.pro b/tests/auto/qtime/qtime.pro
index 88277a001f..ce4f7ae91f 100644
--- a/tests/auto/qtime/qtime.pro
+++ b/tests/auto/qtime/qtime.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qtime.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimeline/qtimeline.pro b/tests/auto/qtimeline/qtimeline.pro
index 78204552e5..9be717dba8 100644
--- a/tests/auto/qtimeline/qtimeline.pro
+++ b/tests/auto/qtimeline/qtimeline.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimeline.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimer/qtimer.pro b/tests/auto/qtimer/qtimer.pro
index 79ae7dbd0b..086df1dd18 100644
--- a/tests/auto/qtimer/qtimer.pro
+++ b/tests/auto/qtimer/qtimer.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtmd5/qtmd5.pro b/tests/auto/qtmd5/qtmd5.pro
index cb4a5398b8..0afc6b1b14 100644
--- a/tests/auto/qtmd5/qtmd5.pro
+++ b/tests/auto/qtmd5/qtmd5.pro
@@ -12,3 +12,4 @@ SOURCES += tst_qtmd5.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtokenautomaton/qtokenautomaton.pro b/tests/auto/qtokenautomaton/qtokenautomaton.pro
index 6ebf7c46d2..5e2e590a4b 100644
--- a/tests/auto/qtokenautomaton/qtokenautomaton.pro
+++ b/tests/auto/qtokenautomaton/qtokenautomaton.pro
@@ -15,3 +15,4 @@ HEADERS += tokenizers/basic/basic.h \
tokenizers/withNamespace/withNamespace.h
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index c7b53e96a2..3c2bf15925 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -2379,11 +2379,12 @@ void tst_QTreeView::extendedSelection()
QFETCH(int, selectedCount);
QStandardItemModel model(5, 2);
- QTreeView view;
+ QWidget topLevel;
+ QTreeView view(&topLevel);
view.resize(qMax(mousePressPos.x() * 2, 200), qMax(mousePressPos.y() * 2, 200));
view.setModel(&model);
view.setSelectionMode(QAbstractItemView::ExtendedSelection);
- view.show();
+ topLevel.show();
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, mousePressPos);
QCOMPARE(view.selectionModel()->selectedIndexes().count(), selectedCount);
}
@@ -3280,9 +3281,10 @@ void tst_QTreeView::task220298_selectColumns()
void tst_QTreeView::task224091_appendColumns()
{
QStandardItemModel *model = new QStandardItemModel();
- QTreeView *treeView = new QTreeView();
+ QWidget* topLevel= new QWidget;
+ QTreeView *treeView = new QTreeView(topLevel);
treeView->setModel(model);
- treeView->show();
+ topLevel->show();
treeView->resize(50,50);
QTest::qWaitForWindowShown(treeView);
@@ -3299,7 +3301,7 @@ void tst_QTreeView::task224091_appendColumns()
QTRY_VERIFY(treeView->verticalScrollBar()->isVisible());
- delete treeView;
+ delete topLevel;
delete model;
}
@@ -3758,7 +3760,8 @@ void tst_QTreeView::taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint()
void tst_QTreeView::keyboardNavigationWithDisabled()
{
- QTreeView view;
+ QWidget topLevel;
+ QTreeView view(&topLevel);
QStandardItemModel model(90, 0);
for (int i = 0; i < 90; i ++) {
model.setItem(i, new QStandardItem(QString::number(i)));
@@ -3767,10 +3770,10 @@ void tst_QTreeView::keyboardNavigationWithDisabled()
view.setModel(&model);
view.resize(200, view.visualRect(model.index(0,0)).height()*10);
- view.show();
- QApplication::setActiveWindow(&view);
- QTest::qWaitForWindowShown(&view);
- QTRY_VERIFY(view.isActiveWindow());
+ topLevel.show();
+ QApplication::setActiveWindow(&topLevel);
+ QTest::qWaitForWindowShown(&topLevel);
+ QTRY_VERIFY(topLevel.isActiveWindow());
view.setCurrentIndex(model.index(1, 0));
QTest::keyClick(view.viewport(), Qt::Key_Up);
diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp
index 1e373841f4..32bf5579ce 100644
--- a/tests/auto/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp
@@ -464,6 +464,7 @@ void tst_QTreeWidget::editItem()
QTreeWidget tree;
populate(&tree, topLevelItems, new TreeItem(QStringList() << "1" << "2"));
tree.show();
+ QTest::qWaitForWindowShown(&tree);
QSignalSpy itemChangedSpy(
&tree, SIGNAL(itemChanged(QTreeWidgetItem*,int)));
@@ -3098,8 +3099,9 @@ void tst_QTreeWidget::task253109_itemHeight()
void tst_QTreeWidget::task206367_duplication()
{
- QTreeWidget treeWidget;
- treeWidget.show();
+ QWidget topLevel;
+ QTreeWidget treeWidget(&topLevel);
+ topLevel.show();
treeWidget.resize(200, 200);
treeWidget.setSortingEnabled(true);
diff --git a/tests/auto/qurl/qurl.pro b/tests/auto/qurl/qurl.pro
index 018bb38612..a5c39a5a98 100644
--- a/tests/auto/qurl/qurl.pro
+++ b/tests/auto/qurl/qurl.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qurl.cpp
QT = core
symbian: TARGET.CAPABILITY = NetworkServices
+CONFIG += parallel_test
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index eff4658a39..c089a59ca4 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -132,6 +132,7 @@ private slots:
void compat_encode();
void percentEncoding_data();
void percentEncoding();
+ void swap();
void symmetry();
void ipv6_data();
void ipv6();
@@ -2210,6 +2211,14 @@ void tst_QUrl::toPercentEncoding()
QCOMPARE(original, QUrl::fromPercentEncoding(encodedUrl));
}
+void tst_QUrl::swap()
+{
+ QUrl u1(QLatin1String("http://qt.nokia.com")), u2(QLatin1String("http://www.kdab.com"));
+ u1.swap(u2);
+ QCOMPARE(u2.host(),QLatin1String("qt.nokia.com"));
+ QCOMPARE(u1.host(),QLatin1String("www.kdab.com"));
+}
+
void tst_QUrl::symmetry()
{
QUrl url(QString::fromLatin1("http://www.rksmrgs.se/pub?a=b&a=d&a=f#vrl"));
diff --git a/tests/auto/quuid/quuid.pro b/tests/auto/quuid/quuid.pro
index 25e24561ae..461956f313 100644
--- a/tests/auto/quuid/quuid.pro
+++ b/tests/auto/quuid/quuid.pro
@@ -4,3 +4,4 @@ SUBDIRS = testProcessUniqueness
SUBDIRS += test
+CONFIG += parallel_test
diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp
index 98d74361b6..159a8063b7 100644
--- a/tests/auto/qvariant/tst_qvariant.cpp
+++ b/tests/auto/qvariant/tst_qvariant.cpp
@@ -100,6 +100,7 @@ private slots:
void constructor();
void copy_constructor();
void isNull();
+ void swap();
void canConvert_data();
void canConvert();
@@ -372,6 +373,16 @@ void tst_QVariant::isNull()
QVERIFY(var7.isNull());
}
+void tst_QVariant::swap()
+{
+ QVariant v1 = 1, v2 = 2.0;
+ v1.swap(v2);
+ QCOMPARE(v1.type(),QVariant::Double);
+ QCOMPARE(v1.toDouble(),2.0);
+ QCOMPARE(v2.type(),QVariant::Int);
+ QCOMPARE(v2.toInt(),1);
+}
+
void tst_QVariant::canConvert_data()
{
QTest::addColumn<QVariant>("val");
diff --git a/tests/auto/qvarlengtharray/qvarlengtharray.pro b/tests/auto/qvarlengtharray/qvarlengtharray.pro
index 7a02790578..183da1b938 100644
--- a/tests/auto/qvarlengtharray/qvarlengtharray.pro
+++ b/tests/auto/qvarlengtharray/qvarlengtharray.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qvarlengtharray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qvector/qvector.pro b/tests/auto/qvector/qvector.pro
index 80311b46c6..a7c3957f2c 100644
--- a/tests/auto/qvector/qvector.pro
+++ b/tests/auto/qvector/qvector.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qvector.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qvector/tst_qvector.cpp b/tests/auto/qvector/tst_qvector.cpp
index a04ce604b4..b3decc85c8 100644
--- a/tests/auto/qvector/tst_qvector.cpp
+++ b/tests/auto/qvector/tst_qvector.cpp
@@ -80,6 +80,7 @@ private slots:
void remove() const;
void size() const;
void startsWith() const;
+ void swap() const;
void toList() const;
void toStdVector() const;
void value() const;
@@ -579,6 +580,17 @@ void tst_QVector::startsWith() const
QVERIFY(myvec.startsWith(1));
}
+void tst_QVector::swap() const
+{
+ QVector<int> v1, v2;
+ v1 << 1 << 2 << 3;
+ v2 << 4 << 5 << 6;
+
+ v1.swap(v2);
+ QCOMPARE(v1,QVector<int>() << 4 << 5 << 6);
+ QCOMPARE(v2,QVector<int>() << 1 << 2 << 3);
+}
+
void tst_QVector::toList() const
{
QVector<QString> myvec;
diff --git a/tests/auto/qwaitcondition/qwaitcondition.pro b/tests/auto/qwaitcondition/qwaitcondition.pro
index 4d9a08204d..9af0c71301 100644
--- a/tests/auto/qwaitcondition/qwaitcondition.pro
+++ b/tests/auto/qwaitcondition/qwaitcondition.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qwaitcondition.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
index 539159184a..ffc473056a 100644
--- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
@@ -76,7 +76,7 @@ private slots:
static const int iterations = 10;
// Note: some tests rely on ThreadCount being multiple of 2
-#ifdef Q_OS_SOLARIS
+#if defined(Q_OS_SOLARIS) || ( defined(Q_OS_LINUX) && defined(QT_ARCH_ARMV6) )
static const int ThreadCount = 4;
#else
static const int ThreadCount = 10;
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 0be57d9e9a..d230f2cb6e 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -9708,14 +9708,25 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
child.setAutoFillBackground(true);
child.setPalette(Qt::blue);
+ QWidget grandChild(&child);
+ grandChild.setAutoFillBackground(true);
+ grandChild.setPalette(Qt::yellow);
+
QVBoxLayout layout(&parent);
layout.setContentsMargins(10, 10, 10, 10);
layout.addWidget(&child);
parent.setLayout(&layout);
- child.winId();
+ QVBoxLayout childLayout(&child);
+ childLayout.setContentsMargins(10, 10, 10, 10);
+ childLayout.addWidget(&grandChild);
+ child.setLayout(&childLayout);
+
+ // Ensure that this widget and all its ancestors are native
+ grandChild.winId();
parent.show();
+
QTest::qWaitForWindowShown(&parent);
// Check that child window does not obscure parent window
@@ -9724,18 +9735,24 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
// Native child widget should share parent's backing store
QVERIFY(0 != backingStore(parent));
QVERIFY(0 == backingStore(child));
+ QVERIFY(0 == backingStore(grandChild));
// Make child widget full screen
child.setWindowFlags((child.windowFlags() | Qt::Window) ^ Qt::SubWindow);
child.setWindowState(child.windowState() | Qt::WindowFullScreen);
child.show();
+
+ // Paint into the child to ensure that it gets a backing store
+ QPainter painter(&child);
+ painter.fillRect(QRect(0, 0, 90, 90), Qt::white);
+
QTest::qWaitForWindowShown(&child);
// Ensure that 'window hidden' event is received by parent
qApp->processEvents();
// Check that child window obscures parent window
- QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+ QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion() + grandChild.visibleRegion()).isEmpty());
// Now that extent of child widget goes beyond parent's extent,
// a new backing store should be created for the child widget.
@@ -9751,11 +9768,12 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
QTest::qWaitForWindowShown(&child);
// Check that parent is now visible again
- QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion() + grandChild.visibleRegion()).isEmpty());
// Native child widget should once again share parent's backing store
QVERIFY(0 != backingStore(parent));
QVERIFY(0 == backingStore(child));
+ QVERIFY(0 == backingStore(grandChild));
}
// 6. Partial reveal followed by full reveal
diff --git a/tests/auto/qwineventnotifier/qwineventnotifier.pro b/tests/auto/qwineventnotifier/qwineventnotifier.pro
index 0c8bd2bd94..62da3a33ea 100644
--- a/tests/auto/qwineventnotifier/qwineventnotifier.pro
+++ b/tests/auto/qwineventnotifier/qwineventnotifier.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwineventnotifier.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwritelocker/qwritelocker.pro b/tests/auto/qwritelocker/qwritelocker.pro
index acae4efb28..39a98aaba5 100644
--- a/tests/auto/qwritelocker/qwritelocker.pro
+++ b/tests/auto/qwritelocker/qwritelocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwritelocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp
index b7c87403aa..3c0886e440 100644
--- a/tests/auto/qxmlquery/tst_qxmlquery.cpp
+++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp
@@ -1198,9 +1198,15 @@ void tst_QXmlQuery::basicXQueryToQtTypeCheck() const
expectedValues.append(QVariant()); /* xs:dayTimeDuration */
expectedValues.append(QVariant()); /* xs:yearMonthDuration */
- expectedValues.append(QVariant(double(3e3))); /* xs:float */
- expectedValues.append(QVariant(double(4e4))); /* xs:double */
- expectedValues.append(QVariant(double(2))); /* xs:decimal */
+ if(sizeof(qreal) == sizeof(float)) {//ARM casts to Float not to double
+ expectedValues.append(QVariant(float(3e3))); /* xs:float */
+ expectedValues.append(QVariant(float(4e4))); /* xs:double */
+ expectedValues.append(QVariant(float(2))); /* xs:decimal */
+ } else {
+ expectedValues.append(QVariant(double(3e3))); /* xs:float */
+ expectedValues.append(QVariant(double(4e4))); /* xs:double */
+ expectedValues.append(QVariant(double(2))); /* xs:decimal */
+ }
/* xs:integer and its sub-types. */
expectedValues.append(QVariant(qlonglong(16)));
@@ -1348,10 +1354,17 @@ void tst_QXmlQuery::basicQtToXQueryTypeCheck() const
QVERIFY(!item.isNull());
QVERIFY(item.isAtomicValue());
- QCOMPARE(item.toAtomicValue().toString(),
- QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
- "A QString http://example.com/ 5 6 true true true true true true true true true true "
- "true true true"));
+ if(sizeof(qreal) == sizeof(float)) //ARM casts to Float not to double
+ QCOMPARE(item.toAtomicValue().toString(),
+ QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
+ "A QString http://example.com/ 5 6 true false false true true true true true true true "
+ "true true true"));
+ else
+ QCOMPARE(item.toAtomicValue().toString(),
+ QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
+ "A QString http://example.com/ 5 6 true true true true true true true true true true "
+ "true true true"));
+
}
void tst_QXmlQuery::bindNode() const
diff --git a/tests/auto/script.pro b/tests/auto/script.pro
index 06f51b5b98..c4d05440c6 100644
--- a/tests/auto/script.pro
+++ b/tests/auto/script.pro
@@ -7,10 +7,12 @@ SUBDIRS=\
qscriptengine \
qscriptengineagent \
qscriptenginedebugger \
+ qscriptextensionplugin \
qscriptextqobject \
qscriptjstestsuite \
qscriptstring \
qscriptv8testsuite \
qscriptvalue \
+ qscriptvaluegenerated \
qscriptvalueiterator \
diff --git a/tests/auto/selftests/selftests.pro b/tests/auto/selftests/selftests.pro
index d854b5e5b5..2f1c327e34 100644
--- a/tests/auto/selftests/selftests.pro
+++ b/tests/auto/selftests/selftests.pro
@@ -12,3 +12,4 @@ INSTALLS =
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/symbols/tst_symbols.cpp b/tests/auto/symbols/tst_symbols.cpp
index 28970eba41..1572a5f893 100644
--- a/tests/auto/symbols/tst_symbols.cpp
+++ b/tests/auto/symbols/tst_symbols.cpp
@@ -443,7 +443,7 @@ void tst_Symbols::prefix()
# if defined(Q_OS_LINUX) && defined(Q_CC_INTEL)
QEXPECT_FAIL("", "linux-icc* incorrectly exports some QtWebkit symbols, waiting for a fix from Intel.", Continue);
# endif
- QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output :)");
+ QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output above.");
#else
QSKIP("Linux-specific test", SkipAll);
#endif
diff --git a/tests/auto/utf8/utf8.pro b/tests/auto/utf8/utf8.pro
index 4ec6851b9b..aa133fe3ee 100644
--- a/tests/auto/utf8/utf8.pro
+++ b/tests/auto/utf8/utf8.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT -= gui
SOURCES += tst_utf8.cpp
+CONFIG += parallel_test
diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 01d5cd5c98..00a1b37eb1 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -7,3 +7,6 @@ SUBDIRS = \
svg
contains(QT_CONFIG, opengl): SUBDIRS += opengl
contains(QT_CONFIG, declarative): SUBDIRS += declarative
+
+check-trusted.CONFIG += recursive
+QMAKE_EXTRA_TARGETS += check-trusted
diff --git a/tests/benchmarks/corelib/corelib.pro b/tests/benchmarks/corelib/corelib.pro
index 8a6941bd2e..335280ec21 100644
--- a/tests/benchmarks/corelib/corelib.pro
+++ b/tests/benchmarks/corelib/corelib.pro
@@ -4,5 +4,13 @@ SUBDIRS = \
kernel \
thread \
tools \
- codecs \
+ codecs \
plugin
+
+TRUSTED_BENCHMARKS += \
+ kernel/qmetaobject \
+ kernel/qmetatype \
+ kernel/qobject \
+ thread/qthreadstorage
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/corelib/tools/qstring/data.cpp b/tests/benchmarks/corelib/tools/qstring/data.cpp
index 6d1a069ec7..d44a796e52 100644
--- a/tests/benchmarks/corelib/tools/qstring/data.cpp
+++ b/tests/benchmarks/corelib/tools/qstring/data.cpp
@@ -1,5 +1,8 @@
// This is a generated file - DO NOT EDIT
-static const ushort stringCollectionData[] __attribute__((aligned(16))) = {
+
+#include "data.h"
+
+const ushort stringCollectionData[] __attribute__((aligned(16))) = {
// #0
65535,
99, 111, 109, 112, 105, 108, 101, 114, 32, 118, 101, 114, 115, 105, 111, 110, 115, 47,
@@ -1123,15 +1126,9 @@ static const ushort stringCollectionData[] __attribute__((aligned(16))) = {
65535,
84, 69, 65, 77, 66, 85, 73, 76, 68, 69, 82, 61,
65535,65534,65533, // 5216
-
-
};
-static struct StringCollection
-{
- int len;
- int offset1, offset2;
- ushort align1, align2;
-} stringCollection[] = {
+
+const struct StringCollection stringCollection[] = {
{18, 1, 29, 3666, 106}, // #0
{18, 53, 77, 106, 1978}, // #1
{20, 97, 125, 2850, 3210}, // #2
@@ -1274,8 +1271,8 @@ static struct StringCollection
{12, 5153, 5169, 130, 2930}, // #139
{12, 5185, 5201, 242, 2930}, // #140
};
-static const int stringCollectionCount = 141;
-static const int stringCollectionMaxLen = 51;
+const int stringCollectionCount = 141;
+const int stringCollectionMaxLen = 51;
// average comparison length: 12.0922
// cache-line crosses: 6 (2.1%)
// alignment histogram:
diff --git a/tests/benchmarks/corelib/tools/qstring/data.h b/tests/benchmarks/corelib/tools/qstring/data.h
index c7a7467309..ce733fb25f 100644
--- a/tests/benchmarks/corelib/tools/qstring/data.h
+++ b/tests/benchmarks/corelib/tools/qstring/data.h
@@ -39,6 +39,9 @@
**
****************************************************************************/
+#ifndef DATA_H
+#define DATA_H
+
#include <qglobal.h>
struct StringCollection
@@ -49,5 +52,7 @@ struct StringCollection
};
extern const ushort stringCollectionData[];
-extern StringCollection stringCollection[];
+extern const StringCollection stringCollection[];
extern const int stringCollectionCount;
+
+#endif // DATA_H
diff --git a/tests/benchmarks/corelib/tools/qstring/generatelist.pl b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
index d027adb3ac..48a8518086 100644
--- a/tests/benchmarks/corelib/tools/qstring/generatelist.pl
+++ b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
@@ -103,9 +103,10 @@ sub printUshortArray($$$) {
return ($offset + $headpadding, $offset + $headpadding + $len + $tailpadding);
}
+print "// This is a generated file - DO NOT EDIT\n\n";
+
print "#include \"data.h\"\n\n";
-print "// This is a generated file - DO NOT EDIT\n";
print "const ushort stringCollectionData[] __attribute__((aligned(64))) = {\n";
$count = 0;
$offset = 0;
@@ -160,11 +161,10 @@ while (1) {
$totalsize += $len;
$maxlen = $len if $len > $maxlen;
}
-print "\n};\n";
+print "};\n";
close IN;
-print "struct StringCollection stringCollection[] = {\n";
-
+print "const struct StringCollection stringCollection[] = {\n";
for $i (0..$count-1) {
print " {",
$data[$i]->{len}, ", ",
diff --git a/tests/benchmarks/corelib/tools/qstring/main.cpp b/tests/benchmarks/corelib/tools/qstring/main.cpp
index 961605298c..eafcc24dca 100644
--- a/tests/benchmarks/corelib/tools/qstring/main.cpp
+++ b/tests/benchmarks/corelib/tools/qstring/main.cpp
@@ -1007,6 +1007,7 @@ static inline __attribute__((optimize("no-unroll-loops"))) int ucstrncmp_sse2_al
return ucstrncmp_short_tail(a + counter, b + counter, len);
}
+#ifdef __SSSE3__
static inline __attribute__((optimize("no-unroll-loops"))) int ucstrncmp_ssse3_alignr_aligned(const ushort *a, const ushort *b, int len)
{
quintptr counter = 0;
@@ -1276,6 +1277,7 @@ static int ucstrncmp_ssse3_aligning2(const ushort *a, const ushort *b, int len)
}
#endif
+#endif
typedef int (* UcstrncmpFunction)(const ushort *, const ushort *, int);
Q_DECLARE_METATYPE(UcstrncmpFunction)
diff --git a/tests/benchmarks/declarative/declarative.pro b/tests/benchmarks/declarative/declarative.pro
index 5dd31f3d13..cb02a35c27 100644
--- a/tests/benchmarks/declarative/declarative.pro
+++ b/tests/benchmarks/declarative/declarative.pro
@@ -12,4 +12,4 @@ SUBDIRS += \
contains(QT_CONFIG, opengl): SUBDIRS += painting
-
+include(../trusted-benchmarks.pri)
diff --git a/tests/benchmarks/gui/gui.pro b/tests/benchmarks/gui/gui.pro
index 946f1847fa..d8254583c5 100644
--- a/tests/benchmarks/gui/gui.pro
+++ b/tests/benchmarks/gui/gui.pro
@@ -9,3 +9,10 @@ SUBDIRS = \
painting \
styles \
text
+
+TRUSTED_BENCHMARKS += \
+ graphicsview/functional/GraphicsViewBenchmark \
+ graphicsview/qgraphicsview \
+ painting/qtracebench
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/network/network.pro b/tests/benchmarks/network/network.pro
index 73de556664..692a0a1b7e 100644
--- a/tests/benchmarks/network/network.pro
+++ b/tests/benchmarks/network/network.pro
@@ -4,3 +4,10 @@ SUBDIRS = \
kernel \
ssl \
socket
+
+TRUSTED_BENCHMARKS += \
+ kernel/qhostinfo \
+ socket/qtcpserver \
+ ssl/qsslsocket
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/opengl/opengl.pro b/tests/benchmarks/opengl/opengl.pro
index 5c58751178..b510c2bb06 100644
--- a/tests/benchmarks/opengl/opengl.pro
+++ b/tests/benchmarks/opengl/opengl.pro
@@ -8,3 +8,5 @@ QT += opengl
# Input
SOURCES += main.cpp
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
index 4610046596..6cf6fb3883 100644
--- a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
@@ -44,6 +44,8 @@
#include <QtScript/private/qscriptdeclarativeclass_p.h>
+Q_DECLARE_METATYPE(QScriptValue)
+
//TESTED_FILES=
class tst_QScriptEngine : public QObject
@@ -60,32 +62,65 @@ public slots:
private slots:
void constructor();
+ void defaultPrototype();
+ void setDefaultPrototype();
void evaluate_data();
void evaluate();
void evaluateProgram_data();
void evaluateProgram();
void connectAndDisconnect();
+ void globalObject();
+ void hasUncaughtException();
+ void isEvaluating();
+ void newArray_data();
+ void newArray();
+ void newDate();
+ void newDateFromMs();
void newObject();
+ void newObjectWithScriptClass();
+ void newQMetaObject();
void newQObject();
void newFunction();
+ void newRegExp();
+ void newRegExpFromString();
void newVariant();
+ void nullValue();
+ void undefinedValue();
void collectGarbage();
+ void currentContext();
void pushAndPopContext();
+ void availableExtensions();
+ void importedExtensions();
+ void toObject_data();
+ void toObject();
void toStringHandle();
void castValueToQreal();
void nativeCall();
+ void installTranslatorFunctions();
void translation_data();
void translation();
void readScopeProperty_data();
void readScopeProperty();
+
+private:
+ void defineStandardTestValues();
+ void newEngine()
+ {
+ delete m_engine;
+ m_engine = new QScriptEngine;
+ }
+
+ QScriptEngine *m_engine;
};
tst_QScriptEngine::tst_QScriptEngine()
+ : m_engine(0)
{
}
tst_QScriptEngine::~tst_QScriptEngine()
{
+ delete m_engine;
}
void tst_QScriptEngine::init()
@@ -104,6 +139,26 @@ void tst_QScriptEngine::constructor()
}
}
+void tst_QScriptEngine::defaultPrototype()
+{
+ newEngine();
+ int type = qMetaTypeId<int>();
+ m_engine->setDefaultPrototype(type, m_engine->newObject());
+ QBENCHMARK {
+ m_engine->defaultPrototype(type);
+ }
+}
+
+void tst_QScriptEngine::setDefaultPrototype()
+{
+ newEngine();
+ int type = qMetaTypeId<int>();
+ QScriptValue proto = m_engine->newObject();
+ QBENCHMARK {
+ m_engine->setDefaultPrototype(type, proto);
+ }
+}
+
void tst_QScriptEngine::evaluate_data()
{
QTest::addColumn<QString>("code");
@@ -144,20 +199,20 @@ void tst_QScriptEngine::evaluate_data()
void tst_QScriptEngine::evaluate()
{
QFETCH(QString, code);
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.evaluate(code);
+ (void)m_engine->evaluate(code);
}
}
void tst_QScriptEngine::connectAndDisconnect()
{
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate("(function() { })");
+ newEngine();
+ QScriptValue fun = m_engine->evaluate("(function() { })");
QBENCHMARK {
- qScriptConnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
- qScriptDisconnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
+ qScriptConnect(m_engine, SIGNAL(destroyed()), QScriptValue(), fun);
+ qScriptDisconnect(m_engine, SIGNAL(destroyed()), QScriptValue(), fun);
}
}
@@ -169,27 +224,105 @@ void tst_QScriptEngine::evaluateProgram_data()
void tst_QScriptEngine::evaluateProgram()
{
QFETCH(QString, code);
- QScriptEngine engine;
QScriptProgram program(code);
+ newEngine();
QBENCHMARK {
- (void)engine.evaluate(program);
+ (void)m_engine->evaluate(program);
+ }
+}
+
+void tst_QScriptEngine::globalObject()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->globalObject();
+ }
+}
+
+void tst_QScriptEngine::hasUncaughtException()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->hasUncaughtException();
+ }
+}
+
+void tst_QScriptEngine::isEvaluating()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->isEvaluating();
+ }
+}
+
+void tst_QScriptEngine::newArray_data()
+{
+ QTest::addColumn<int>("size");
+ QTest::newRow("size=0") << 0;
+ QTest::newRow("size=10") << 10;
+ QTest::newRow("size=100") << 0;
+ QTest::newRow("size=1000") << 0;
+ QTest::newRow("size=10000") << 0;
+ QTest::newRow("size=50000") << 0;
+}
+
+void tst_QScriptEngine::newArray()
+{
+ QFETCH(int, size);
+ newEngine();
+ QBENCHMARK {
+ m_engine->newArray(size);
+ }
+}
+
+void tst_QScriptEngine::newDate()
+{
+ newEngine();
+ QDateTime dt = QDateTime::currentDateTime();
+ QBENCHMARK {
+ m_engine->newDate(dt);
+ }
+}
+
+void tst_QScriptEngine::newDateFromMs()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->newDate(0);
}
}
void tst_QScriptEngine::newObject()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.newObject();
+ (void)m_engine->newObject();
+ }
+}
+
+void tst_QScriptEngine::newObjectWithScriptClass()
+{
+ newEngine();
+ QScriptClass cls(m_engine);
+ QBENCHMARK {
+ m_engine->newObject(&cls);
+ }
+}
+
+void tst_QScriptEngine::newQMetaObject()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
}
}
void tst_QScriptEngine::newQObject()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.newQObject(QCoreApplication::instance());
+ (void)m_engine->newQObject(QCoreApplication::instance());
}
}
@@ -200,50 +333,145 @@ static QScriptValue testFunction(QScriptContext *, QScriptEngine *)
void tst_QScriptEngine::newFunction()
{
- QScriptEngine engine;
+ newEngine();
+ QBENCHMARK {
+ (void)m_engine->newFunction(testFunction);
+ }
+}
+
+void tst_QScriptEngine::newRegExp()
+{
+ newEngine();
+ QRegExp re = QRegExp("foo");
+ QBENCHMARK {
+ m_engine->newRegExp(re);
+ }
+}
+
+void tst_QScriptEngine::newRegExpFromString()
+{
+ newEngine();
+ QString pattern("foo");
+ QString flags("gim");
QBENCHMARK {
- (void)engine.newFunction(testFunction);
+ m_engine->newRegExp(pattern, flags);
}
}
void tst_QScriptEngine::newVariant()
{
- QScriptEngine engine;
+ newEngine();
QVariant var(123);
QBENCHMARK {
- (void)engine.newVariant(var);
+ (void)m_engine->newVariant(var);
+ }
+}
+
+void tst_QScriptEngine::nullValue()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->nullValue();
+ }
+}
+
+void tst_QScriptEngine::undefinedValue()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->undefinedValue();
}
}
void tst_QScriptEngine::collectGarbage()
{
- QScriptEngine engine;
+ newEngine();
+ QBENCHMARK {
+ m_engine->collectGarbage();
+ }
+}
+
+void tst_QScriptEngine::availableExtensions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->availableExtensions();
+ }
+}
+
+void tst_QScriptEngine::importedExtensions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->importedExtensions();
+ }
+}
+
+void tst_QScriptEngine::currentContext()
+{
+ newEngine();
QBENCHMARK {
- engine.collectGarbage();
+ m_engine->currentContext();
}
}
void tst_QScriptEngine::pushAndPopContext()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.pushContext();
- engine.popContext();
+ (void)m_engine->pushContext();
+ m_engine->popContext();
+ }
+}
+
+void tst_QScriptEngine::toObject_data()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("bool") << m_engine->evaluate("true");
+ QTest::newRow("number") << m_engine->evaluate("123");
+ QTest::newRow("string") << m_engine->evaluate("'ciao'");
+ QTest::newRow("null") << m_engine->evaluate("null");
+ QTest::newRow("undefined") << m_engine->evaluate("undefined");
+ QTest::newRow("object") << m_engine->evaluate("({foo:123})");
+ QTest::newRow("array") << m_engine->evaluate("[10,20,30]");
+ QTest::newRow("function") << m_engine->evaluate("(function foo(a, b, c) { return a + b + c; })");
+ QTest::newRow("date") << m_engine->evaluate("new Date");
+ QTest::newRow("regexp") << m_engine->evaluate("new RegExp('foo')");
+ QTest::newRow("error") << m_engine->evaluate("new Error");
+
+ QTest::newRow("qobject") << m_engine->newQObject(this);
+ QTest::newRow("qmetaobject") << m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
+ QTest::newRow("variant") << m_engine->newVariant(123);
+ QTest::newRow("qscriptclassobject") << m_engine->newObject(new QScriptClass(m_engine));
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool-no-engine") << QScriptValue(true);
+ QTest::newRow("number-no-engine") << QScriptValue(123.0);
+ QTest::newRow("string-no-engine") << QScriptValue(QString::fromLatin1("hello"));
+ QTest::newRow("null-no-engine") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined-no-engine") << QScriptValue(QScriptValue::UndefinedValue);
+}
+
+void tst_QScriptEngine::toObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ m_engine->toObject(val);
}
}
void tst_QScriptEngine::toStringHandle()
{
- QScriptEngine engine;
+ newEngine();
QString str = QString::fromLatin1("foobarbaz");
QBENCHMARK {
- (void)engine.toStringHandle(str);
+ (void)m_engine->toStringHandle(str);
}
}
void tst_QScriptEngine::castValueToQreal()
{
- QScriptEngine engine;
QScriptValue val(123);
QBENCHMARK {
(void)qscriptvalue_cast<qreal>(val);
@@ -257,19 +485,27 @@ static QScriptValue native_function(QScriptContext *, QScriptEngine *)
void tst_QScriptEngine::nativeCall()
{
- QScriptEngine eng;
- eng.globalObject().setProperty("fun", eng.newFunction(native_function));
+ newEngine();
+ m_engine->globalObject().setProperty("fun", m_engine->newFunction(native_function));
QBENCHMARK{
#if !defined(Q_OS_SYMBIAN)
- eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
+ m_engine->evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
" w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
#else
- eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
+ m_engine->evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
" w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
#endif
}
}
+void tst_QScriptEngine::installTranslatorFunctions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->installTranslatorFunctions();
+ }
+}
+
void tst_QScriptEngine::translation_data()
{
QTest::addColumn<QString>("text");
@@ -284,11 +520,11 @@ void tst_QScriptEngine::translation()
{
QFETCH(QString, text);
QFETCH(QString, fileName);
- QScriptEngine engine;
- engine.installTranslatorFunctions();
+ newEngine();
+ m_engine->installTranslatorFunctions();
QBENCHMARK {
- (void)engine.evaluate(text, fileName);
+ (void)m_engine->evaluate(text, fileName);
}
}
@@ -307,33 +543,33 @@ void tst_QScriptEngine::readScopeProperty()
QFETCH(bool, staticScope);
QFETCH(bool, nestedScope);
- QScriptEngine engine;
- QScriptContext *ctx = engine.pushContext();
+ newEngine();
+ QScriptContext *ctx = m_engine->pushContext();
QScriptValue scope;
if (staticScope)
- scope = QScriptDeclarativeClass::newStaticScopeObject(&engine);
+ scope = QScriptDeclarativeClass::newStaticScopeObject(m_engine);
else
- scope = engine.newObject();
+ scope = m_engine->newObject();
scope.setProperty("foo", 123);
ctx->pushScope(scope);
if (nestedScope) {
QScriptValue scope2;
if (staticScope)
- scope2 = QScriptDeclarativeClass::newStaticScopeObject(&engine);
+ scope2 = QScriptDeclarativeClass::newStaticScopeObject(m_engine);
else
- scope2 = engine.newObject();
+ scope2 = m_engine->newObject();
scope2.setProperty("bar", 456); // ensure a miss in inner scope
ctx->pushScope(scope2);
}
- QScriptValue fun = engine.evaluate("(function() {\n"
+ QScriptValue fun = m_engine->evaluate("(function() {\n"
" for (var i = 0; i < 10000; ++i) {\n"
" foo; foo; foo; foo; foo; foo; foo; foo;\n"
" }\n"
"})");
- engine.popContext();
+ m_engine->popContext();
QVERIFY(fun.isFunction());
QBENCHMARK {
fun.call();
diff --git a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
index e68db066fa..62f3c2a3ff 100644
--- a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
+++ b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
@@ -309,6 +309,9 @@ private slots:
void qobjectSignalHandler();
void customTypeSignalHandler();
+ void emitSignal_data();
+ void emitSignal();
+
void readButtonMetaProperty_data();
void readButtonMetaProperty();
@@ -948,6 +951,31 @@ void tst_QScriptQObject::customTypeSignalHandler()
}
}
+void tst_QScriptQObject::emitSignal_data()
+{
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<QString>("arguments");
+
+ QTest::newRow("voidSignal()") << "voidSignal" << "";
+
+ QTest::newRow("boolSignal(true)") << "boolSignal" << "true";
+ QTest::newRow("intSignal(123)") << "intSignal" << "123";
+ QTest::newRow("doubleSignal(123)") << "doubleSignal" << "123";
+ QTest::newRow("stringSignal('hello')") << "stringSignal" << "'hello'";
+ QTest::newRow("variantSignal(123)") << "variantSignal" << "123";
+ QTest::newRow("qobjectSignal(this)") << "qobjectSignal" << "this"; // assumes 'this' is a QObject
+}
+
+void tst_QScriptQObject::emitSignal()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(QString, arguments);
+
+ QScriptEngine engine;
+ SignalTestObject testObject;
+ callMethodHelper(engine, &testObject, propertyName, arguments);
+}
+
void tst_QScriptQObject::readButtonMetaProperty_data()
{
readMetaProperty_dataHelper(&QPushButton::staticMetaObject);
diff --git a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
index d7bb04bb10..d90edbc4b6 100644
--- a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
@@ -42,6 +42,8 @@
#include <qtest.h>
#include <QtScript>
+Q_DECLARE_METATYPE(QScriptValue)
+
//TESTED_FILES=
class tst_QScriptValue : public QObject
@@ -57,28 +59,133 @@ public slots:
void cleanup();
private slots:
+ void boolConstructor();
+ void floatConstructor();
void numberConstructor();
void stringConstructor();
+ void nullConstructor();
+ void undefinedConstructor();
+ void boolConstructorWithEngine();
+ void floatConstructorWithEngine();
+ void intConstructorWithEngine();
+ void stringConstructorWithEngine();
+ void nullConstructorWithEngine();
+ void undefinedConstructorWithEngine();
+ void copyConstructor_data();
+ void copyConstructor();
void call_data();
void call();
void construct_data();
void construct();
+ void data();
+ void setData();
+ void data_noData_data();
+ void data_noData();
+ void engine_data();
+ void engine();
+ void equalsSelf_data();
+ void equalsSelf();
+ void lessThanSelf_data();
+ void lessThanSelf();
+ void strictlyEqualsSelf_data();
+ void strictlyEqualsSelf();
+ void instanceOf();
+ void isArray_data();
+ void isArray();
+ void isBool_data();
+ void isBool();
+ void isDate_data();
+ void isDate();
+ void isError_data();
+ void isError();
+ void isFunction_data();
+ void isFunction();
+ void isNull_data();
+ void isNull();
+ void isNumber_data();
+ void isNumber();
+ void isObject_data();
+ void isObject();
+ void isQMetaObject_data();
+ void isQMetaObject();
+ void isQObject_data();
+ void isQObject();
+ void isRegExp_data();
+ void isRegExp();
+ void isString_data();
+ void isString();
+ void isUndefined_data();
+ void isUndefined();
+ void isValid_data();
+ void isValid();
+ void isVariant_data();
+ void isVariant();
+ void toBool_data();
+ void toBool();
+ void toDateTime_data();
+ void toDateTime();
+ void toInt32_data();
+ void toInt32();
+ void toInteger_data();
+ void toInteger();
+ void toNumber_data();
+ void toNumber();
+ void toRegExp_data();
+ void toRegExp();
void toString_data();
void toString();
+ void toUInt16_data();
+ void toUInt16();
+ void toUInt32_data();
+ void toUInt32();
+ void toQMetaObject_data();
+ void toQMetaObject();
+ void toQObject_data();
void toQObject();
+ void toVariant_data();
+ void toVariant();
+ void property_data();
void property();
+ void propertyById_data();
+ void propertyById();
+ void propertyByIndex();
+ void setProperty_data();
void setProperty();
+ void setPropertyById_data();
+ void setPropertyById();
+ void setPropertyByIndex();
+ void propertyFlags_data();
void propertyFlags();
+ void propertyFlagsById_data();
+ void propertyFlagsById();
+ void prototype_data();
+ void prototype();
+ void setPrototype();
+ void scriptClass_data();
+ void scriptClass();
+ void setScriptClass();
void readMetaProperty();
void writeMetaProperty();
+
+private:
+ void defineStandardTestValues();
+ void newEngine()
+ {
+ delete m_engine;
+ m_engine = new QScriptEngine;
+ }
+
+ QScriptEngine *m_engine;
};
tst_QScriptValue::tst_QScriptValue()
+ : m_engine(0)
{
}
tst_QScriptValue::~tst_QScriptValue()
{
+ delete m_engine;
}
void tst_QScriptValue::init()
@@ -89,6 +196,20 @@ void tst_QScriptValue::cleanup()
{
}
+void tst_QScriptValue::boolConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(true);
+ }
+}
+
+void tst_QScriptValue::floatConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(123.0);
+ }
+}
+
void tst_QScriptValue::numberConstructor()
{
QBENCHMARK {
@@ -104,8 +225,85 @@ void tst_QScriptValue::stringConstructor()
}
}
+void tst_QScriptValue::nullConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(QScriptValue::NullValue);
+ }
+}
+
+void tst_QScriptValue::undefinedConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(QScriptValue::UndefinedValue);
+ }
+}
+
+void tst_QScriptValue::boolConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, true);
+ }
+}
+
+void tst_QScriptValue::floatConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, 123.0);
+ }
+}
+
+void tst_QScriptValue::intConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ (void)QScriptValue(m_engine, 123);
+ }
+}
+
+void tst_QScriptValue::stringConstructorWithEngine()
+{
+ newEngine();
+ QString str = QString::fromLatin1("ciao");
+ QBENCHMARK {
+ (void)QScriptValue(m_engine, str);
+ }
+}
+
+void tst_QScriptValue::nullConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, QScriptValue::NullValue);
+ }
+}
+
+void tst_QScriptValue::undefinedConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, QScriptValue::UndefinedValue);
+ }
+}
+
+void tst_QScriptValue::copyConstructor_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::copyConstructor()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ QScriptValue copy(val);
+ }
+}
+
void tst_QScriptValue::call_data()
{
+ newEngine();
QTest::addColumn<QString>("code");
QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
QTest::newRow("function returning number") << QString::fromLatin1("(function(){ return 123; })");
@@ -115,8 +313,7 @@ void tst_QScriptValue::call_data()
void tst_QScriptValue::call()
{
QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate(code);
+ QScriptValue fun = m_engine->evaluate(code);
QVERIFY(fun.isFunction());
QBENCHMARK {
(void)fun.call();
@@ -125,6 +322,7 @@ void tst_QScriptValue::call()
void tst_QScriptValue::construct_data()
{
+ newEngine();
QTest::addColumn<QString>("code");
QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
QTest::newRow("simple constructor") << QString::fromLatin1("(function(){ this.x = 10; this.y = 20; })");
@@ -133,81 +331,646 @@ void tst_QScriptValue::construct_data()
void tst_QScriptValue::construct()
{
QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate(code);
+ QScriptValue fun = m_engine->evaluate(code);
QVERIFY(fun.isFunction());
QBENCHMARK {
(void)fun.construct();
}
}
+void tst_QScriptValue::data()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ obj.setData(QScriptValue(m_engine, 123));
+ QBENCHMARK {
+ obj.data();
+ }
+}
+
+void tst_QScriptValue::setData()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue val(m_engine, 123);
+ QBENCHMARK {
+ obj.setData(val);
+ }
+}
+
+void tst_QScriptValue::data_noData_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::data_noData()
+{
+ QFETCH(QScriptValue, val);
+ QVERIFY(!val.data().isValid());
+ QBENCHMARK {
+ val.data();
+ }
+}
+
+void tst_QScriptValue::engine_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::engine()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.engine();
+ }
+}
+
+void tst_QScriptValue::equalsSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::equalsSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.equals(val);
+ }
+}
+
+void tst_QScriptValue::lessThanSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::lessThanSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.lessThan(val);
+ }
+}
+
+void tst_QScriptValue::strictlyEqualsSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::strictlyEqualsSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.strictlyEquals(val);
+ }
+}
+
+void tst_QScriptValue::instanceOf()
+{
+ newEngine();
+ QScriptValue arrayCtor = m_engine->globalObject().property("Array");
+ QScriptValue array = arrayCtor.construct();
+ QVERIFY(array.instanceOf(arrayCtor));
+ QBENCHMARK {
+ array.instanceOf(arrayCtor);
+ }
+}
+
+void tst_QScriptValue::isArray_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isArray()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isArray();
+ }
+}
+
+void tst_QScriptValue::isBool_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isBool()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isBool();
+ }
+}
+
+void tst_QScriptValue::isDate_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isDate()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isDate();
+ }
+}
+
+void tst_QScriptValue::isError_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isError()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isError();
+ }
+}
+
+void tst_QScriptValue::isFunction_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isFunction()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isFunction();
+ }
+}
+
+void tst_QScriptValue::isNull_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isNull()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isNull();
+ }
+}
+
+void tst_QScriptValue::isNumber_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isNumber()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isNumber();
+ }
+}
+
+void tst_QScriptValue::isObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isObject();
+ }
+}
+
+void tst_QScriptValue::isQMetaObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isQMetaObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isQMetaObject();
+ }
+}
+
+void tst_QScriptValue::isQObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isQObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isQObject();
+ }
+}
+
+void tst_QScriptValue::isRegExp_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isRegExp()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isRegExp();
+ }
+}
+
+void tst_QScriptValue::isString_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isString()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isString();
+ }
+}
+
+void tst_QScriptValue::isUndefined_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isUndefined()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isUndefined();
+ }
+}
+
+void tst_QScriptValue::isValid_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isValid()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isValid();
+ }
+}
+
+void tst_QScriptValue::isVariant_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isVariant()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isVariant();
+ }
+}
+
+void tst_QScriptValue::toBool_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toBool()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toBool();
+ }
+}
+
+void tst_QScriptValue::toDateTime_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toDateTime()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toDateTime();
+ }
+}
+
+void tst_QScriptValue::toInt32_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toInt32()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toInt32();
+ }
+}
+
+void tst_QScriptValue::toInteger_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toInteger()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toInteger();
+ }
+}
+
+void tst_QScriptValue::toNumber_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toNumber()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toNumber();
+ }
+}
+
+void tst_QScriptValue::toRegExp_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toRegExp()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toRegExp();
+ }
+}
+
void tst_QScriptValue::toString_data()
{
- QTest::addColumn<QString>("code");
- QTest::newRow("number") << QString::fromLatin1("123");
- QTest::newRow("string") << QString::fromLatin1("'ciao'");
- QTest::newRow("null") << QString::fromLatin1("null");
- QTest::newRow("undefined") << QString::fromLatin1("undefined");
- QTest::newRow("function") << QString::fromLatin1("(function foo(a, b, c) { return a + b + c; })");
+ defineStandardTestValues();
}
void tst_QScriptValue::toString()
{
- QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue val = engine.evaluate(code);
+ QFETCH(QScriptValue, val);
QBENCHMARK {
(void)val.toString();
}
}
+void tst_QScriptValue::toQMetaObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toQMetaObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toQMetaObject();
+ }
+}
+
+void tst_QScriptValue::toQObject_data()
+{
+ defineStandardTestValues();
+}
+
void tst_QScriptValue::toQObject()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newQObject(QCoreApplication::instance());
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ (void)val.toQObject();
+ }
+}
+
+void tst_QScriptValue::toUInt16_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toUInt16()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toUInt16();
+ }
+}
+
+void tst_QScriptValue::toUInt32_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toUInt32()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toUInt32();
+ }
+}
+
+void tst_QScriptValue::toVariant_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toVariant()
+{
+ QFETCH(QScriptValue, val);
QBENCHMARK {
- (void)obj.toQObject();
+ val.toVariant();
}
}
+void tst_QScriptValue::property_data()
+{
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<bool>("create");
+ QTest::newRow("foo") << QString::fromLatin1("foo") << true;
+ QTest::newRow("hasOwnProperty") << QString::fromLatin1("hasOwnProperty") << false; // From Object.prototype.
+ QTest::newRow("noSuchProperty") << QString::fromLatin1("noSuchProperty") << false;
+}
void tst_QScriptValue::property()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- obj.setProperty(propertyName, 123);
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ if (create)
+ obj.setProperty(propertyName, 123);
QBENCHMARK {
(void)obj.property(propertyName);
}
}
+void tst_QScriptValue::propertyById_data()
+{
+ property_data();
+}
+
+void tst_QScriptValue::propertyById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ if (create)
+ obj.setProperty(id, 123);
+ QBENCHMARK {
+ obj.property(id);
+ }
+}
+
+void tst_QScriptValue::propertyByIndex()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ obj.setProperty(123, 456);
+ QBENCHMARK {
+ obj.property(123);
+ }
+}
+
+void tst_QScriptValue::setProperty_data()
+{
+ newEngine();
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("foo") << QString::fromLatin1("foo") << QScriptValue(123);
+ QTest::newRow("bar") << QString::fromLatin1("bar") << QScriptValue(m_engine, 123);
+ QTest::newRow("baz") << QString::fromLatin1("baz") << QScriptValue();
+ QTest::newRow("toString") << QString::fromLatin1("toString") << QScriptValue(m_engine, true);
+}
+
void tst_QScriptValue::setProperty()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- QScriptValue val(123);
+ QFETCH(QString, propertyName);
+ QFETCH(QScriptValue, val);
+ QScriptValue obj = m_engine->newObject();
QBENCHMARK {
obj.setProperty(propertyName, val);
}
}
+void tst_QScriptValue::setPropertyById_data()
+{
+ setProperty_data();
+}
+
+void tst_QScriptValue::setPropertyById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(QScriptValue, val);
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ QBENCHMARK {
+ obj.setProperty(id, val);
+ }
+}
+
+void tst_QScriptValue::setPropertyByIndex()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue val(456);
+ QBENCHMARK {
+ obj.setProperty(123, 456);
+ }
+}
+
+void tst_QScriptValue::propertyFlags_data()
+{
+ property_data();
+}
+
void tst_QScriptValue::propertyFlags()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ if (create)
+ obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
QBENCHMARK {
(void)obj.propertyFlags(propertyName);
}
}
+void tst_QScriptValue::propertyFlagsById_data()
+{
+ propertyFlags_data();
+}
+
+void tst_QScriptValue::propertyFlagsById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ if (create)
+ obj.setProperty(id, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
+ QBENCHMARK {
+ obj.propertyFlags(id);
+ }
+}
+
+void tst_QScriptValue::prototype_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::prototype()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.prototype();
+ }
+}
+
+void tst_QScriptValue::setPrototype()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue proto = m_engine->newObject();
+ QBENCHMARK {
+ obj.setPrototype(proto);
+ }
+}
+
+void tst_QScriptValue::scriptClass_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::scriptClass()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.scriptClass();
+ }
+}
+
+void tst_QScriptValue::setScriptClass()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptClass cls(m_engine);
+ QBENCHMARK {
+ obj.setScriptClass(&cls);
+ }
+}
+
void tst_QScriptValue::readMetaProperty()
{
- QScriptEngine engine;
- QScriptValue object = engine.newQObject(QCoreApplication::instance());
- QScriptString propertyName = engine.toStringHandle("objectName");
+ newEngine();
+ QScriptValue object = m_engine->newQObject(QCoreApplication::instance());
+ QScriptString propertyName = m_engine->toStringHandle("objectName");
QBENCHMARK {
for (int i = 0; i < 10000; ++i)
object.property(propertyName);
@@ -216,15 +979,44 @@ void tst_QScriptValue::readMetaProperty()
void tst_QScriptValue::writeMetaProperty()
{
- QScriptEngine engine;
- QScriptValue object = engine.newQObject(QCoreApplication::instance());
- QScriptString propertyName = engine.toStringHandle("objectName");
- QScriptValue value(&engine, "foo");
+ newEngine();
+ QScriptValue object = m_engine->newQObject(QCoreApplication::instance());
+ QScriptString propertyName = m_engine->toStringHandle("objectName");
+ QScriptValue value(m_engine, "foo");
QBENCHMARK {
for (int i = 0; i < 10000; ++i)
object.setProperty(propertyName, value);
}
}
+void tst_QScriptValue::defineStandardTestValues()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("bool") << m_engine->evaluate("true");
+ QTest::newRow("number") << m_engine->evaluate("123");
+ QTest::newRow("string") << m_engine->evaluate("'ciao'");
+ QTest::newRow("null") << m_engine->evaluate("null");
+ QTest::newRow("undefined") << m_engine->evaluate("undefined");
+ QTest::newRow("object") << m_engine->evaluate("({foo:123})");
+ QTest::newRow("array") << m_engine->evaluate("[10,20,30]");
+ QTest::newRow("function") << m_engine->evaluate("(function foo(a, b, c) { return a + b + c; })");
+ QTest::newRow("date") << m_engine->evaluate("new Date");
+ QTest::newRow("regexp") << m_engine->evaluate("new RegExp('foo')");
+ QTest::newRow("error") << m_engine->evaluate("new Error");
+
+ QTest::newRow("qobject") << m_engine->newQObject(this);
+ QTest::newRow("qmetaobject") << m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
+ QTest::newRow("variant") << m_engine->newVariant(123);
+ QTest::newRow("qscriptclassobject") << m_engine->newObject(new QScriptClass(m_engine));
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool-no-engine") << QScriptValue(true);
+ QTest::newRow("number-no-engine") << QScriptValue(123.0);
+ QTest::newRow("string-no-engine") << QScriptValue(QString::fromLatin1("hello"));
+ QTest::newRow("null-no-engine") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined-no-engine") << QScriptValue(QScriptValue::UndefinedValue);
+}
+
QTEST_MAIN(tst_QScriptValue)
#include "tst_qscriptvalue.moc"
diff --git a/tests/benchmarks/script/script.pro b/tests/benchmarks/script/script.pro
index 8d689b618f..dd17012700 100644
--- a/tests/benchmarks/script/script.pro
+++ b/tests/benchmarks/script/script.pro
@@ -2,4 +2,13 @@ TEMPLATE = subdirs
SUBDIRS = \
qscriptclass \
qscriptengine \
- qscriptvalue
+ qscriptvalue \
+ sunspider \
+ v8
+
+TRUSTED_BENCHMARKS += \
+ qscriptclass \
+ qscriptvalue \
+ qscriptengine
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/script/sunspider/sunspider.pro b/tests/benchmarks/script/sunspider/sunspider.pro
new file mode 100644
index 0000000000..431505b2e4
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/sunspider.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_sunspider
+
+SOURCES += tst_sunspider.cpp
+
+QT = core script
+
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+wince*|symbian: {
+testFiles.sources = tests
+testFiles.path = .
+DEPLOYMENT += testFiles
+}
+
+symbian* {
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
+ TARGET.EPOCSTACKSIZE = 0x14000
+}
diff --git a/tests/benchmarks/script/sunspider/tests/3d-cube.js b/tests/benchmarks/script/sunspider/tests/3d-cube.js
new file mode 100644
index 0000000000..e2cd6f9a5f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-cube.js
@@ -0,0 +1,337 @@
+// 3D Cube Rotation
+// http://www.speich.net/computer/moztesting/3d.htm
+// Created by Simon Speich
+
+var Q = new Array();
+var MTrans = new Array(); // transformation matrix
+var MQube = new Array(); // position information of qube
+var I = new Array(); // entity matrix
+var Origin = new Object();
+var Testing = new Object();
+var LoopTimer;
+
+var DisplArea = new Object();
+DisplArea.Width = 300;
+DisplArea.Height = 300;
+
+function DrawLine(From, To) {
+ var x1 = From.V[0];
+ var x2 = To.V[0];
+ var y1 = From.V[1];
+ var y2 = To.V[1];
+ var dx = Math.abs(x2 - x1);
+ var dy = Math.abs(y2 - y1);
+ var x = x1;
+ var y = y1;
+ var IncX1, IncY1;
+ var IncX2, IncY2;
+ var Den;
+ var Num;
+ var NumAdd;
+ var NumPix;
+
+ if (x2 >= x1) { IncX1 = 1; IncX2 = 1; }
+ else { IncX1 = -1; IncX2 = -1; }
+ if (y2 >= y1) { IncY1 = 1; IncY2 = 1; }
+ else { IncY1 = -1; IncY2 = -1; }
+ if (dx >= dy) {
+ IncX1 = 0;
+ IncY2 = 0;
+ Den = dx;
+ Num = dx / 2;
+ NumAdd = dy;
+ NumPix = dx;
+ }
+ else {
+ IncX2 = 0;
+ IncY1 = 0;
+ Den = dy;
+ Num = dy / 2;
+ NumAdd = dx;
+ NumPix = dy;
+ }
+
+ NumPix = Math.round(Q.LastPx + NumPix);
+
+ var i = Q.LastPx;
+ for (; i < NumPix; i++) {
+ Num += NumAdd;
+ if (Num >= Den) {
+ Num -= Den;
+ x += IncX1;
+ y += IncY1;
+ }
+ x += IncX2;
+ y += IncY2;
+ }
+ Q.LastPx = NumPix;
+}
+
+function CalcCross(V0, V1) {
+ var Cross = new Array();
+ Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];
+ Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];
+ Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];
+ return Cross;
+}
+
+function CalcNormal(V0, V1, V2) {
+ var A = new Array(); var B = new Array();
+ for (var i = 0; i < 3; i++) {
+ A[i] = V0[i] - V1[i];
+ B[i] = V2[i] - V1[i];
+ }
+ A = CalcCross(A, B);
+ var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
+ for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
+ A[3] = 1;
+ return A;
+}
+
+function CreateP(X,Y,Z) {
+ this.V = [X,Y,Z,1];
+}
+
+// multiplies two matrices
+function MMulti(M1, M2) {
+ var M = [[],[],[],[]];
+ var i = 0;
+ var j = 0;
+ for (; i < 4; i++) {
+ j = 0;
+ for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];
+ }
+ return M;
+}
+
+//multiplies matrix with vector
+function VMulti(M, V) {
+ var Vect = new Array();
+ var i = 0;
+ for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];
+ return Vect;
+}
+
+function VMulti2(M, V) {
+ var Vect = new Array();
+ var i = 0;
+ for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];
+ return Vect;
+}
+
+// add to matrices
+function MAdd(M1, M2) {
+ var M = [[],[],[],[]];
+ var i = 0;
+ var j = 0;
+ for (; i < 4; i++) {
+ j = 0;
+ for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];
+ }
+ return M;
+}
+
+function Translate(M, Dx, Dy, Dz) {
+ var T = [
+ [1,0,0,Dx],
+ [0,1,0,Dy],
+ [0,0,1,Dz],
+ [0,0,0,1]
+ ];
+ return MMulti(T, M);
+}
+
+function RotateX(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [1,0,0,0],
+ [0,Cos,-Sin,0],
+ [0,Sin,Cos,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function RotateY(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [Cos,0,Sin,0],
+ [0,1,0,0],
+ [-Sin,0,Cos,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function RotateZ(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [Cos,-Sin,0,0],
+ [Sin,Cos,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function DrawQube() {
+ // calc current normals
+ var CurN = new Array();
+ var i = 5;
+ Q.LastPx = 0;
+ for (; i > -1; i--) CurN[i] = VMulti2(MQube, Q.Normal[i]);
+ if (CurN[0][2] < 0) {
+ if (!Q.Line[0]) { DrawLine(Q[0], Q[1]); Q.Line[0] = true; };
+ if (!Q.Line[1]) { DrawLine(Q[1], Q[2]); Q.Line[1] = true; };
+ if (!Q.Line[2]) { DrawLine(Q[2], Q[3]); Q.Line[2] = true; };
+ if (!Q.Line[3]) { DrawLine(Q[3], Q[0]); Q.Line[3] = true; };
+ }
+ if (CurN[1][2] < 0) {
+ if (!Q.Line[2]) { DrawLine(Q[3], Q[2]); Q.Line[2] = true; };
+ if (!Q.Line[9]) { DrawLine(Q[2], Q[6]); Q.Line[9] = true; };
+ if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
+ if (!Q.Line[10]) { DrawLine(Q[7], Q[3]); Q.Line[10] = true; };
+ }
+ if (CurN[2][2] < 0) {
+ if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
+ if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
+ if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
+ if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
+ }
+ if (CurN[3][2] < 0) {
+ if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
+ if (!Q.Line[8]) { DrawLine(Q[5], Q[1]); Q.Line[8] = true; };
+ if (!Q.Line[0]) { DrawLine(Q[1], Q[0]); Q.Line[0] = true; };
+ if (!Q.Line[11]) { DrawLine(Q[0], Q[4]); Q.Line[11] = true; };
+ }
+ if (CurN[4][2] < 0) {
+ if (!Q.Line[11]) { DrawLine(Q[4], Q[0]); Q.Line[11] = true; };
+ if (!Q.Line[3]) { DrawLine(Q[0], Q[3]); Q.Line[3] = true; };
+ if (!Q.Line[10]) { DrawLine(Q[3], Q[7]); Q.Line[10] = true; };
+ if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
+ }
+ if (CurN[5][2] < 0) {
+ if (!Q.Line[8]) { DrawLine(Q[1], Q[5]); Q.Line[8] = true; };
+ if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
+ if (!Q.Line[9]) { DrawLine(Q[6], Q[2]); Q.Line[9] = true; };
+ if (!Q.Line[1]) { DrawLine(Q[2], Q[1]); Q.Line[1] = true; };
+ }
+ Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
+ Q.LastPx = 0;
+}
+
+function Loop() {
+ if (Testing.LoopCount > Testing.LoopMax) return;
+ var TestingStr = String(Testing.LoopCount);
+ while (TestingStr.length < 3) TestingStr = "0" + TestingStr;
+ MTrans = Translate(I, -Q[8].V[0], -Q[8].V[1], -Q[8].V[2]);
+ MTrans = RotateX(MTrans, 1);
+ MTrans = RotateY(MTrans, 3);
+ MTrans = RotateZ(MTrans, 5);
+ MTrans = Translate(MTrans, Q[8].V[0], Q[8].V[1], Q[8].V[2]);
+ MQube = MMulti(MTrans, MQube);
+ var i = 8;
+ for (; i > -1; i--) {
+ Q[i].V = VMulti(MTrans, Q[i].V);
+ }
+ DrawQube();
+ Testing.LoopCount++;
+ Loop();
+}
+
+function Init(CubeSize) {
+ // init/reset vars
+ Origin.V = [150,150,20,1];
+ Testing.LoopCount = 0;
+ Testing.LoopMax = 50;
+ Testing.TimeMax = 0;
+ Testing.TimeAvg = 0;
+ Testing.TimeMin = 0;
+ Testing.TimeTemp = 0;
+ Testing.TimeTotal = 0;
+ Testing.Init = false;
+
+ // transformation matrix
+ MTrans = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // position information of qube
+ MQube = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // entity matrix
+ I = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // create qube
+ Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
+ Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
+ Q[2] = new CreateP( CubeSize, CubeSize, CubeSize);
+ Q[3] = new CreateP( CubeSize,-CubeSize, CubeSize);
+ Q[4] = new CreateP(-CubeSize,-CubeSize,-CubeSize);
+ Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
+ Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
+ Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
+
+ // center of gravity
+ Q[8] = new CreateP(0, 0, 0);
+
+ // anti-clockwise edge check
+ Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
+
+ // calculate squad normals
+ Q.Normal = new Array();
+ for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
+
+ // line drawn ?
+ Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
+
+ // create line pixels
+ Q.NumPx = 9 * 2 * CubeSize;
+ for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
+
+ MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
+ MQube = MMulti(MTrans, MQube);
+
+ var i = 0;
+ for (; i < 9; i++) {
+ Q[i].V = VMulti(MTrans, Q[i].V);
+ }
+ DrawQube();
+ Testing.Init = true;
+ Loop();
+}
+
+for ( var i = 20; i <= 160; i *= 2 ) {
+ Init(i);
+}
+
+Q = null;
+MTrans = null;
+MQube = null;
+I = null;
+Origin = null;
+Testing = null;
+LoopTime = null;
+DisplArea = null;
diff --git a/tests/benchmarks/script/sunspider/tests/3d-morph.js b/tests/benchmarks/script/sunspider/tests/3d-morph.js
new file mode 100644
index 0000000000..d4238c080b
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-morph.js
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+var loops = 15
+var nx = 120
+var nz = 120
+
+function morph(a, f) {
+ var PI2nx = Math.PI * 8/nx
+ var sin = Math.sin
+ var f30 = -(50 * sin(f*Math.PI*2))
+
+ for (var i = 0; i < nz; ++i) {
+ for (var j = 0; j < nx; ++j) {
+ a[3*(i*nx+j)+1] = sin((j-1) * PI2nx ) * -f30
+ }
+ }
+}
+
+
+var a = Array()
+for (var i=0; i < nx*nz*3; ++i)
+ a[i] = 0
+
+for (var i = 0; i < loops; ++i) {
+ morph(a, i/loops)
+}
+
+testOutput = 0;
+for (var i = 0; i < nx; i++)
+ testOutput += a[3*(i*nx+i)+1];
+a = null;
diff --git a/tests/benchmarks/script/sunspider/tests/3d-raytrace.js b/tests/benchmarks/script/sunspider/tests/3d-raytrace.js
new file mode 100644
index 0000000000..e7b959e1ca
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-raytrace.js
@@ -0,0 +1,441 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+function createVector(x,y,z) {
+ return new Array(x,y,z);
+}
+
+function sqrLengthVector(self) {
+ return self[0] * self[0] + self[1] * self[1] + self[2] * self[2];
+}
+
+function lengthVector(self) {
+ return Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
+}
+
+function addVector(self, v) {
+ self[0] += v[0];
+ self[1] += v[1];
+ self[2] += v[2];
+ return self;
+}
+
+function subVector(self, v) {
+ self[0] -= v[0];
+ self[1] -= v[1];
+ self[2] -= v[2];
+ return self;
+}
+
+function scaleVector(self, scale) {
+ self[0] *= scale;
+ self[1] *= scale;
+ self[2] *= scale;
+ return self;
+}
+
+function normaliseVector(self) {
+ var len = Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
+ self[0] /= len;
+ self[1] /= len;
+ self[2] /= len;
+ return self;
+}
+
+function add(v1, v2) {
+ return new Array(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);
+}
+
+function sub(v1, v2) {
+ return new Array(v1[0] - v2[0], v1[1] - v2[1], v1[2] - v2[2]);
+}
+
+function scalev(v1, v2) {
+ return new Array(v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]);
+}
+
+function dot(v1, v2) {
+ return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
+}
+
+function scale(v, scale) {
+ return [v[0] * scale, v[1] * scale, v[2] * scale];
+}
+
+function cross(v1, v2) {
+ return [v1[1] * v2[2] - v1[2] * v2[1],
+ v1[2] * v2[0] - v1[0] * v2[2],
+ v1[0] * v2[1] - v1[1] * v2[0]];
+
+}
+
+function normalise(v) {
+ var len = lengthVector(v);
+ return [v[0] / len, v[1] / len, v[2] / len];
+}
+
+function transformMatrix(self, v) {
+ var vals = self;
+ var x = vals[0] * v[0] + vals[1] * v[1] + vals[2] * v[2] + vals[3];
+ var y = vals[4] * v[0] + vals[5] * v[1] + vals[6] * v[2] + vals[7];
+ var z = vals[8] * v[0] + vals[9] * v[1] + vals[10] * v[2] + vals[11];
+ return [x, y, z];
+}
+
+function invertMatrix(self) {
+ var temp = new Array(16);
+ var tx = -self[3];
+ var ty = -self[7];
+ var tz = -self[11];
+ for (h = 0; h < 3; h++)
+ for (v = 0; v < 3; v++)
+ temp[h + v * 4] = self[v + h * 4];
+ for (i = 0; i < 11; i++)
+ self[i] = temp[i];
+ self[3] = tx * self[0] + ty * self[1] + tz * self[2];
+ self[7] = tx * self[4] + ty * self[5] + tz * self[6];
+ self[11] = tx * self[8] + ty * self[9] + tz * self[10];
+ return self;
+}
+
+
+// Triangle intersection using barycentric coord method
+function Triangle(p1, p2, p3) {
+ var edge1 = sub(p3, p1);
+ var edge2 = sub(p2, p1);
+ var normal = cross(edge1, edge2);
+ if (Math.abs(normal[0]) > Math.abs(normal[1]))
+ if (Math.abs(normal[0]) > Math.abs(normal[2]))
+ this.axis = 0;
+ else
+ this.axis = 2;
+ else
+ if (Math.abs(normal[1]) > Math.abs(normal[2]))
+ this.axis = 1;
+ else
+ this.axis = 2;
+ var u = (this.axis + 1) % 3;
+ var v = (this.axis + 2) % 3;
+ var u1 = edge1[u];
+ var v1 = edge1[v];
+
+ var u2 = edge2[u];
+ var v2 = edge2[v];
+ this.normal = normalise(normal);
+ this.nu = normal[u] / normal[this.axis];
+ this.nv = normal[v] / normal[this.axis];
+ this.nd = dot(normal, p1) / normal[this.axis];
+ var det = u1 * v2 - v1 * u2;
+ this.eu = p1[u];
+ this.ev = p1[v];
+ this.nu1 = u1 / det;
+ this.nv1 = -v1 / det;
+ this.nu2 = v2 / det;
+ this.nv2 = -u2 / det;
+ this.material = [0.7, 0.7, 0.7];
+}
+
+Triangle.prototype.intersect = function(orig, dir, near, far) {
+ var u = (this.axis + 1) % 3;
+ var v = (this.axis + 2) % 3;
+ var d = dir[this.axis] + this.nu * dir[u] + this.nv * dir[v];
+ var t = (this.nd - orig[this.axis] - this.nu * orig[u] - this.nv * orig[v]) / d;
+ if (t < near || t > far)
+ return null;
+ var Pu = orig[u] + t * dir[u] - this.eu;
+ var Pv = orig[v] + t * dir[v] - this.ev;
+ var a2 = Pv * this.nu1 + Pu * this.nv1;
+ if (a2 < 0)
+ return null;
+ var a3 = Pu * this.nu2 + Pv * this.nv2;
+ if (a3 < 0)
+ return null;
+
+ if ((a2 + a3) > 1)
+ return null;
+ return t;
+}
+
+function Scene(a_triangles) {
+ this.triangles = a_triangles;
+ this.lights = [];
+ this.ambient = [0,0,0];
+ this.background = [0.8,0.8,1];
+}
+var zero = new Array(0,0,0);
+
+Scene.prototype.intersect = function(origin, dir, near, far) {
+ var closest = null;
+ for (i = 0; i < this.triangles.length; i++) {
+ var triangle = this.triangles[i];
+ var d = triangle.intersect(origin, dir, near, far);
+ if (d == null || d > far || d < near)
+ continue;
+ far = d;
+ closest = triangle;
+ }
+
+ if (!closest)
+ return [this.background[0],this.background[1],this.background[2]];
+
+ var normal = closest.normal;
+ var hit = add(origin, scale(dir, far));
+ if (dot(dir, normal) > 0)
+ normal = [-normal[0], -normal[1], -normal[2]];
+
+ var colour = null;
+ if (closest.shader) {
+ colour = closest.shader(closest, hit, dir);
+ } else {
+ colour = closest.material;
+ }
+
+ // do reflection
+ var reflected = null;
+ if (colour.reflection > 0.001) {
+ var reflection = addVector(scale(normal, -2*dot(dir, normal)), dir);
+ reflected = this.intersect(hit, reflection, 0.0001, 1000000);
+ if (colour.reflection >= 0.999999)
+ return reflected;
+ }
+
+ var l = [this.ambient[0], this.ambient[1], this.ambient[2]];
+ for (var i = 0; i < this.lights.length; i++) {
+ var light = this.lights[i];
+ var toLight = sub(light, hit);
+ var distance = lengthVector(toLight);
+ scaleVector(toLight, 1.0/distance);
+ distance -= 0.0001;
+ if (this.blocked(hit, toLight, distance))
+ continue;
+ var nl = dot(normal, toLight);
+ if (nl > 0)
+ addVector(l, scale(light.colour, nl));
+ }
+ l = scalev(l, colour);
+ if (reflected) {
+ l = addVector(scaleVector(l, 1 - colour.reflection), scaleVector(reflected, colour.reflection));
+ }
+ return l;
+}
+
+Scene.prototype.blocked = function(O, D, far) {
+ var near = 0.0001;
+ var closest = null;
+ for (i = 0; i < this.triangles.length; i++) {
+ var triangle = this.triangles[i];
+ var d = triangle.intersect(O, D, near, far);
+ if (d == null || d > far || d < near)
+ continue;
+ return true;
+ }
+
+ return false;
+}
+
+
+// this camera code is from notes i made ages ago, it is from *somewhere* -- i cannot remember where
+// that somewhere is
+function Camera(origin, lookat, up) {
+ var zaxis = normaliseVector(subVector(lookat, origin));
+ var xaxis = normaliseVector(cross(up, zaxis));
+ var yaxis = normaliseVector(cross(xaxis, subVector([0,0,0], zaxis)));
+ var m = new Array(16);
+ m[0] = xaxis[0]; m[1] = xaxis[1]; m[2] = xaxis[2];
+ m[4] = yaxis[0]; m[5] = yaxis[1]; m[6] = yaxis[2];
+ m[8] = zaxis[0]; m[9] = zaxis[1]; m[10] = zaxis[2];
+ invertMatrix(m);
+ m[3] = 0; m[7] = 0; m[11] = 0;
+ this.origin = origin;
+ this.directions = new Array(4);
+ this.directions[0] = normalise([-0.7, 0.7, 1]);
+ this.directions[1] = normalise([ 0.7, 0.7, 1]);
+ this.directions[2] = normalise([ 0.7, -0.7, 1]);
+ this.directions[3] = normalise([-0.7, -0.7, 1]);
+ this.directions[0] = transformMatrix(m, this.directions[0]);
+ this.directions[1] = transformMatrix(m, this.directions[1]);
+ this.directions[2] = transformMatrix(m, this.directions[2]);
+ this.directions[3] = transformMatrix(m, this.directions[3]);
+}
+
+Camera.prototype.generateRayPair = function(y) {
+ rays = new Array(new Object(), new Object());
+ rays[0].origin = this.origin;
+ rays[1].origin = this.origin;
+ rays[0].dir = addVector(scale(this.directions[0], y), scale(this.directions[3], 1 - y));
+ rays[1].dir = addVector(scale(this.directions[1], y), scale(this.directions[2], 1 - y));
+ return rays;
+}
+
+function renderRows(camera, scene, pixels, width, height, starty, stopy) {
+ for (var y = starty; y < stopy; y++) {
+ var rays = camera.generateRayPair(y / height);
+ for (var x = 0; x < width; x++) {
+ var xp = x / width;
+ var origin = addVector(scale(rays[0].origin, xp), scale(rays[1].origin, 1 - xp));
+ var dir = normaliseVector(addVector(scale(rays[0].dir, xp), scale(rays[1].dir, 1 - xp)));
+ var l = scene.intersect(origin, dir);
+ pixels[y][x] = l;
+ }
+ }
+}
+
+Camera.prototype.render = function(scene, pixels, width, height) {
+ var cam = this;
+ var row = 0;
+ renderRows(cam, scene, pixels, width, height, 0, height);
+}
+
+
+
+function raytraceScene()
+{
+ var startDate = new Date().getTime();
+ var numTriangles = 2 * 6;
+ var triangles = new Array();//numTriangles);
+ var tfl = createVector(-10, 10, -10);
+ var tfr = createVector( 10, 10, -10);
+ var tbl = createVector(-10, 10, 10);
+ var tbr = createVector( 10, 10, 10);
+ var bfl = createVector(-10, -10, -10);
+ var bfr = createVector( 10, -10, -10);
+ var bbl = createVector(-10, -10, 10);
+ var bbr = createVector( 10, -10, 10);
+
+ // cube!!!
+ // front
+ var i = 0;
+
+ triangles[i++] = new Triangle(tfl, tfr, bfr);
+ triangles[i++] = new Triangle(tfl, bfr, bfl);
+ // back
+ triangles[i++] = new Triangle(tbl, tbr, bbr);
+ triangles[i++] = new Triangle(tbl, bbr, bbl);
+ // triangles[i-1].material = [0.7,0.2,0.2];
+ // triangles[i-1].material.reflection = 0.8;
+ // left
+ triangles[i++] = new Triangle(tbl, tfl, bbl);
+ // triangles[i-1].reflection = 0.6;
+ triangles[i++] = new Triangle(tfl, bfl, bbl);
+ // triangles[i-1].reflection = 0.6;
+ // right
+ triangles[i++] = new Triangle(tbr, tfr, bbr);
+ triangles[i++] = new Triangle(tfr, bfr, bbr);
+ // top
+ triangles[i++] = new Triangle(tbl, tbr, tfr);
+ triangles[i++] = new Triangle(tbl, tfr, tfl);
+ // bottom
+ triangles[i++] = new Triangle(bbl, bbr, bfr);
+ triangles[i++] = new Triangle(bbl, bfr, bfl);
+
+ //Floor!!!!
+ var green = createVector(0.0, 0.4, 0.0);
+ var grey = createVector(0.4, 0.4, 0.4);
+ grey.reflection = 1.0;
+ var floorShader = function(tri, pos, view) {
+ var x = ((pos[0]/32) % 2 + 2) % 2;
+ var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;
+ if (x < 1 != z < 1) {
+ //in the real world we use the fresnel term...
+ // var angle = 1-dot(view, tri.normal);
+ // angle *= angle;
+ // angle *= angle;
+ // angle *= angle;
+ //grey.reflection = angle;
+ return grey;
+ } else
+ return green;
+ }
+ var ffl = createVector(-1000, -30, -1000);
+ var ffr = createVector( 1000, -30, -1000);
+ var fbl = createVector(-1000, -30, 1000);
+ var fbr = createVector( 1000, -30, 1000);
+ triangles[i++] = new Triangle(fbl, fbr, ffr);
+ triangles[i-1].shader = floorShader;
+ triangles[i++] = new Triangle(fbl, ffr, ffl);
+ triangles[i-1].shader = floorShader;
+
+ var _scene = new Scene(triangles);
+ _scene.lights[0] = createVector(20, 38, -22);
+ _scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
+ _scene.lights[1] = createVector(-23, 40, 17);
+ _scene.lights[1].colour = createVector(0.7, 0.3, 0.3);
+ _scene.lights[2] = createVector(23, 20, 17);
+ _scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
+ _scene.ambient = createVector(0.1, 0.1, 0.1);
+ // _scene.background = createVector(0.7, 0.7, 1.0);
+
+ var size = 30;
+ var pixels = new Array();
+ for (var y = 0; y < size; y++) {
+ pixels[y] = new Array();
+ for (var x = 0; x < size; x++) {
+ pixels[y][x] = 0;
+ }
+ }
+
+ var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));
+ _camera.render(_scene, pixels, size, size);
+
+ return pixels;
+}
+
+function arrayToCanvasCommands(pixels)
+{
+ var s = '<canvas id="renderCanvas" width="30px" height="30px"></canvas><scr' + 'ipt>\nvar pixels = [';
+ var size = 30;
+ for (var y = 0; y < size; y++) {
+ s += "[";
+ for (var x = 0; x < size; x++) {
+ s += "[" + pixels[y][x] + "],";
+ }
+ s+= "],";
+ }
+ s += '];\n var canvas = document.getElementById("renderCanvas").getContext("2d");\n\
+\n\
+\n\
+ var size = 30;\n\
+ canvas.fillStyle = "red";\n\
+ canvas.fillRect(0, 0, size, size);\n\
+ canvas.scale(1, -1);\n\
+ canvas.translate(0, -size);\n\
+\n\
+ if (!canvas.setFillColor)\n\
+ canvas.setFillColor = function(r, g, b, a) {\n\
+ this.fillStyle = "rgb("+[Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)]+")";\n\
+ }\n\
+\n\
+for (var y = 0; y < size; y++) {\n\
+ for (var x = 0; x < size; x++) {\n\
+ var l = pixels[y][x];\n\
+ canvas.setFillColor(l[0], l[1], l[2], 1);\n\
+ canvas.fillRect(x, y, 1, 1);\n\
+ }\n\
+}</scr' + 'ipt>';
+
+ return s;
+}
+
+testOutput = arrayToCanvasCommands(raytraceScene());
diff --git a/tests/benchmarks/script/sunspider/tests/VERSION b/tests/benchmarks/script/sunspider/tests/VERSION
new file mode 100644
index 0000000000..6aa91fb0f5
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/VERSION
@@ -0,0 +1 @@
+SunSpider 0.9.1
diff --git a/tests/benchmarks/script/sunspider/tests/access-binary-trees.js b/tests/benchmarks/script/sunspider/tests/access-binary-trees.js
new file mode 100644
index 0000000000..2f24e7db1f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-binary-trees.js
@@ -0,0 +1,50 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+function TreeNode(left,right,item){
+ this.left = left;
+ this.right = right;
+ this.item = item;
+}
+
+TreeNode.prototype.itemCheck = function(){
+ if (this.left==null) return this.item;
+ else return this.item + this.left.itemCheck() - this.right.itemCheck();
+}
+
+function bottomUpTree(item,depth){
+ if (depth>0){
+ return new TreeNode(
+ bottomUpTree(2*item-1, depth-1)
+ ,bottomUpTree(2*item, depth-1)
+ ,item
+ );
+ }
+ else {
+ return new TreeNode(null,null,item);
+ }
+}
+
+var ret;
+
+for ( var n = 4; n <= 7; n += 1 ) {
+ var minDepth = 4;
+ var maxDepth = Math.max(minDepth + 2, n);
+ var stretchDepth = maxDepth + 1;
+
+ var check = bottomUpTree(0,stretchDepth).itemCheck();
+
+ var longLivedTree = bottomUpTree(0,maxDepth);
+ for (var depth=minDepth; depth<=maxDepth; depth+=2){
+ var iterations = 1 << (maxDepth - depth + minDepth);
+
+ check = 0;
+ for (var i=1; i<=iterations; i++){
+ check += bottomUpTree(i,depth).itemCheck();
+ check += bottomUpTree(-i,depth).itemCheck();
+ }
+ }
+
+ ret = longLivedTree.itemCheck();
+}
diff --git a/tests/benchmarks/script/sunspider/tests/access-fannkuch.js b/tests/benchmarks/script/sunspider/tests/access-fannkuch.js
new file mode 100644
index 0000000000..1ea87b4948
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-fannkuch.js
@@ -0,0 +1,66 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+function fannkuch(n) {
+ var check = 0;
+ var perm = Array(n);
+ var perm1 = Array(n);
+ var count = Array(n);
+ var maxPerm = Array(n);
+ var maxFlipsCount = 0;
+ var m = n - 1;
+
+ for (var i = 0; i < n; i++) perm1[i] = i;
+ var r = n;
+
+ while (true) {
+ // write-out the first 30 permutations
+ if (check < 30){
+ var s = "";
+ for(var i=0; i<n; i++) s += (perm1[i]+1).toString();
+ check++;
+ }
+
+ while (r != 1) { count[r - 1] = r; r--; }
+ if (!(perm1[0] == 0 || perm1[m] == m)) {
+ for (var i = 0; i < n; i++) perm[i] = perm1[i];
+
+ var flipsCount = 0;
+ var k;
+
+ while (!((k = perm[0]) == 0)) {
+ var k2 = (k + 1) >> 1;
+ for (var i = 0; i < k2; i++) {
+ var temp = perm[i]; perm[i] = perm[k - i]; perm[k - i] = temp;
+ }
+ flipsCount++;
+ }
+
+ if (flipsCount > maxFlipsCount) {
+ maxFlipsCount = flipsCount;
+ for (var i = 0; i < n; i++) maxPerm[i] = perm1[i];
+ }
+ }
+
+ while (true) {
+ if (r == n) return maxFlipsCount;
+ var perm0 = perm1[0];
+ var i = 0;
+ while (i < r) {
+ var j = i + 1;
+ perm1[i] = perm1[j];
+ i = j;
+ }
+ perm1[r] = perm0;
+
+ count[r] = count[r] - 1;
+ if (count[r] > 0) break;
+ r++;
+ }
+ }
+}
+
+var n = 8;
+var ret = fannkuch(n);
+
diff --git a/tests/benchmarks/script/sunspider/tests/access-nbody.js b/tests/benchmarks/script/sunspider/tests/access-nbody.js
new file mode 100644
index 0000000000..f0d080d12d
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-nbody.js
@@ -0,0 +1,169 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+var PI = 3.141592653589793;
+var SOLAR_MASS = 4 * PI * PI;
+var DAYS_PER_YEAR = 365.24;
+
+function Body(x,y,z,vx,vy,vz,mass){
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.vx = vx;
+ this.vy = vy;
+ this.vz = vz;
+ this.mass = mass;
+}
+
+Body.prototype.offsetMomentum = function(px,py,pz) {
+ this.vx = -px / SOLAR_MASS;
+ this.vy = -py / SOLAR_MASS;
+ this.vz = -pz / SOLAR_MASS;
+ return this;
+}
+
+function Jupiter(){
+ return new Body(
+ 4.84143144246472090e+00,
+ -1.16032004402742839e+00,
+ -1.03622044471123109e-01,
+ 1.66007664274403694e-03 * DAYS_PER_YEAR,
+ 7.69901118419740425e-03 * DAYS_PER_YEAR,
+ -6.90460016972063023e-05 * DAYS_PER_YEAR,
+ 9.54791938424326609e-04 * SOLAR_MASS
+ );
+}
+
+function Saturn(){
+ return new Body(
+ 8.34336671824457987e+00,
+ 4.12479856412430479e+00,
+ -4.03523417114321381e-01,
+ -2.76742510726862411e-03 * DAYS_PER_YEAR,
+ 4.99852801234917238e-03 * DAYS_PER_YEAR,
+ 2.30417297573763929e-05 * DAYS_PER_YEAR,
+ 2.85885980666130812e-04 * SOLAR_MASS
+ );
+}
+
+function Uranus(){
+ return new Body(
+ 1.28943695621391310e+01,
+ -1.51111514016986312e+01,
+ -2.23307578892655734e-01,
+ 2.96460137564761618e-03 * DAYS_PER_YEAR,
+ 2.37847173959480950e-03 * DAYS_PER_YEAR,
+ -2.96589568540237556e-05 * DAYS_PER_YEAR,
+ 4.36624404335156298e-05 * SOLAR_MASS
+ );
+}
+
+function Neptune(){
+ return new Body(
+ 1.53796971148509165e+01,
+ -2.59193146099879641e+01,
+ 1.79258772950371181e-01,
+ 2.68067772490389322e-03 * DAYS_PER_YEAR,
+ 1.62824170038242295e-03 * DAYS_PER_YEAR,
+ -9.51592254519715870e-05 * DAYS_PER_YEAR,
+ 5.15138902046611451e-05 * SOLAR_MASS
+ );
+}
+
+function Sun(){
+ return new Body(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS);
+}
+
+
+function NBodySystem(bodies){
+ this.bodies = bodies;
+ var px = 0.0;
+ var py = 0.0;
+ var pz = 0.0;
+ var size = this.bodies.length;
+ for (var i=0; i<size; i++){
+ var b = this.bodies[i];
+ var m = b.mass;
+ px += b.vx * m;
+ py += b.vy * m;
+ pz += b.vz * m;
+ }
+ this.bodies[0].offsetMomentum(px,py,pz);
+}
+
+NBodySystem.prototype.advance = function(dt){
+ var dx, dy, dz, distance, mag;
+ var size = this.bodies.length;
+
+ for (var i=0; i<size; i++) {
+ var bodyi = this.bodies[i];
+ for (var j=i+1; j<size; j++) {
+ var bodyj = this.bodies[j];
+ dx = bodyi.x - bodyj.x;
+ dy = bodyi.y - bodyj.y;
+ dz = bodyi.z - bodyj.z;
+
+ distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
+ mag = dt / (distance * distance * distance);
+
+ bodyi.vx -= dx * bodyj.mass * mag;
+ bodyi.vy -= dy * bodyj.mass * mag;
+ bodyi.vz -= dz * bodyj.mass * mag;
+
+ bodyj.vx += dx * bodyi.mass * mag;
+ bodyj.vy += dy * bodyi.mass * mag;
+ bodyj.vz += dz * bodyi.mass * mag;
+ }
+ }
+
+ for (var i=0; i<size; i++) {
+ var body = this.bodies[i];
+ body.x += dt * body.vx;
+ body.y += dt * body.vy;
+ body.z += dt * body.vz;
+ }
+}
+
+NBodySystem.prototype.energy = function(){
+ var dx, dy, dz, distance;
+ var e = 0.0;
+ var size = this.bodies.length;
+
+ for (var i=0; i<size; i++) {
+ var bodyi = this.bodies[i];
+
+ e += 0.5 * bodyi.mass *
+ ( bodyi.vx * bodyi.vx
+ + bodyi.vy * bodyi.vy
+ + bodyi.vz * bodyi.vz );
+
+ for (var j=i+1; j<size; j++) {
+ var bodyj = this.bodies[j];
+ dx = bodyi.x - bodyj.x;
+ dy = bodyi.y - bodyj.y;
+ dz = bodyi.z - bodyj.z;
+
+ distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
+ e -= (bodyi.mass * bodyj.mass) / distance;
+ }
+ }
+ return e;
+}
+
+var ret;
+
+for ( var n = 3; n <= 24; n *= 2 ) {
+ (function(){
+ var bodies = new NBodySystem( Array(
+ Sun(),Jupiter(),Saturn(),Uranus(),Neptune()
+ ));
+ var max = n * 100;
+
+ ret = bodies.energy();
+ for (var i=0; i<max; i++){
+ bodies.advance(0.01);
+ }
+ ret = bodies.energy();
+ })();
+}
diff --git a/tests/benchmarks/script/sunspider/tests/access-nsieve.js b/tests/benchmarks/script/sunspider/tests/access-nsieve.js
new file mode 100644
index 0000000000..70fdf1aaf3
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-nsieve.js
@@ -0,0 +1,38 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// modified by Isaac Gouy
+
+function pad(number,width){
+ var s = number.toString();
+ var prefixWidth = width - s.length;
+ if (prefixWidth>0){
+ for (var i=1; i<=prefixWidth; i++) s = " " + s;
+ }
+ return s;
+}
+
+function nsieve(m, isPrime){
+ var i, k, count;
+
+ for (i=2; i<=m; i++) { isPrime[i] = true; }
+ count = 0;
+
+ for (i=2; i<=m; i++){
+ if (isPrime[i]) {
+ for (k=i+i; k<=m; k+=i) isPrime[k] = false;
+ count++;
+ }
+ }
+ return count;
+}
+
+function sieve() {
+ for (var i = 1; i <= 3; i++ ) {
+ var m = (1<<i)*10000;
+ var flags = Array(m+1);
+ nsieve(m, flags);
+ }
+}
+
+sieve();
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js b/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js
new file mode 100644
index 0000000000..1d85406809
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js
@@ -0,0 +1,32 @@
+// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com
+
+// 1 op = 6 ANDs, 3 SHRs, 3 SHLs, 4 assigns, 2 ADDs
+// O(1)
+function fast3bitlookup(b) {
+var c, bi3b = 0xE994; // 0b1110 1001 1001 0100; // 3 2 2 1 2 1 1 0
+c = 3 & (bi3b >> ((b << 1) & 14));
+c += 3 & (bi3b >> ((b >> 2) & 14));
+c += 3 & (bi3b >> ((b >> 5) & 6));
+return c;
+
+/*
+lir4,0xE994; 9 instructions, no memory access, minimal register dependence, 6 shifts, 2 adds, 1 inline assign
+rlwinmr5,r3,1,28,30
+rlwinmr6,r3,30,28,30
+rlwinmr7,r3,27,29,30
+rlwnmr8,r4,r5,30,31
+rlwnmr9,r4,r6,30,31
+rlwnmr10,r4,r7,30,31
+addr3,r8,r9
+addr3,r3,r10
+*/
+}
+
+
+function TimeFunc(func) {
+var x, y, t;
+for(var x=0; x<500; x++)
+for(var y=0; y<256; y++) func(y);
+}
+
+TimeFunc(fast3bitlookup);
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js b/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js
new file mode 100644
index 0000000000..9a3acd4f77
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js
@@ -0,0 +1,21 @@
+// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com)
+
+
+// 1 op = 2 assigns, 16 compare/branches, 8 ANDs, (0-8) ADDs, 8 SHLs
+// O(n)
+function bitsinbyte(b) {
+var m = 1, c = 0;
+while(m<0x100) {
+if(b & m) c++;
+m <<= 1;
+}
+return c;
+}
+
+function TimeFunc(func) {
+var x, y, t;
+for(var x=0; x<350; x++)
+for(var y=0; y<256; y++) func(y);
+}
+
+TimeFunc(bitsinbyte);
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js b/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js
new file mode 100644
index 0000000000..7c80e696d9
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+bitwiseAndValue = 4294967296;
+for (var i = 0; i < 600000; i++)
+ bitwiseAndValue = bitwiseAndValue & i;
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js b/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js
new file mode 100644
index 0000000000..6ef0ddb11b
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js
@@ -0,0 +1,32 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org
+//
+// Contributed by Ian Osgood
+
+function pad(n,width) {
+ var s = n.toString();
+ while (s.length < width) s = ' ' + s;
+ return s;
+}
+
+function primes(isPrime, n) {
+ var i, count = 0, m = 10000<<n, size = m+31>>5;
+
+ for (i=0; i<size; i++) isPrime[i] = 0xffffffff;
+
+ for (i=2; i<m; i++)
+ if (isPrime[i>>5] & 1<<(i&31)) {
+ for (var j=i+i; j<m; j+=i)
+ isPrime[j>>5] &= ~(1<<(j&31));
+ count++;
+ }
+}
+
+function sieve() {
+ for (var i = 4; i <= 4; i++) {
+ var isPrime = new Array((10000<<i)+31>>5);
+ primes(isPrime, i);
+ }
+}
+
+sieve();
diff --git a/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js b/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js
new file mode 100644
index 0000000000..fcfe1c40e2
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js
@@ -0,0 +1,25 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+// contributed by Isaac Gouy
+
+function ack(m,n){
+ if (m==0) { return n+1; }
+ if (n==0) { return ack(m-1,1); }
+ return ack(m-1, ack(m,n-1) );
+}
+
+function fib(n) {
+ if (n < 2){ return 1; }
+ return fib(n-2) + fib(n-1);
+}
+
+function tak(x,y,z) {
+ if (y >= x) return z;
+ return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y));
+}
+
+for ( var i = 3; i <= 5; i++ ) {
+ ack(3,i);
+ fib(17.0+i);
+ tak(3*i+3,2*i+2,i+1);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-aes.js b/tests/benchmarks/script/sunspider/tests/crypto-aes.js
new file mode 100644
index 0000000000..93a5969353
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-aes.js
@@ -0,0 +1,422 @@
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * AES Cipher function: encrypt 'input' with Rijndael algorithm
+ *
+ * takes byte-array 'input' (16 bytes)
+ * 2D byte-array key schedule 'w' (Nr+1 x Nb bytes)
+ *
+ * applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage
+ *
+ * returns byte-array encrypted value (16 bytes)
+ */
+function Cipher(input, w) { // main Cipher function [§5.1]
+ var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
+ var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys
+
+ var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [§3.4]
+ for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i];
+
+ state = AddRoundKey(state, w, 0, Nb);
+
+ for (var round=1; round<Nr; round++) {
+ state = SubBytes(state, Nb);
+ state = ShiftRows(state, Nb);
+ state = MixColumns(state, Nb);
+ state = AddRoundKey(state, w, round, Nb);
+ }
+
+ state = SubBytes(state, Nb);
+ state = ShiftRows(state, Nb);
+ state = AddRoundKey(state, w, Nr, Nb);
+
+ var output = new Array(4*Nb); // convert state to 1-d array before returning [§3.4]
+ for (var i=0; i<4*Nb; i++) output[i] = state[i%4][Math.floor(i/4)];
+ return output;
+}
+
+
+function SubBytes(s, Nb) { // apply SBox to state S [§5.1.1]
+ for (var r=0; r<4; r++) {
+ for (var c=0; c<Nb; c++) s[r][c] = Sbox[s[r][c]];
+ }
+ return s;
+}
+
+
+function ShiftRows(s, Nb) { // shift row r of state S left by r bytes [§5.1.2]
+ var t = new Array(4);
+ for (var r=1; r<4; r++) {
+ for (var c=0; c<4; c++) t[c] = s[r][(c+r)%Nb]; // shift into temp copy
+ for (var c=0; c<4; c++) s[r][c] = t[c]; // and copy back
+ } // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES):
+ return s; // see fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.311.pdf
+}
+
+
+function MixColumns(s, Nb) { // combine bytes of each col of state S [§5.1.3]
+ for (var c=0; c<4; c++) {
+ var a = new Array(4); // 'a' is a copy of the current column from 's'
+ var b = new Array(4); // 'b' is a•{02} in GF(2^8)
+ for (var i=0; i<4; i++) {
+ a[i] = s[i][c];
+ b[i] = s[i][c]&0x80 ? s[i][c]<<1 ^ 0x011b : s[i][c]<<1;
+ }
+ // a[n] ^ b[n] is a•{03} in GF(2^8)
+ s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3]; // 2*a0 + 3*a1 + a2 + a3
+ s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3]; // a0 * 2*a1 + 3*a2 + a3
+ s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3]; // a0 + a1 + 2*a2 + 3*a3
+ s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]; // 3*a0 + a1 + a2 + 2*a3
+ }
+ return s;
+}
+
+
+function AddRoundKey(state, w, rnd, Nb) { // xor Round Key into state S [§5.1.4]
+ for (var r=0; r<4; r++) {
+ for (var c=0; c<Nb; c++) state[r][c] ^= w[rnd*4+c][r];
+ }
+ return state;
+}
+
+
+function KeyExpansion(key) { // generate Key Schedule (byte-array Nr+1 x Nb) from Key [§5.2]
+ var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
+ var Nk = key.length/4 // key length (in words): 4/6/8 for 128/192/256-bit keys
+ var Nr = Nk + 6; // no of rounds: 10/12/14 for 128/192/256-bit keys
+
+ var w = new Array(Nb*(Nr+1));
+ var temp = new Array(4);
+
+ for (var i=0; i<Nk; i++) {
+ var r = [key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]];
+ w[i] = r;
+ }
+
+ for (var i=Nk; i<(Nb*(Nr+1)); i++) {
+ w[i] = new Array(4);
+ for (var t=0; t<4; t++) temp[t] = w[i-1][t];
+ if (i % Nk == 0) {
+ temp = SubWord(RotWord(temp));
+ for (var t=0; t<4; t++) temp[t] ^= Rcon[i/Nk][t];
+ } else if (Nk > 6 && i%Nk == 4) {
+ temp = SubWord(temp);
+ }
+ for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t];
+ }
+
+ return w;
+}
+
+function SubWord(w) { // apply SBox to 4-byte word w
+ for (var i=0; i<4; i++) w[i] = Sbox[w[i]];
+ return w;
+}
+
+function RotWord(w) { // rotate 4-byte word w left by one byte
+ w[4] = w[0];
+ for (var i=0; i<4; i++) w[i] = w[i+1];
+ return w;
+}
+
+
+// Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [§5.1.1]
+var Sbox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
+ 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
+ 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
+ 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
+ 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
+ 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
+ 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
+ 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
+ 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
+ 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
+ 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
+ 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
+ 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
+ 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
+ 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
+ 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16];
+
+// Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]
+var Rcon = [ [0x00, 0x00, 0x00, 0x00],
+ [0x01, 0x00, 0x00, 0x00],
+ [0x02, 0x00, 0x00, 0x00],
+ [0x04, 0x00, 0x00, 0x00],
+ [0x08, 0x00, 0x00, 0x00],
+ [0x10, 0x00, 0x00, 0x00],
+ [0x20, 0x00, 0x00, 0x00],
+ [0x40, 0x00, 0x00, 0x00],
+ [0x80, 0x00, 0x00, 0x00],
+ [0x1b, 0x00, 0x00, 0x00],
+ [0x36, 0x00, 0x00, 0x00] ];
+
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation
+ * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
+ * for each block
+ * - outputblock = cipher(counter, key)
+ * - cipherblock = plaintext xor outputblock
+ */
+function AESEncryptCtr(plaintext, password, nBits) {
+ if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
+
+ // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password;
+ // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1
+ var nBytes = nBits/8; // no bytes in key
+ var pwBytes = new Array(nBytes);
+ for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
+ var key = Cipher(pwBytes, KeyExpansion(pwBytes));
+ key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
+
+ // initialise counter block (NIST SP800-38A §B.2): millisecond time-stamp for nonce in 1st 8 bytes,
+ // block counter in 2nd 8 bytes
+ var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var counterBlock = new Array(blockSize); // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var nonce = (new Date()).getTime(); // milliseconds since 1-Jan-1970
+
+ // encode nonce in two stages to cater for JavaScript 32-bit limit on bitwise ops
+ for (var i=0; i<4; i++) counterBlock[i] = (nonce >>> i*8) & 0xff;
+ for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff;
+
+ // generate key schedule - an expansion of the key into distinct Key Rounds for each round
+ var keySchedule = KeyExpansion(key);
+
+ var blockCount = Math.ceil(plaintext.length/blockSize);
+ var ciphertext = new Array(blockCount); // ciphertext as array of strings
+
+ for (var b=0; b<blockCount; b++) {
+ // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
+ // again done in two stages for 32-bit ops
+ for (var c=0; c<4; c++) counterBlock[15-c] = (b >>> c*8) & 0xff;
+ for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8)
+
+ var cipherCntr = Cipher(counterBlock, keySchedule); // -- encrypt counter block --
+
+ // calculate length of final block:
+ var blockLength = b<blockCount-1 ? blockSize : (plaintext.length-1)%blockSize+1;
+
+ var ct = '';
+ for (var i=0; i<blockLength; i++) { // -- xor plaintext with ciphered counter byte-by-byte --
+ var plaintextByte = plaintext.charCodeAt(b*blockSize+i);
+ var cipherByte = plaintextByte ^ cipherCntr[i];
+ ct += String.fromCharCode(cipherByte);
+ }
+ // ct is now ciphertext for this block
+
+ ciphertext[b] = escCtrlChars(ct); // escape troublesome characters in ciphertext
+ }
+
+ // convert the nonce to a string to go on the front of the ciphertext
+ var ctrTxt = '';
+ for (var i=0; i<8; i++) ctrTxt += String.fromCharCode(counterBlock[i]);
+ ctrTxt = escCtrlChars(ctrTxt);
+
+ // use '-' to separate blocks, use Array.join to concatenate arrays of strings for efficiency
+ return ctrTxt + '-' + ciphertext.join('-');
+}
+
+
+/*
+ * Use AES to decrypt 'ciphertext' with 'password' using 'nBits' key, in Counter mode of operation
+ *
+ * for each block
+ * - outputblock = cipher(counter, key)
+ * - cipherblock = plaintext xor outputblock
+ */
+function AESDecryptCtr(ciphertext, password, nBits) {
+ if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
+
+ var nBytes = nBits/8; // no bytes in key
+ var pwBytes = new Array(nBytes);
+ for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
+ var pwKeySchedule = KeyExpansion(pwBytes);
+ var key = Cipher(pwBytes, pwKeySchedule);
+ key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
+
+ var keySchedule = KeyExpansion(key);
+
+ ciphertext = ciphertext.split('-'); // split ciphertext into array of block-length strings
+
+ // recover nonce from 1st element of ciphertext
+ var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var counterBlock = new Array(blockSize);
+ var ctrTxt = unescCtrlChars(ciphertext[0]);
+ for (var i=0; i<8; i++) counterBlock[i] = ctrTxt.charCodeAt(i);
+
+ var plaintext = new Array(ciphertext.length-1);
+
+ for (var b=1; b<ciphertext.length; b++) {
+ // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
+ for (var c=0; c<4; c++) counterBlock[15-c] = ((b-1) >>> c*8) & 0xff;
+ for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff;
+
+ var cipherCntr = Cipher(counterBlock, keySchedule); // encrypt counter block
+
+ ciphertext[b] = unescCtrlChars(ciphertext[b]);
+
+ var pt = '';
+ for (var i=0; i<ciphertext[b].length; i++) {
+ // -- xor plaintext with ciphered counter byte-by-byte --
+ var ciphertextByte = ciphertext[b].charCodeAt(i);
+ var plaintextByte = ciphertextByte ^ cipherCntr[i];
+ pt += String.fromCharCode(plaintextByte);
+ }
+ // pt is now plaintext for this block
+
+ plaintext[b-1] = pt; // b-1 'cos no initial nonce block in plaintext
+ }
+
+ return plaintext.join('');
+}
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+function escCtrlChars(str) { // escape control chars which might cause problems handling ciphertext
+ return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });
+} // \xa0 to cater for bug in Firefox; include '-' to leave it free for use as a block marker
+
+function unescCtrlChars(str) { // unescape potentially problematic control characters
+ return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });
+}
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * if escCtrlChars()/unescCtrlChars() still gives problems, use encodeBase64()/decodeBase64() instead
+ */
+var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+function encodeBase64(str) { // http://tools.ietf.org/html/rfc4648
+ var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
+
+ str = encodeUTF8(str); // encode multi-byte chars into UTF-8 for byte-array
+
+ do { // pack three octets into four hexets
+ o1 = str.charCodeAt(i++);
+ o2 = str.charCodeAt(i++);
+ o3 = str.charCodeAt(i++);
+
+ bits = o1<<16 | o2<<8 | o3;
+
+ h1 = bits>>18 & 0x3f;
+ h2 = bits>>12 & 0x3f;
+ h3 = bits>>6 & 0x3f;
+ h4 = bits & 0x3f;
+
+ // end of string? index to '=' in b64
+ if (isNaN(o3)) h4 = 64;
+ if (isNaN(o2)) h3 = 64;
+
+ // use hexets to index into b64, and append result to encoded string
+ enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
+ } while (i < str.length);
+
+ return enc;
+}
+
+function decodeBase64(str) {
+ var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
+
+ do { // unpack four hexets into three octets using index points in b64
+ h1 = b64.indexOf(str.charAt(i++));
+ h2 = b64.indexOf(str.charAt(i++));
+ h3 = b64.indexOf(str.charAt(i++));
+ h4 = b64.indexOf(str.charAt(i++));
+
+ bits = h1<<18 | h2<<12 | h3<<6 | h4;
+
+ o1 = bits>>16 & 0xff;
+ o2 = bits>>8 & 0xff;
+ o3 = bits & 0xff;
+
+ if (h3 == 64) enc += String.fromCharCode(o1);
+ else if (h4 == 64) enc += String.fromCharCode(o1, o2);
+ else enc += String.fromCharCode(o1, o2, o3);
+ } while (i < str.length);
+
+ return decodeUTF8(enc); // decode UTF-8 byte-array back to Unicode
+}
+
+function encodeUTF8(str) { // encode multi-byte string into utf-8 multiple single-byte characters
+ str = str.replace(
+ /[\u0080-\u07ff]/g, // U+0080 - U+07FF = 2-byte chars
+ function(c) {
+ var cc = c.charCodeAt(0);
+ return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); }
+ );
+ str = str.replace(
+ /[\u0800-\uffff]/g, // U+0800 - U+FFFF = 3-byte chars
+ function(c) {
+ var cc = c.charCodeAt(0);
+ return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); }
+ );
+ return str;
+}
+
+function decodeUTF8(str) { // decode utf-8 encoded string back into multi-byte characters
+ str = str.replace(
+ /[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars
+ function(c) {
+ var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f;
+ return String.fromCharCode(cc); }
+ );
+ str = str.replace(
+ /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars
+ function(c) {
+ var cc = (c.charCodeAt(0)&0x0f)<<12 | (c.charCodeAt(1)&0x3f<<6) | c.charCodeAt(2)&0x3f;
+ return String.fromCharCode(cc); }
+ );
+ return str;
+}
+
+
+function byteArrayToHexStr(b) { // convert byte array to hex string for displaying test vectors
+ var s = '';
+ for (var i=0; i<b.length; i++) s += b[i].toString(16) + ' ';
+ return s;
+}
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+
+var plainText = "ROMEO: But, soft! what light through yonder window breaks?\n\
+It is the east, and Juliet is the sun.\n\
+Arise, fair sun, and kill the envious moon,\n\
+Who is already sick and pale with grief,\n\
+That thou her maid art far more fair than she:\n\
+Be not her maid, since she is envious;\n\
+Her vestal livery is but sick and green\n\
+And none but fools do wear it; cast it off.\n\
+It is my lady, O, it is my love!\n\
+O, that she knew she were!\n\
+She speaks yet she says nothing: what of that?\n\
+Her eye discourses; I will answer it.\n\
+I am too bold, 'tis not to me she speaks:\n\
+Two of the fairest stars in all the heaven,\n\
+Having some business, do entreat her eyes\n\
+To twinkle in their spheres till they return.\n\
+What if her eyes were there, they in her head?\n\
+The brightness of her cheek would shame those stars,\n\
+As daylight doth a lamp; her eyes in heaven\n\
+Would through the airy region stream so bright\n\
+That birds would sing and think it were not night.\n\
+See, how she leans her cheek upon her hand!\n\
+O, that I were a glove upon that hand,\n\
+That I might touch that cheek!\n\
+JULIET: Ay me!\n\
+ROMEO: She speaks:\n\
+O, speak again, bright angel! for thou art\n\
+As glorious to this night, being o'er my head\n\
+As is a winged messenger of heaven\n\
+Unto the white-upturned wondering eyes\n\
+Of mortals that fall back to gaze on him\n\
+When he bestrides the lazy-pacing clouds\n\
+And sails upon the bosom of the air.";
+
+var password = "O Romeo, Romeo! wherefore art thou Romeo?";
+
+var cipherText = AESEncryptCtr(plainText, password, 256);
+var decryptedText = AESDecryptCtr(cipherText, password, 256);
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-md5.js b/tests/benchmarks/script/sunspider/tests/crypto-md5.js
new file mode 100644
index 0000000000..cc7a896533
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-md5.js
@@ -0,0 +1,286 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
+
+var plainText = "Rebellious subjects, enemies to peace,\n\
+Profaners of this neighbour-stained steel,--\n\
+Will they not hear? What, ho! you men, you beasts,\n\
+That quench the fire of your pernicious rage\n\
+With purple fountains issuing from your veins,\n\
+On pain of torture, from those bloody hands\n\
+Throw your mistemper'd weapons to the ground,\n\
+And hear the sentence of your moved prince.\n\
+Three civil brawls, bred of an airy word,\n\
+By thee, old Capulet, and Montague,\n\
+Have thrice disturb'd the quiet of our streets,\n\
+And made Verona's ancient citizens\n\
+Cast by their grave beseeming ornaments,\n\
+To wield old partisans, in hands as old,\n\
+Canker'd with peace, to part your canker'd hate:\n\
+If ever you disturb our streets again,\n\
+Your lives shall pay the forfeit of the peace.\n\
+For this time, all the rest depart away:\n\
+You Capulet; shall go along with me:\n\
+And, Montague, come you this afternoon,\n\
+To know our further pleasure in this case,\n\
+To old Free-town, our common judgment-place.\n\
+Once more, on pain of death, all men depart."
+
+for (var i = 0; i <4; i++) {
+ plainText += plainText;
+}
+
+var md5Output = hex_md5(plainText);
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-sha1.js b/tests/benchmarks/script/sunspider/tests/crypto-sha1.js
new file mode 100644
index 0000000000..ca8d901a12
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-sha1.js
@@ -0,0 +1,224 @@
+/*
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
+ * in FIPS PUB 180-1
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for details.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
+function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
+function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
+function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
+function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
+function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function sha1_vm_test()
+{
+ return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+
+/*
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
+ */
+function core_sha1(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << (24 - len % 32);
+ x[((len + 64 >> 9) << 4) + 15] = len;
+
+ var w = Array(80);
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+ var e = -1009589776;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+ var olde = e;
+
+ for(var j = 0; j < 80; j++)
+ {
+ if(j < 16) w[j] = x[i + j];
+ else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
+ var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
+ safe_add(safe_add(e, w[j]), sha1_kt(j)));
+ e = d;
+ d = c;
+ c = rol(b, 30);
+ b = a;
+ a = t;
+ }
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ e = safe_add(e, olde);
+ }
+ return Array(a, b, c, d, e);
+
+}
+
+/*
+ * Perform the appropriate triplet combination function for the current
+ * iteration
+ */
+function sha1_ft(t, b, c, d)
+{
+ if(t < 20) return (b & c) | ((~b) & d);
+ if(t < 40) return b ^ c ^ d;
+ if(t < 60) return (b & c) | (b & d) | (c & d);
+ return b ^ c ^ d;
+}
+
+/*
+ * Determine the appropriate additive constant for the current iteration
+ */
+function sha1_kt(t)
+{
+ return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
+ (t < 60) ? -1894007588 : -899497514;
+}
+
+/*
+ * Calculate the HMAC-SHA1 of a key and some data
+ */
+function core_hmac_sha1(key, data)
+{
+ var bkey = str2binb(key);
+ if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
+ return core_sha1(opad.concat(hash), 512 + 160);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
+ */
+function str2binb(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of big-endian words to a string
+ */
+function binb2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a hex string.
+ */
+function binb2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a base-64 string
+ */
+function binb2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
+
+
+var plainText = "Two households, both alike in dignity,\n\
+In fair Verona, where we lay our scene,\n\
+From ancient grudge break to new mutiny,\n\
+Where civil blood makes civil hands unclean.\n\
+From forth the fatal loins of these two foes\n\
+A pair of star-cross'd lovers take their life;\n\
+Whole misadventured piteous overthrows\n\
+Do with their death bury their parents' strife.\n\
+The fearful passage of their death-mark'd love,\n\
+And the continuance of their parents' rage,\n\
+Which, but their children's end, nought could remove,\n\
+Is now the two hours' traffic of our stage;\n\
+The which if you with patient ears attend,\n\
+What here shall miss, our toil shall strive to mend.";
+
+for (var i = 0; i <4; i++) {
+ plainText += plainText;
+}
+
+var sha1Output = hex_sha1(plainText);
diff --git a/tests/benchmarks/script/sunspider/tests/date-format-tofte.js b/tests/benchmarks/script/sunspider/tests/date-format-tofte.js
new file mode 100644
index 0000000000..66e2cef875
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/date-format-tofte.js
@@ -0,0 +1,299 @@
+function arrayExists(array, x) {
+ for (var i = 0; i < array.length; i++) {
+ if (array[i] == x) return true;
+ }
+ return false;
+}
+
+Date.prototype.formatDate = function (input,time) {
+ // formatDate :
+ // a PHP date like function, for formatting date strings
+ // See: http://www.php.net/date
+ //
+ // input : format string
+ // time : epoch time (seconds, and optional)
+ //
+ // if time is not passed, formatting is based on
+ // the current "this" date object's set time.
+ //
+ // supported:
+ // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L,
+ // m, M, n, O, r, s, S, t, U, w, W, y, Y, z
+ //
+ // unsupported:
+ // I (capital i), T, Z
+
+ var switches = ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H",
+ "i", "j", "l", "L", "m", "M", "n", "O", "r", "s",
+ "S", "t", "U", "w", "W", "y", "Y", "z"];
+ var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday"];
+ var daysShort = ["Sun", "Mon", "Tue", "Wed",
+ "Thu", "Fri", "Sat"];
+ var monthsShort = ["Jan", "Feb", "Mar", "Apr",
+ "May", "Jun", "Jul", "Aug", "Sep",
+ "Oct", "Nov", "Dec"];
+ var monthsLong = ["January", "February", "March", "April",
+ "May", "June", "July", "August", "September",
+ "October", "November", "December"];
+ var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th
+ "th", "th", "th", "th", "th", "th", "th", // 8th - 14th
+ "th", "th", "th", "th", "th", "th", "st", // 15th - 21st
+ "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th
+ "th", "th", "st"]; // 29th - 31st
+
+ function a() {
+ // Lowercase Ante meridiem and Post meridiem
+ return self.getHours() > 11? "pm" : "am";
+ }
+ function A() {
+ // Uppercase Ante meridiem and Post meridiem
+ return self.getHours() > 11? "PM" : "AM";
+ }
+
+ function B(){
+ // Swatch internet time. code simply grabbed from ppk,
+ // since I was feeling lazy:
+ // http://www.xs4all.nl/~ppk/js/beat.html
+ var off = (self.getTimezoneOffset() + 60)*60;
+ var theSeconds = (self.getHours() * 3600) +
+ (self.getMinutes() * 60) +
+ self.getSeconds() + off;
+ var beat = Math.floor(theSeconds/86.4);
+ if (beat > 1000) beat -= 1000;
+ if (beat < 0) beat += 1000;
+ if ((""+beat).length == 1) beat = "00"+beat;
+ if ((""+beat).length == 2) beat = "0"+beat;
+ return beat;
+ }
+
+ function d() {
+ // Day of the month, 2 digits with leading zeros
+ return new String(self.getDate()).length == 1?
+ "0"+self.getDate() : self.getDate();
+ }
+ function D() {
+ // A textual representation of a day, three letters
+ return daysShort[self.getDay()];
+ }
+ function F() {
+ // A full textual representation of a month
+ return monthsLong[self.getMonth()];
+ }
+ function g() {
+ // 12-hour format of an hour without leading zeros
+ return self.getHours() > 12? self.getHours()-12 : self.getHours();
+ }
+ function G() {
+ // 24-hour format of an hour without leading zeros
+ return self.getHours();
+ }
+ function h() {
+ // 12-hour format of an hour with leading zeros
+ if (self.getHours() > 12) {
+ var s = new String(self.getHours()-12);
+ return s.length == 1?
+ "0"+ (self.getHours()-12) : self.getHours()-12;
+ } else {
+ var s = new String(self.getHours());
+ return s.length == 1?
+ "0"+self.getHours() : self.getHours();
+ }
+ }
+ function H() {
+ // 24-hour format of an hour with leading zeros
+ return new String(self.getHours()).length == 1?
+ "0"+self.getHours() : self.getHours();
+ }
+ function i() {
+ // Minutes with leading zeros
+ return new String(self.getMinutes()).length == 1?
+ "0"+self.getMinutes() : self.getMinutes();
+ }
+ function j() {
+ // Day of the month without leading zeros
+ return self.getDate();
+ }
+ function l() {
+ // A full textual representation of the day of the week
+ return daysLong[self.getDay()];
+ }
+ function L() {
+ // leap year or not. 1 if leap year, 0 if not.
+ // the logic should match iso's 8601 standard.
+ var y_ = Y();
+ if (
+ (y_ % 4 == 0 && y_ % 100 != 0) ||
+ (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0)
+ ) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ function m() {
+ // Numeric representation of a month, with leading zeros
+ return self.getMonth() < 9?
+ "0"+(self.getMonth()+1) :
+ self.getMonth()+1;
+ }
+ function M() {
+ // A short textual representation of a month, three letters
+ return monthsShort[self.getMonth()];
+ }
+ function n() {
+ // Numeric representation of a month, without leading zeros
+ return self.getMonth()+1;
+ }
+ function O() {
+ // Difference to Greenwich time (GMT) in hours
+ var os = Math.abs(self.getTimezoneOffset());
+ var h = ""+Math.floor(os/60);
+ var m = ""+(os%60);
+ h.length == 1? h = "0"+h:1;
+ m.length == 1? m = "0"+m:1;
+ return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m;
+ }
+ function r() {
+ // RFC 822 formatted date
+ var r; // result
+ // Thu , 21 Dec 2000
+ r = D() + ", " + j() + " " + M() + " " + Y() +
+ // 16 : 01 : 07 +0200
+ " " + H() + ":" + i() + ":" + s() + " " + O();
+ return r;
+ }
+ function S() {
+ // English ordinal suffix for the day of the month, 2 characters
+ return daysSuffix[self.getDate()-1];
+ }
+ function s() {
+ // Seconds, with leading zeros
+ return new String(self.getSeconds()).length == 1?
+ "0"+self.getSeconds() : self.getSeconds();
+ }
+ function t() {
+
+ // thanks to Matt Bannon for some much needed code-fixes here!
+ var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31];
+ if (L()==1 && n()==2) return 29; // leap day
+ return daysinmonths[n()];
+ }
+ function U() {
+ // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
+ return Math.round(self.getTime()/1000);
+ }
+ function W() {
+ // Weeknumber, as per ISO specification:
+ // http://www.cl.cam.ac.uk/~mgk25/iso-time.html
+
+ // if the day is three days before newyears eve,
+ // there's a chance it's "week 1" of next year.
+ // here we check for that.
+ var beforeNY = 364+L() - z();
+ var afterNY = z();
+ var weekday = w()!=0?w()-1:6; // makes sunday (0), into 6.
+ if (beforeNY <= 2 && weekday <= 2-beforeNY) {
+ return 1;
+ }
+ // similarly, if the day is within threedays of newyears
+ // there's a chance it belongs in the old year.
+ var ny = new Date("January 1 " + Y() + " 00:00:00");
+ var nyDay = ny.getDay()!=0?ny.getDay()-1:6;
+ if (
+ (afterNY <= 2) &&
+ (nyDay >=4) &&
+ (afterNY >= (6-nyDay))
+ ) {
+ // Since I'm not sure we can just always return 53,
+ // i call the function here again, using the last day
+ // of the previous year, as the date, and then just
+ // return that week.
+ var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00");
+ return prevNY.formatDate("W");
+ }
+
+ // week 1, is the week that has the first thursday in it.
+ // note that this value is not zero index.
+ if (nyDay <= 3) {
+ // first day of the year fell on a thursday, or earlier.
+ return 1 + Math.floor( ( z() + nyDay ) / 7 );
+ } else {
+ // first day of the year fell on a friday, or later.
+ return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 );
+ }
+ }
+ function w() {
+ // Numeric representation of the day of the week
+ return self.getDay();
+ }
+
+ function Y() {
+ // A full numeric representation of a year, 4 digits
+
+ // we first check, if getFullYear is supported. if it
+ // is, we just use that. ppks code is nice, but wont
+ // work with dates outside 1900-2038, or something like that
+ if (self.getFullYear) {
+ var newDate = new Date("January 1 2001 00:00:00 +0000");
+ var x = newDate .getFullYear();
+ if (x == 2001) {
+ // i trust the method now
+ return self.getFullYear();
+ }
+ }
+ // else, do this:
+ // codes thanks to ppk:
+ // http://www.xs4all.nl/~ppk/js/introdate.html
+ var x = self.getYear();
+ var y = x % 100;
+ y += (y < 38) ? 2000 : 1900;
+ return y;
+ }
+ function y() {
+ // A two-digit representation of a year
+ var y = Y()+"";
+ return y.substring(y.length-2,y.length);
+ }
+ function z() {
+ // The day of the year, zero indexed! 0 through 366
+ var t = new Date("January 1 " + Y() + " 00:00:00");
+ var diff = self.getTime() - t.getTime();
+ return Math.floor(diff/1000/60/60/24);
+ }
+
+ var self = this;
+ if (time) {
+ // save time
+ var prevTime = self.getTime();
+ self.setTime(time);
+ }
+
+ var ia = input.split("");
+ var ij = 0;
+ while (ia[ij]) {
+ if (ia[ij] == "\\") {
+ // this is our way of allowing users to escape stuff
+ ia.splice(ij,1);
+ } else {
+ if (arrayExists(switches,ia[ij])) {
+ ia[ij] = eval(ia[ij] + "()");
+ }
+ }
+ ij++;
+ }
+ // reset time, back to what it was
+ if (prevTime) {
+ self.setTime(prevTime);
+ }
+ return ia.join("");
+}
+
+var date = new Date("1/1/2007 1:11:11");
+
+for (i = 0; i < 500; ++i) {
+ var shortFormat = date.formatDate("Y-m-d");
+ var longFormat = date.formatDate("l, F d, Y g:i:s A");
+ date.setTime(date.getTime() + 84266956);
+}
+
diff --git a/tests/benchmarks/script/sunspider/tests/date-format-xparb.js b/tests/benchmarks/script/sunspider/tests/date-format-xparb.js
new file mode 100644
index 0000000000..1f0955649e
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/date-format-xparb.js
@@ -0,0 +1,417 @@
+/*
+ * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, version 2.1.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+Date.parseFunctions = {count:0};
+Date.parseRegexes = [];
+Date.formatFunctions = {count:0};
+
+Date.prototype.dateFormat = function(format) {
+ if (Date.formatFunctions[format] == null) {
+ Date.createNewFormat(format);
+ }
+ var func = Date.formatFunctions[format];
+ return this[func]();
+}
+
+Date.createNewFormat = function(format) {
+ var funcName = "format" + Date.formatFunctions.count++;
+ Date.formatFunctions[format] = funcName;
+ var code = "Date.prototype." + funcName + " = function(){return ";
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ code += "'" + String.escape(ch) + "' + ";
+ }
+ else {
+ code += Date.getFormatCode(ch);
+ }
+ }
+ eval(code.substring(0, code.length - 3) + ";}");
+}
+
+Date.getFormatCode = function(character) {
+ switch (character) {
+ case "d":
+ return "String.leftPad(this.getDate(), 2, '0') + ";
+ case "D":
+ return "Date.dayNames[this.getDay()].substring(0, 3) + ";
+ case "j":
+ return "this.getDate() + ";
+ case "l":
+ return "Date.dayNames[this.getDay()] + ";
+ case "S":
+ return "this.getSuffix() + ";
+ case "w":
+ return "this.getDay() + ";
+ case "z":
+ return "this.getDayOfYear() + ";
+ case "W":
+ return "this.getWeekOfYear() + ";
+ case "F":
+ return "Date.monthNames[this.getMonth()] + ";
+ case "m":
+ return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
+ case "M":
+ return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
+ case "n":
+ return "(this.getMonth() + 1) + ";
+ case "t":
+ return "this.getDaysInMonth() + ";
+ case "L":
+ return "(this.isLeapYear() ? 1 : 0) + ";
+ case "Y":
+ return "this.getFullYear() + ";
+ case "y":
+ return "('' + this.getFullYear()).substring(2, 4) + ";
+ case "a":
+ return "(this.getHours() < 12 ? 'am' : 'pm') + ";
+ case "A":
+ return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
+ case "g":
+ return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";
+ case "G":
+ return "this.getHours() + ";
+ case "h":
+ return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";
+ case "H":
+ return "String.leftPad(this.getHours(), 2, '0') + ";
+ case "i":
+ return "String.leftPad(this.getMinutes(), 2, '0') + ";
+ case "s":
+ return "String.leftPad(this.getSeconds(), 2, '0') + ";
+ case "O":
+ return "this.getGMTOffset() + ";
+ case "T":
+ return "this.getTimezone() + ";
+ case "Z":
+ return "(this.getTimezoneOffset() * -60) + ";
+ default:
+ return "'" + String.escape(character) + "' + ";
+ }
+}
+
+Date.parseDate = function(input, format) {
+ if (Date.parseFunctions[format] == null) {
+ Date.createParser(format);
+ }
+ var func = Date.parseFunctions[format];
+ return Date[func](input);
+}
+
+Date.createParser = function(format) {
+ var funcName = "parse" + Date.parseFunctions.count++;
+ var regexNum = Date.parseRegexes.length;
+ var currentGroup = 1;
+ Date.parseFunctions[format] = funcName;
+
+ var code = "Date." + funcName + " = function(input){\n"
+ + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n"
+ + "var d = new Date();\n"
+ + "y = d.getFullYear();\n"
+ + "m = d.getMonth();\n"
+ + "d = d.getDate();\n"
+ + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
+ + "if (results && results.length > 0) {"
+ var regex = "";
+
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ regex += String.escape(ch);
+ }
+ else {
+ obj = Date.formatCodeToRegex(ch, currentGroup);
+ currentGroup += obj.g;
+ regex += obj.s;
+ if (obj.g && obj.c) {
+ code += obj.c;
+ }
+ }
+ }
+
+ code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
+ + "{return new Date(y, m, d, h, i, s);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
+ + "{return new Date(y, m, d, h, i);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n"
+ + "{return new Date(y, m, d, h);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0)\n"
+ + "{return new Date(y, m, d);}\n"
+ + "else if (y > 0 && m >= 0)\n"
+ + "{return new Date(y, m);}\n"
+ + "else if (y > 0)\n"
+ + "{return new Date(y);}\n"
+ + "}return null;}";
+
+ Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$");
+ eval(code);
+}
+
+Date.formatCodeToRegex = function(character, currentGroup) {
+ switch (character) {
+ case "D":
+ return {g:0,
+ c:null,
+ s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
+ case "j":
+ case "d":
+ return {g:1,
+ c:"d = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"};
+ case "l":
+ return {g:0,
+ c:null,
+ s:"(?:" + Date.dayNames.join("|") + ")"};
+ case "S":
+ return {g:0,
+ c:null,
+ s:"(?:st|nd|rd|th)"};
+ case "w":
+ return {g:0,
+ c:null,
+ s:"\\d"};
+ case "z":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{1,3})"};
+ case "W":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{2})"};
+ case "F":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n",
+ s:"(" + Date.monthNames.join("|") + ")"};
+ case "M":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n",
+ s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
+ case "n":
+ case "m":
+ return {g:1,
+ c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+ s:"(\\d{1,2})"};
+ case "t":
+ return {g:0,
+ c:null,
+ s:"\\d{1,2}"};
+ case "L":
+ return {g:0,
+ c:null,
+ s:"(?:1|0)"};
+ case "Y":
+ return {g:1,
+ c:"y = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{4})"};
+ case "y":
+ return {g:1,
+ c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"
+ + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
+ s:"(\\d{1,2})"};
+ case "a":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'am') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(am|pm)"};
+ case "A":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'AM') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(AM|PM)"};
+ case "g":
+ case "G":
+ case "h":
+ case "H":
+ return {g:1,
+ c:"h = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"};
+ case "i":
+ return {g:1,
+ c:"i = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "s":
+ return {g:1,
+ c:"s = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "O":
+ return {g:0,
+ c:null,
+ s:"[+-]\\d{4}"};
+ case "T":
+ return {g:0,
+ c:null,
+ s:"[A-Z]{3}"};
+ case "Z":
+ return {g:0,
+ c:null,
+ s:"[+-]\\d{1,5}"};
+ default:
+ return {g:0,
+ c:null,
+ s:String.escape(character)};
+ }
+}
+
+Date.prototype.getTimezone = function() {
+ return this.toString().replace(
+ /^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace(
+ /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");
+}
+
+Date.prototype.getGMTOffset = function() {
+ return (this.getTimezoneOffset() > 0 ? "-" : "+")
+ + String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0")
+ + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");
+}
+
+Date.prototype.getDayOfYear = function() {
+ var num = 0;
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ for (var i = 0; i < this.getMonth(); ++i) {
+ num += Date.daysInMonth[i];
+ }
+ return num + this.getDate() - 1;
+}
+
+Date.prototype.getWeekOfYear = function() {
+ // Skip to Thursday of this week
+ var now = this.getDayOfYear() + (4 - this.getDay());
+ // Find the first Thursday of the year
+ var jan1 = new Date(this.getFullYear(), 0, 1);
+ var then = (7 - jan1.getDay() + 4);
+ document.write(then);
+ return String.leftPad(((now - then) / 7) + 1, 2, "0");
+}
+
+Date.prototype.isLeapYear = function() {
+ var year = this.getFullYear();
+ return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
+}
+
+Date.prototype.getFirstDayOfMonth = function() {
+ var day = (this.getDay() - (this.getDate() - 1)) % 7;
+ return (day < 0) ? (day + 7) : day;
+}
+
+Date.prototype.getLastDayOfMonth = function() {
+ var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
+ return (day < 0) ? (day + 7) : day;
+}
+
+Date.prototype.getDaysInMonth = function() {
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ return Date.daysInMonth[this.getMonth()];
+}
+
+Date.prototype.getSuffix = function() {
+ switch (this.getDate()) {
+ case 1:
+ case 21:
+ case 31:
+ return "st";
+ case 2:
+ case 22:
+ return "nd";
+ case 3:
+ case 23:
+ return "rd";
+ default:
+ return "th";
+ }
+}
+
+String.escape = function(string) {
+ return string.replace(/('|\\)/g, "\\$1");
+}
+
+String.leftPad = function (val, size, ch) {
+ var result = new String(val);
+ if (ch == null) {
+ ch = " ";
+ }
+ while (result.length < size) {
+ result = ch + result;
+ }
+ return result;
+}
+
+Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+Date.monthNames =
+ ["January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"];
+Date.dayNames =
+ ["Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"];
+Date.y2kYear = 50;
+Date.monthNumbers = {
+ Jan:0,
+ Feb:1,
+ Mar:2,
+ Apr:3,
+ May:4,
+ Jun:5,
+ Jul:6,
+ Aug:7,
+ Sep:8,
+ Oct:9,
+ Nov:10,
+ Dec:11};
+Date.patterns = {
+ ISO8601LongPattern:"Y-m-d H:i:s",
+ ISO8601ShortPattern:"Y-m-d",
+ ShortDatePattern: "n/j/Y",
+ LongDatePattern: "l, F d, Y",
+ FullDateTimePattern: "l, F d, Y g:i:s A",
+ MonthDayPattern: "F d",
+ ShortTimePattern: "g:i A",
+ LongTimePattern: "g:i:s A",
+ SortableDateTimePattern: "Y-m-d\\TH:i:s",
+ UniversalSortableDateTimePattern: "Y-m-d H:i:sO",
+ YearMonthPattern: "F, Y"};
+
+var date = new Date("1/1/2007 1:11:11");
+
+for (i = 0; i < 4000; ++i) {
+ var shortFormat = date.dateFormat("Y-m-d");
+ var longFormat = date.dateFormat("l, F d, Y g:i:s A");
+ date.setTime(date.getTime() + 84266956);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/math-cordic.js b/tests/benchmarks/script/sunspider/tests/math-cordic.js
new file mode 100644
index 0000000000..4d3833b1ef
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-cordic.js
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) Rich Moore. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/////. Start CORDIC
+
+var AG_CONST = 0.6072529350;
+
+function FIXED(X)
+{
+ return X * 65536.0;
+}
+
+function FLOAT(X)
+{
+ return X / 65536.0;
+}
+
+function DEG2RAD(X)
+{
+ return 0.017453 * (X);
+}
+
+var Angles = [
+ FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
+ FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
+ FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
+ FIXED(0.027977)
+ ];
+
+
+function cordicsincos() {
+ var X;
+ var Y;
+ var TargetAngle;
+ var CurrAngle;
+ var Step;
+
+ X = FIXED(AG_CONST); /* AG_CONST * cos(0) */
+ Y = 0; /* AG_CONST * sin(0) */
+
+ TargetAngle = FIXED(28.027);
+ CurrAngle = 0;
+ for (Step = 0; Step < 12; Step++) {
+ var NewX;
+ if (TargetAngle > CurrAngle) {
+ NewX = X - (Y >> Step);
+ Y = (X >> Step) + Y;
+ X = NewX;
+ CurrAngle += Angles[Step];
+ } else {
+ NewX = X + (Y >> Step);
+ Y = -(X >> Step) + Y;
+ X = NewX;
+ CurrAngle -= Angles[Step];
+ }
+ }
+}
+
+///// End CORDIC
+
+function cordic( runs ) {
+ var start = new Date();
+
+ for ( var i = 0 ; i < runs ; i++ ) {
+ cordicsincos();
+ }
+
+ var end = new Date();
+
+ return end.getTime() - start.getTime();
+}
+
+cordic(25000);
diff --git a/tests/benchmarks/script/sunspider/tests/math-partial-sums.js b/tests/benchmarks/script/sunspider/tests/math-partial-sums.js
new file mode 100644
index 0000000000..d082d79945
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-partial-sums.js
@@ -0,0 +1,33 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+// contributed by Isaac Gouy
+
+function partial(n){
+ var a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0.0;
+ var twothirds = 2.0/3.0;
+ var alt = -1.0;
+ var k2 = k3 = sk = ck = 0.0;
+
+ for (var k = 1; k <= n; k++){
+ k2 = k*k;
+ k3 = k2*k;
+ sk = Math.sin(k);
+ ck = Math.cos(k);
+ alt = -alt;
+
+ a1 += Math.pow(twothirds,k-1);
+ a2 += Math.pow(k,-0.5);
+ a3 += 1.0/(k*(k+1.0));
+ a4 += 1.0/(k3 * sk*sk);
+ a5 += 1.0/(k3 * ck*ck);
+ a6 += 1.0/k;
+ a7 += 1.0/k2;
+ a8 += alt/k;
+ a9 += alt/(2*k -1);
+ }
+}
+
+for (var i = 1024; i <= 16384; i *= 2) {
+ partial(i);
+}
+
diff --git a/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js b/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js
new file mode 100644
index 0000000000..8139ef370e
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js
@@ -0,0 +1,51 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// contributed by Ian Osgood
+
+function A(i,j) {
+ return 1/((i+j)*(i+j+1)/2+i+1);
+}
+
+function Au(u,v) {
+ for (var i=0; i<u.length; ++i) {
+ var t = 0;
+ for (var j=0; j<u.length; ++j)
+ t += A(i,j) * u[j];
+ v[i] = t;
+ }
+}
+
+function Atu(u,v) {
+ for (var i=0; i<u.length; ++i) {
+ var t = 0;
+ for (var j=0; j<u.length; ++j)
+ t += A(j,i) * u[j];
+ v[i] = t;
+ }
+}
+
+function AtAu(u,v,w) {
+ Au(u,w);
+ Atu(w,v);
+}
+
+function spectralnorm(n) {
+ var i, u=[], v=[], w=[], vv=0, vBv=0;
+ for (i=0; i<n; ++i) {
+ u[i] = 1; v[i] = w[i] = 0;
+ }
+ for (i=0; i<10; ++i) {
+ AtAu(u,v,w);
+ AtAu(v,u,w);
+ }
+ for (i=0; i<n; ++i) {
+ vBv += u[i]*v[i];
+ vv += v[i]*v[i];
+ }
+ return Math.sqrt(vBv/vv);
+}
+
+for (var i = 6; i <= 48; i *= 2) {
+ spectralnorm(i);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/regexp-dna.js b/tests/benchmarks/script/sunspider/tests/regexp-dna.js
new file mode 100644
index 0000000000..b500e68ad9
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/regexp-dna.js
@@ -0,0 +1,1712 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// contributed by Jesse Millikan
+// Base on the Ruby version by jose fco. gonzalez
+
+var l;
+var dnaInput = ">ONE Homo sapiens alu\n\
+GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
+TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
+AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
+GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
+CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
+GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
+GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
+TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
+AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
+GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
+AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
+AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
+GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
+CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
+AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
+TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
+TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
+GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
+TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
+CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
+CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
+TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
+CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
+AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
+GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
+TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
+TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
+GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
+GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
+ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
+TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
+CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
+CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
+GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
+CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
+GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
+GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
+GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
+GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
+GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
+AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
+GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
+AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
+GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
+ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
+GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n\
+GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n\
+GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n\
+TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n\
+AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n\
+GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n\
+CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n\
+TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n\
+ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n\
+GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n\
+ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n\
+CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n\
+CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n\
+ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n\
+CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n\
+AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n\
+CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n\
+AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n\
+CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n\
+CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n\
+CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n\
+CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n\
+ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n\
+AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n\
+TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n\
+ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n\
+CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n\
+AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n\
+AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n\
+TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n\
+CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n\
+TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n\
+CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n\
+GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n\
+GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n\
+CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n\
+GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n\
+GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n\
+AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n\
+GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n\
+CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n\
+GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n\
+TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n\
+CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n\
+ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n\
+CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n\
+AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n\
+CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n\
+CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n\
+ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n\
+GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n\
+GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n\
+GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n\
+TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n\
+CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n\
+GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n\
+CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n\
+GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n\
+CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n\
+CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n\
+CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n\
+ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n\
+CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n\
+GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n\
+AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n\
+ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n\
+TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n\
+GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n\
+GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n\
+TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n\
+AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n\
+ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n\
+GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n\
+AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n\
+TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n\
+CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n\
+GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n\
+CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n\
+GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n\
+TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n\
+ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n\
+TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n\
+GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n\
+TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n\
+GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n\
+GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n\
+ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n\
+GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n\
+GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n\
+CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n\
+ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n\
+AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n\
+TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n\
+CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n\
+TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n\
+CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n\
+GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n\
+GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n\
+CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n\
+TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n\
+CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n\
+AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n\
+AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n\
+AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n\
+GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n\
+TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n\
+AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n\
+AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n\
+CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n\
+TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n\
+GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n\
+CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n\
+CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n\
+GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n\
+AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n\
+GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n\
+TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n\
+CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n\
+GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n\
+CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n\
+AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n\
+ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n\
+ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n\
+AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n\
+GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n\
+GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n\
+CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n\
+GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n\
+CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n\
+GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n\
+GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n\
+GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n\
+CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n\
+AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n\
+CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n\
+CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n\
+GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n\
+GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n\
+TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n\
+ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n\
+CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n\
+ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n\
+GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n\
+TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n\
+GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n\
+GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n\
+GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n\
+GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n\
+TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n\
+TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n\
+TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n\
+GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n\
+CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n\
+TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n\
+GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG\n\
+GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT\n\
+GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT\n\
+ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG\n\
+GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG\n\
+CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA\n\
+CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT\n\
+CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC\n\
+GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC\n\
+TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG\n\
+GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC\n\
+AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG\n\
+GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG\n\
+CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG\n\
+GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG\n\
+ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG\n\
+GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA\n\
+AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC\n\
+CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG\n\
+TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA\n\
+AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG\n\
+GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA\n\
+CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG\n\
+AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG\n\
+CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG\n\
+GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT\n\
+CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA\n\
+AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG\n\
+AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC\n\
+CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT\n\
+GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA\n\
+CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG\n\
+TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA\n\
+CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC\n\
+AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC\n\
+TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA\n\
+CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC\n\
+CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA\n\
+GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC\n\
+GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA\n\
+GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC\n\
+CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC\n\
+TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC\n\
+CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC\n\
+CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA\n\
+CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA\n\
+AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT\n\
+GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA\n\
+CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC\n\
+TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA\n\
+GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA\n\
+GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT\n\
+CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC\n\
+TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT\n\
+CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC\n\
+CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG\n\
+GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG\n\
+GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC\n\
+GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG\n\
+GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG\n\
+TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA\n\
+ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG\n\
+CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC\n\
+AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG\n\
+GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT\n\
+CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC\n\
+GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA\n\
+TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC\n\
+GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA\n\
+GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC\n\
+AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC\n\
+AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA\n\
+CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG\n\
+CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG\n\
+AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG\n\
+GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT\n\
+GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC\n\
+GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG\n\
+CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC\n\
+CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG\n\
+CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC\n\
+GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC\n\
+TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC\n\
+CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA\n\
+CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC\n\
+AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG\n\
+AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA\n\
+GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
+TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
+AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
+GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
+CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
+GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
+GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
+TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
+AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
+GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
+AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
+AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
+GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
+CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
+AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
+TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
+TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
+GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
+TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
+CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
+CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
+TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
+CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
+AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
+GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
+TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
+TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
+GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
+GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
+ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
+TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
+CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
+CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
+GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
+CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
+GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
+GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
+GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
+GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
+GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
+AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
+GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
+AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
+GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
+ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
+GAGGCTGAGGCAGGAGAATC\n\
+>TWO IUB ambiguity codes\n\
+cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n\
+tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n\
+NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n\
+cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n\
+gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n\
+HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n\
+tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n\
+tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n\
+acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n\
+tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n\
+gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n\
+accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n\
+RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n\
+tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n\
+cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n\
+ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n\
+actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n\
+YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n\
+KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n\
+aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n\
+aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n\
+gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n\
+tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n\
+tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n\
+ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n\
+ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n\
+BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n\
+aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n\
+tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n\
+cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n\
+aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n\
+tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n\
+aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n\
+gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n\
+ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n\
+taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n\
+ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n\
+gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n\
+gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n\
+tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n\
+tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n\
+taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n\
+cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n\
+aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n\
+cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n\
+ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n\
+attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n\
+ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n\
+attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n\
+tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n\
+aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n\
+cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n\
+gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n\
+attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n\
+BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n\
+DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n\
+tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n\
+tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n\
+tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n\
+taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n\
+aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n\
+DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n\
+VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n\
+agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n\
+gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n\
+tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n\
+catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n\
+tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n\
+aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n\
+aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n\
+acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n\
+tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n\
+aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n\
+acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n\
+RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n\
+RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n\
+tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n\
+gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n\
+YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n\
+ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n\
+ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n\
+gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n\
+KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n\
+aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n\
+gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n\
+taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n\
+VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n\
+NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n\
+MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n\
+cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n\
+ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n\
+tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n\
+aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n\
+actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n\
+tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n\
+gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n\
+BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n\
+aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n\
+aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n\
+YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n\
+aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n\
+cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n\
+tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n\
+tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n\
+MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n\
+taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n\
+tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n\
+RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n\
+agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n\
+NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n\
+gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n\
+aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n\
+ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n\
+cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n\
+tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n\
+RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n\
+tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n\
+gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n\
+tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n\
+ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n\
+tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n\
+ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n\
+BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n\
+gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n\
+acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n\
+gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n\
+taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n\
+acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n\
+tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n\
+catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n\
+tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n\
+atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n\
+ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n\
+ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n\
+cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n\
+SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n\
+VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n\
+BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n\
+NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n\
+tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n\
+ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n\
+cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n\
+VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n\
+atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n\
+aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n\
+tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n\
+RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n\
+gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n\
+tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n\
+attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n\
+atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n\
+cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n\
+NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n\
+ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n\
+cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n\
+aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n\
+agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n\
+tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n\
+ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n\
+ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n\
+tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n\
+taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n\
+tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n\
+YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n\
+ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n\
+tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n\
+ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n\
+attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n\
+atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n\
+YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n\
+gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n\
+MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n\
+tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n\
+ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n\
+aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n\
+BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n\
+tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n\
+StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n\
+cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n\
+atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n\
+atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n\
+ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n\
+gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n\
+tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n\
+BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n\
+agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n\
+HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n\
+tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n\
+aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n\
+catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n\
+aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n\
+tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n\
+cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n\
+DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n\
+gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n\
+tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n\
+atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n\
+KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n\
+tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n\
+tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n\
+taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n\
+NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n\
+HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n\
+ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n\
+tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n\
+cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n\
+ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n\
+HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n\
+gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n\
+BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n\
+gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n\
+KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n\
+cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n\
+tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n\
+taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n\
+gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n\
+aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n\
+acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n\
+RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n\
+attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n\
+KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n\
+KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n\
+gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n\
+aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n\
+aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n\
+ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n\
+tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n\
+aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n\
+tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n\
+MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n\
+cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n\
+caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n\
+ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n\
+acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n\
+tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n\
+gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n\
+atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n\
+aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n\
+NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n\
+taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n\
+aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n\
+ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n\
+DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n\
+tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n\
+aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n\
+ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n\
+ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n\
+RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n\
+aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n\
+aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n\
+aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n\
+tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n\
+atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n\
+BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n\
+gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n\
+cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n\
+RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n\
+taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n\
+aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n\
+gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n\
+gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n\
+aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n\
+gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n\
+ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n\
+MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n\
+SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n\
+aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n\
+VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n\
+HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n\
+agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n\
+gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n\
+agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n\
+tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n\
+gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n\
+VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n\
+tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n\
+MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n\
+actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n\
+WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n\
+tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n\
+KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n\
+BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n\
+attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n\
+VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n\
+aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n\
+tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n\
+tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n\
+tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n\
+VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n\
+tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n\
+ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n\
+tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n\
+WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n\
+tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n\
+tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n\
+MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n\
+tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n\
+atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n\
+aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n\
+aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n\
+aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga\n\
+YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt\n\
+WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt\n\
+ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg\n\
+aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc\n\
+ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD\n\
+gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat\n\
+NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD\n\
+atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM\n\
+tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt\n\
+aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa\n\
+gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat\n\
+gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag\n\
+tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa\n\
+aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc\n\
+ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta\n\
+tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN\n\
+catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt\n\
+cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc\n\
+aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag\n\
+NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR\n\
+ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg\n\
+RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH\n\
+SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM\n\
+RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc\n\
+agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW\n\
+gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt\n\
+MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW\n\
+aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN\n\
+cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta\n\
+ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg\n\
+accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat\n\
+tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc\n\
+acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat\n\
+SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa\n\
+tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg\n\
+gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt\n\
+attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc\n\
+DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc\n\
+aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac\n\
+tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc\n\
+ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR\n\
+ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR\n\
+tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa\n\
+tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc\n\
+attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta\n\
+aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt\n\
+cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag\n\
+aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc\n\
+VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa\n\
+catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg\n\
+taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta\n\
+cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa\n\
+DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga\n\
+tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM\n\
+acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta\n\
+tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct\n\
+YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc\n\
+cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD\n\
+actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV\n\
+KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct\n\
+WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc\n\
+ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca\n\
+aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt\n\
+aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt\n\
+agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM\n\
+NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc\n\
+taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat\n\
+RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg\n\
+aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH\n\
+tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc\n\
+aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM\n\
+tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta\n\
+aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV\n\
+tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa\n\
+DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata\n\
+YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc\n\
+tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga\n\
+ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta\n\
+cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag\n\
+atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat\n\
+cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB\n\
+aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac\n\
+acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa\n\
+tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa\n\
+ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa\n\
+gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat\n\
+ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg\n\
+aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat\n\
+cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat\n\
+MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg\n\
+atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat\n\
+taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg\n\
+taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga\n\
+ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB\n\
+cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata\n\
+BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat\n\
+tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt\n\
+gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag\n\
+gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa\n\
+ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca\n\
+aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt\n\
+taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta\n\
+atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt\n\
+atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat\n\
+aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta\n\
+cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt\n\
+tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc\n\
+aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt\n\
+acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt\n\
+gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD\n\
+gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa\n\
+gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc\n\
+MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa\n\
+cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc\n\
+agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt\n\
+taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa\n\
+ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc\n\
+aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta\n\
+VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa\n\
+ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga\n\
+tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa\n\
+tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt\n\
+gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat\n\
+tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH\n\
+DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa\n\
+acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV\n\
+aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg\n\
+gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca\n\
+agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa\n\
+aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB\n\
+gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa\n\
+ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS\n\
+gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR\n\
+SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM\n\
+tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt\n\
+aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH\n\
+MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc\n\
+aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa\n\
+ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt\n\
+aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt\n\
+YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta\n\
+aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY\n\
+aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt\n\
+ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa\n\
+atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa\n\
+cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt\n\
+attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY\n\
+BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc\n\
+aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa\n\
+agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact\n\
+BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta\n\
+agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt\n\
+KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM\n\
+attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat\n\
+BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat\n\
+StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW\n\
+atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa\n\
+HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt\n\
+gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK\n\
+gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta\n\
+caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg\n\
+gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag\n\
+aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca\n\
+aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV\n\
+HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS\n\
+gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact\n\
+ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca\n\
+taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta\n\
+atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca\n\
+gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc\n\
+YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa\n\
+aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg\n\
+tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta\n\
+tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN\n\
+HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt\n\
+gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt\n\
+SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg\n\
+HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac\n\
+tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca\n\
+tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat\n\
+caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN\n\
+atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc\n\
+ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM\n\
+aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa\n\
+acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc\n\
+aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat\n\
+ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg\n\
+tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca\n\
+actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag\n\
+cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc\n\
+ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat\n\
+tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH\n\
+tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata\n\
+YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD\n\
+ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata\n\
+aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg\n\
+DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM\n\
+tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa\n\
+ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt\n\
+>THREE Homo sapiens frequency\n\
+agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n\
+cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n\
+tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n\
+tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n\
+gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n\
+tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n\
+tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n\
+atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n\
+cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n\
+ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n\
+ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n\
+atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n\
+gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n\
+tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n\
+gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n\
+atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n\
+tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n\
+ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n\
+tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n\
+aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n\
+gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n\
+ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n\
+agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n\
+agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n\
+acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n\
+cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n\
+cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n\
+cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n\
+aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n\
+tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n\
+atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n\
+cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n\
+tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n\
+catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n\
+tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n\
+caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n\
+tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n\
+aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n\
+aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n\
+ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n\
+gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n\
+ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n\
+cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n\
+gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n\
+ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n\
+cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n\
+taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n\
+gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n\
+taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n\
+ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n\
+aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n\
+gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n\
+acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n\
+ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n\
+tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n\
+tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n\
+tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n\
+ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n\
+aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n\
+tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n\
+gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n\
+gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n\
+cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n\
+actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n\
+tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n\
+ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n\
+ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n\
+agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n\
+gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n\
+tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n\
+atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n\
+cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n\
+tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n\
+gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n\
+gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n\
+aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n\
+gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n\
+cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n\
+taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n\
+tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n\
+ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n\
+aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n\
+gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n\
+aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n\
+tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n\
+tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n\
+aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n\
+ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n\
+ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n\
+caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n\
+gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n\
+cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n\
+ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n\
+tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n\
+atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n\
+ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n\
+acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n\
+taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n\
+ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n\
+aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n\
+cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n\
+tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n\
+gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n\
+aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n\
+cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n\
+cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n\
+gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n\
+cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n\
+gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n\
+agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n\
+aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n\
+aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n\
+cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n\
+agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n\
+cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n\
+agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n\
+gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n\
+aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n\
+agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n\
+cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n\
+agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n\
+ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n\
+tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n\
+gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n\
+gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n\
+ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n\
+gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n\
+atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n\
+tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n\
+ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n\
+tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n\
+cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n\
+ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n\
+aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n\
+gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n\
+ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n\
+atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n\
+aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n\
+gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n\
+atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n\
+aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n\
+tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n\
+ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n\
+gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n\
+cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n\
+ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n\
+ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n\
+ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n\
+cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n\
+tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n\
+tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n\
+cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n\
+gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n\
+ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n\
+ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n\
+tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n\
+agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n\
+ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n\
+cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n\
+agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n\
+tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n\
+gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n\
+ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n\
+ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n\
+agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n\
+attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n\
+ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n\
+agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n\
+aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n\
+gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n\
+gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n\
+ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n\
+gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n\
+ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n\
+taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n\
+aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n\
+tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n\
+ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n\
+agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n\
+ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n\
+agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n\
+gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n\
+tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n\
+gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n\
+cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n\
+ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n\
+cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n\
+gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n\
+gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n\
+tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n\
+cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n\
+aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n\
+ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n\
+gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n\
+aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n\
+gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n\
+aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n\
+gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n\
+agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n\
+caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n\
+gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n\
+aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n\
+tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n\
+tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n\
+ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n\
+ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n\
+gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n\
+ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n\
+aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n\
+tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n\
+acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n\
+atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n\
+gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n\
+tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n\
+cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n\
+gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n\
+acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n\
+acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n\
+attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n\
+tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n\
+cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n\
+aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n\
+ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n\
+tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n\
+gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n\
+gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n\
+acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n\
+gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n\
+gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n\
+ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n\
+taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n\
+agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n\
+gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n\
+ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n\
+accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n\
+tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n\
+taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n\
+catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n\
+tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n\
+ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n\
+aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n\
+atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n\
+tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n\
+ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n\
+tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n\
+aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n\
+agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n\
+acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n\
+aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n\
+ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n\
+gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n\
+taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n\
+taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n\
+tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n\
+gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n\
+ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n\
+atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n\
+tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n\
+cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n\
+aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n\
+taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n\
+caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n\
+ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n\
+tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n\
+tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n\
+gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n\
+gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n\
+gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n\
+ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n\
+tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n\
+taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n\
+gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n\
+ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n\
+gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n\
+tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n\
+ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n\
+tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n\
+cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n\
+ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n\
+caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n\
+cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n\
+gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n\
+cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n\
+taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n\
+tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n\
+taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n\
+tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n\
+tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n\
+tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n\
+ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n\
+aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n\
+atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n\
+actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n\
+gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n\
+ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n\
+gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n\
+tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n\
+aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n\
+atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n\
+catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc\n\
+taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag\n\
+ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc\n\
+cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca\n\
+agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga\n\
+atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg\n\
+tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt\n\
+gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa\n\
+attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat\n\
+tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca\n\
+tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta\n\
+gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag\n\
+attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa\n\
+aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct\n\
+ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca\n\
+taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata\n\
+atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc\n\
+aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg\n\
+agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt\n\
+gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg\n\
+tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt\n\
+taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc\n\
+cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct\n\
+aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct\n\
+ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag\n\
+gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg\n\
+tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg\n\
+ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg\n\
+cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta\n\
+aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga\n\
+cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc\n\
+ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg\n\
+tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg\n\
+ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat\n\
+atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt\n\
+tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg\n\
+ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc\n\
+acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt\n\
+ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg\n\
+aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc\n\
+gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac\n\
+ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca\n\
+tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc\n\
+gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat\n\
+taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg\n\
+aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca\n\
+tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa\n\
+gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat\n\
+ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg\n\
+tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac\n\
+tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt\n\
+tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt\n\
+ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca\n\
+gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag\n\
+ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt\n\
+gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt\n\
+tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta\n\
+caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag\n\
+tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa\n\
+gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc\n\
+tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga\n\
+cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc\n\
+gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg\n\
+tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag\n\
+caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa\n\
+agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc\n\
+atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat\n\
+ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa\n\
+atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga\n\
+tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg\n\
+tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg\n\
+ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg\n\
+agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc\n\
+acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt\n\
+cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat\n\
+taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt\n\
+acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt\n\
+ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt\n\
+ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata\n\
+cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat\n\
+ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac\n\
+cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa\n\
+attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc\n\
+gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata\n\
+ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt\n\
+aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt\n\
+acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc\n\
+tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac\n\
+tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact\n\
+agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc\n\
+ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt\n\
+tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat\n\
+ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc\n\
+aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct\n\
+cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg\n\
+tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt\n\
+tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat\n\
+accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga\n\
+agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc\n\
+aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag\n\
+gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc\n\
+aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag\n\
+ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa\n\
+cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc\n\
+ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg\n\
+tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca\n\
+tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata\n\
+aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac\n\
+gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc\n\
+cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat\n\
+aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt\n\
+gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa\n\
+gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc\n\
+tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata\n\
+tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt\n\
+accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac\n\
+atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc\n\
+tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa\n\
+atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc\n\
+gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga\n\
+ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta\n\
+tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga\n\
+gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt\n\
+tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata\n\
+gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg\n\
+ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac\n\
+agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt\n\
+aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact\n\
+tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg\n\
+tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga\n\
+tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca\n\
+aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg\n\
+aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg\n\
+aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt\n\
+ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca\n\
+gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag\n\
+tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc\n\
+atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat\n\
+gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc\n\
+tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact\n\
+gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta\n\
+atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt\n\
+gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta\n\
+ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta\n\
+tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc\n\
+gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga\n\
+aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta\n\
+acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc\n\
+acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact\n\
+accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt\n\
+atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac\n\
+aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa\n\
+gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa\n\
+aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa\n\
+caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag\n\
+cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc\n\
+ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag\n\
+aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag\n\
+tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc\n\
+agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat\n\
+caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc\n\
+gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca\n\
+gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt\n\
+acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta\n\
+ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat\n\
+gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg\n\
+cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac\n\
+ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata\n\
+actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca\n\
+tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg\n\
+catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta\n\
+tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag\n\
+tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg\n\
+tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata\n\
+cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg\n\
+cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac\n\
+tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg\n\
+aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg\n\
+cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt\n\
+caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa\n\
+ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga\n\
+tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta\n\
+attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc\n\
+tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt\n\
+gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa\n\
+cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac\n\
+aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta\n\
+ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa\n\
+aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga\n\
+gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta\n\
+gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg\n\
+cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag\n\
+gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact\n\
+tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta\n\
+aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat\n\
+atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc\n\
+ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca\n\
+aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta\n\
+aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact\n\
+cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa\n\
+gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt\n\
+ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat\n\
+tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt\n\
+gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag\n\
+atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat\n\
+ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc\n\
+acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca\n\
+cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg\n\
+atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg\n\
+tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga\n\
+atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta\n\
+ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt\n\
+agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa\n\
+agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa\n\
+atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg\n\
+tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga\n\
+tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca\n\
+taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa\n\
+aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg\n\
+tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata\n\
+acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg\n\
+tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat\n\
+acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag\n\
+ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat\n\
+tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat\n\
+aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata\n\
+taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt\n\
+cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat\n\
+ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga\n\
+attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc\n\
+caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag\n\
+aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca\n\
+atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact\n\
+tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact\n\
+cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct\n\
+ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca\n\
+gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta\n\
+actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca\n\
+cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc\n\
+ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa\n\
+aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc\n\
+ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta\n\
+gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt\n\
+ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg\n\
+cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat\n\
+tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc\n\
+ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac\n\
+cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca\n\
+ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat\n\
+attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt\n\
+agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc\n\
+ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat\n\
+aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca\n\
+aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga\n\
+atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat\n\
+cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac\n\
+gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca\n\
+aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac\n\
+atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc\n\
+ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag\n\
+cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt\n\
+caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta\n\
+tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat\n\
+catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata\n\
+atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc\n\
+tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct\n\
+gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca\n\
+agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat\n\
+actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt\n\
+ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt\n\
+tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat\n\
+ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc\n\
+gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc\n\
+tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg\n\
+taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat\n\
+agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg\n\
+acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa\n\
+cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt\n\
+attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat\n\
+agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg\n\
+gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact\n\
+taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag\n\
+ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg\n\
+tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag\n\
+tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc\n\
+aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg\n\
+tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa\n\
+atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt\n\
+ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa\n\
+aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc\n\
+actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt\n\
+acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat\n\
+aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac\n\
+caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct\n\
+aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct\n\
+cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa\n\
+atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt\n\
+ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt\n\
+agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt\n\
+atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga\n\
+ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat\n\
+attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc\n\
+ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg\n\
+atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc\n\
+taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc\n\
+tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg\n\
+aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat\n\
+ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac\n\
+gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg\n\
+gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt\n\
+ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata\n\
+cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca\n\
+ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt\n\
+aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg\n\
+taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg\n\
+gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc\n\
+gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt\n\
+tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat\n\
+attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt\n\
+caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata\n\
+acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt\n\
+cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta\n\
+taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat\n\
+taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag\n\
+tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa\n\
+ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc\n\
+taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta\n\
+tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga\n\
+gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt\n\
+gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc\n\
+cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag\n\
+aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa\n\
+gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg\n\
+agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt\n\
+agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta\n\
+acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc\n\
+gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca\n\
+tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt\n\
+atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga\n\
+ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa\n\
+gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga\n\
+gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg\n\
+gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat\n\
+atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg\n\
+ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat\n\
+acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa\n\
+tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg\n\
+tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt\n\
+cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc\n\
+aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc\n\
+gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag\n\
+ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc\n\
+taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa\n\
+gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta\n\
+tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta\n\
+tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc\n\
+caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc\n\
+ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct\n\
+gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag\n\
+ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc\n\
+aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa\n\
+ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg\n\
+tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc\n\
+gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc\n\
+aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc\n\
+ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga\n\
+cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga\n\
+attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct\n\
+ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc\n\
+gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt\n\
+ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa\n\
+atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag\n\
+atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc\n\
+atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca\n\
+cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg\n\
+cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg\n\
+gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga\n\
+accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac\n\
+tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat\n\
+aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg\n\
+cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt\n\
+tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg\n\
+cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa\n\
+acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata\n\
+cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta\n\
+ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta\n\
+agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc\n\
+cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc\n\
+acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca\n\
+gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga\n\
+gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag\n\
+cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat\n\
+gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt\n\
+ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag\n\
+ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac\n\
+agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac\n\
+gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata\n\
+tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag\n\
+tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg\n\
+ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag\n\
+ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat\n\
+ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg\n\
+catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat\n\
+ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg\n\
+tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc\n\
+aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct\n\
+gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga\n\
+agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat\n\
+atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt\n\
+taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag\n\
+tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta\n\
+cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc\n\
+cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt\n\
+tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc\n\
+catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg\n\
+catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat\n\
+ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta\n\
+tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt\n\
+ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc\n\
+ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt\n\
+ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct\n\
+tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt\n\
+ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa\n\
+tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc\n\
+aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta\n\
+gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc\n\
+ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact\n\
+agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc\n\
+taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc\n\
+ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga\n\
+agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa\n\
+gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca\n\
+agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta\n\
+ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact\n\
+ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat\n\
+acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat\n\
+aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta\n\
+ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta\n\
+ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg\n\
+tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc\n\
+gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata\n\
+ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct\n\
+tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata\n\
+aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta\n\
+ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa\n\
+atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta\n\
+acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt\n\
+gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt\n\
+acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg\n\
+ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa\n\
+ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg\n\
+gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt\n\
+agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc\n\
+ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata\n\
+ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt\n\
+gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac\n\
+gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac\n\
+gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt\n\
+cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga\n\
+aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc\n\
+cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac\n\
+gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag\n\
+ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga\n\
+gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt\n\
+atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa\n\
+gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat\n\
+acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat\n\
+aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta\n\
+cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta\n\
+atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt\n\
+tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt\n\
+tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc\n\
+ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg\n\
+tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag\n\
+gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca\n\
+gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca\n\
+aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca\n\
+tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat\n\
+tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc\n\
+attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga\n\
+catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc\n\
+taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc\n\
+ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa\n\
+gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg\n\
+aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga\n\
+aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga\n\
+agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg\n\
+tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt\n\
+aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg\n\
+agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac\n\
+ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc\n\
+taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat\n\
+ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga\n\
+cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc\n\
+tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa\n\
+cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac\n\
+gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc\n\
+cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat\n\
+tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg\n\
+acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa\n\
+ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag\n\
+gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc\n\
+taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag\n\
+tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct\n\
+tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata\n\
+cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat\n\
+tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta\n\
+ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg\n\
+aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa\n\
+agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa\n\
+gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt\n\
+catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct\n\
+tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt\n\
+aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat\n\
+acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc\n\
+tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg\n\
+aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt\n\
+agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat\n\
+gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat\n\
+gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa\n\
+taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga\n\
+gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat\n\
+gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg\n\
+tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa\n\
+agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat\n\
+tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct\n\
+caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat\n\
+aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac\n\
+gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat\n\
+catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta\n\
+ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt\n\
+tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac\n\
+gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg\n\
+cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta\n\
+gagatacctttgcaattttt\n";
+
+dnaInput = dnaInput + dnaInput + dnaInput;
+
+var ilen, clen,
+ seqs = [
+ /agggtaaa|tttaccct/ig,
+ /[cgt]gggtaaa|tttaccc[acg]/ig,
+ /a[act]ggtaaa|tttacc[agt]t/ig,
+ /ag[act]gtaaa|tttac[agt]ct/ig,
+ /agg[act]taaa|ttta[agt]cct/ig,
+ /aggg[acg]aaa|ttt[cgt]ccct/ig,
+ /agggt[cgt]aa|tt[acg]accct/ig,
+ /agggta[cgt]a|t[acg]taccct/ig,
+ /agggtaa[cgt]|[acg]ttaccct/ig],
+ subs = {
+ B: '(c|g|t)', D: '(a|g|t)', H: '(a|c|t)', K: '(g|t)',
+ M: '(a|c)', N: '(a|c|g|t)', R: '(a|g)', S: '(c|t)',
+ V: '(a|c|g)', W: '(a|t)', Y: '(c|t)' }
+
+ilen = dnaInput.length;
+
+// There is no in-place substitution
+dnaInput = dnaInput.replace(/>.*\n|\n/g,"")
+clen = dnaInput.length
+
+var dnaOutputString;
+
+for(i in seqs)
+ dnaOutputString += seqs[i].source + " " + (dnaInput.match(seqs[i]) || []).length + "\n";
+ // match returns null if no matches, so replace with empty
+
+for(k in subs)
+ dnaInput = dnaInput.replace(k, subs[k]) // FIXME: Would like this to be a global substitution in a future version of SunSpider.
+ // search string, replacement string, flags
diff --git a/tests/benchmarks/script/sunspider/tests/string-base64.js b/tests/benchmarks/script/sunspider/tests/string-base64.js
new file mode 100644
index 0000000000..dfc949f70f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-base64.js
@@ -0,0 +1,135 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla XML-RPC Client component.
+ *
+ * The Initial Developer of the Original Code is
+ * Digital Creations 2, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Martijn Pieters <mj@digicool.com> (original author)
+ * Samuel Sieb <samuel@sieb.net>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+// From: http://lxr.mozilla.org/mozilla/source/extensions/xml-rpc/src/nsXmlRpcClient.js#956
+
+/* Convert data (an array of integers) to a Base64 string. */
+var toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+var base64Pad = '=';
+
+function toBase64(data) {
+ var result = '';
+ var length = data.length;
+ var i;
+ // Convert every three bytes to 4 ascii characters.
+ for (i = 0; i < (length - 2); i += 3) {
+ result += toBase64Table[data.charCodeAt(i) >> 2];
+ result += toBase64Table[((data.charCodeAt(i) & 0x03) << 4) + (data.charCodeAt(i+1) >> 4)];
+ result += toBase64Table[((data.charCodeAt(i+1) & 0x0f) << 2) + (data.charCodeAt(i+2) >> 6)];
+ result += toBase64Table[data.charCodeAt(i+2) & 0x3f];
+ }
+
+ // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
+ if (length%3) {
+ i = length - (length%3);
+ result += toBase64Table[data.charCodeAt(i) >> 2];
+ if ((length%3) == 2) {
+ result += toBase64Table[((data.charCodeAt(i) & 0x03) << 4) + (data.charCodeAt(i+1) >> 4)];
+ result += toBase64Table[(data.charCodeAt(i+1) & 0x0f) << 2];
+ result += base64Pad;
+ } else {
+ result += toBase64Table[(data.charCodeAt(i) & 0x03) << 4];
+ result += base64Pad + base64Pad;
+ }
+ }
+
+ return result;
+}
+
+/* Convert Base64 data to a string */
+var toBinaryTable = [
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
+ 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
+ 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
+ -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
+ 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
+];
+
+function base64ToString(data) {
+ var result = '';
+ var leftbits = 0; // number of bits decoded, but yet to be appended
+ var leftdata = 0; // bits decoded, but yet to be appended
+
+ // Convert one by one.
+ for (var i = 0; i < data.length; i++) {
+ var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
+ var padding = (data.charCodeAt(i) == base64Pad.charCodeAt(0));
+ // Skip illegal characters and whitespace
+ if (c == -1) continue;
+
+ // Collect data into leftdata, update bitcount
+ leftdata = (leftdata << 6) | c;
+ leftbits += 6;
+
+ // If we have 8 or more bits, append 8 bits to the result
+ if (leftbits >= 8) {
+ leftbits -= 8;
+ // Append if not padding.
+ if (!padding)
+ result += String.fromCharCode((leftdata >> leftbits) & 0xff);
+ leftdata &= (1 << leftbits) - 1;
+ }
+ }
+
+ // If there are any bits left, the base64 string was corrupted
+ if (leftbits)
+ throw Components.Exception('Corrupted base64 string');
+
+ return result;
+}
+
+var str = "";
+
+for ( var i = 0; i < 8192; i++ )
+ str += String.fromCharCode( (25 * Math.random()) + 97 );
+
+for ( var i = 8192; i <= 16384; i *= 2 ) {
+
+ var base64;
+
+ base64 = toBase64(str);
+ base64ToString(base64);
+
+ // Double the string
+ str += str;
+}
+
+toBinaryTable = null;
diff --git a/tests/benchmarks/script/sunspider/tests/string-fasta.js b/tests/benchmarks/script/sunspider/tests/string-fasta.js
new file mode 100644
index 0000000000..14a81f3922
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-fasta.js
@@ -0,0 +1,85 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org
+//
+// Contributed by Ian Osgood
+
+var last = 42, A = 3877, C = 29573, M = 139968;
+
+function rand(max) {
+ last = (last * A + C) % M;
+ return max * last / M;
+}
+
+var ALU =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
+
+var IUB = {
+ a:0.27, c:0.12, g:0.12, t:0.27,
+ B:0.02, D:0.02, H:0.02, K:0.02,
+ M:0.02, N:0.02, R:0.02, S:0.02,
+ V:0.02, W:0.02, Y:0.02
+}
+
+var HomoSap = {
+ a: 0.3029549426680,
+ c: 0.1979883004921,
+ g: 0.1975473066391,
+ t: 0.3015094502008
+}
+
+function makeCumulative(table) {
+ var last = null;
+ for (var c in table) {
+ if (last) table[c] += table[last];
+ last = c;
+ }
+}
+
+function fastaRepeat(n, seq) {
+ var seqi = 0, lenOut = 60;
+ while (n>0) {
+ if (n<lenOut) lenOut = n;
+ if (seqi + lenOut < seq.length) {
+ ret = seq.substring(seqi, seqi+lenOut);
+ seqi += lenOut;
+ } else {
+ var s = seq.substring(seqi);
+ seqi = lenOut - s.length;
+ ret = s + seq.substring(0, seqi);
+ }
+ n -= lenOut;
+ }
+}
+
+function fastaRandom(n, table) {
+ var line = new Array(60);
+ makeCumulative(table);
+ while (n>0) {
+ if (n<line.length) line = new Array(n);
+ for (var i=0; i<line.length; i++) {
+ var r = rand(1);
+ for (var c in table) {
+ if (r < table[c]) {
+ line[i] = c;
+ break;
+ }
+ }
+ }
+ ret = line.join('');
+ n -= line.length;
+ }
+}
+
+var ret;
+
+var count = 7;
+ret = fastaRepeat(2*count*100000, ALU);
+ret = fastaRandom(3*count*1000, IUB);
+ret = fastaRandom(5*count*1000, HomoSap);
+
diff --git a/tests/benchmarks/script/sunspider/tests/string-tagcloud.js b/tests/benchmarks/script/sunspider/tests/string-tagcloud.js
new file mode 100644
index 0000000000..d3e5a1fb19
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-tagcloud.js
@@ -0,0 +1,265 @@
+
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ Portions from:
+ json.js
+ 2007-10-10
+
+ Public Domain
+*/
+
+// This test parses a JSON string giving tag names and popularity, and
+// generates html markup for a "tagcloud" view.
+
+if (!Object.prototype.toJSONString) {
+
+ Array.prototype.toJSONString = function (w) {
+ var a = [], // The array holding the partial texts.
+ i, // Loop counter.
+ l = this.length,
+ v; // The value to be stringified.
+
+ for (i = 0; i < l; i += 1) {
+ v = this[i];
+ switch (typeof v) {
+ case 'object':
+
+ if (v && typeof v.toJSONString === 'function') {
+ a.push(v.toJSONString(w));
+ } else {
+ a.push('null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(v.toJSONString());
+ break;
+ default:
+ a.push('null');
+ }
+ }
+
+ return '[' + a.join(',') + ']';
+ };
+
+
+ Boolean.prototype.toJSONString = function () {
+ return String(this);
+ };
+
+
+ Date.prototype.toJSONString = function () {
+
+ function f(n) {
+
+ return n < 10 ? '0' + n : n;
+ }
+
+ return '"' + this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z"';
+ };
+
+
+ Number.prototype.toJSONString = function () {
+
+ return isFinite(this) ? String(this) : 'null';
+ };
+
+
+ Object.prototype.toJSONString = function (w) {
+ var a = [], // The array holding the partial texts.
+ k, // The current key.
+ i, // The loop counter.
+ v; // The current value.
+
+ if (w) {
+ for (i = 0; i < w.length; i += 1) {
+ k = w[i];
+ if (typeof k === 'string') {
+ v = this[k];
+ switch (typeof v) {
+ case 'object':
+
+ if (v) {
+ if (typeof v.toJSONString === 'function') {
+ a.push(k.toJSONString() + ':' +
+ v.toJSONString(w));
+ }
+ } else {
+ a.push(k.toJSONString() + ':null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(k.toJSONString() + ':' + v.toJSONString());
+
+ }
+ }
+ }
+ } else {
+
+ for (k in this) {
+ if (typeof k === 'string' &&
+ Object.prototype.hasOwnProperty.apply(this, [k])) {
+ v = this[k];
+ switch (typeof v) {
+ case 'object':
+
+ if (v) {
+ if (typeof v.toJSONString === 'function') {
+ a.push(k.toJSONString() + ':' +
+ v.toJSONString());
+ }
+ } else {
+ a.push(k.toJSONString() + ':null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(k.toJSONString() + ':' + v.toJSONString());
+
+ }
+ }
+ }
+ }
+
+ return '{' + a.join(',') + '}';
+ };
+
+
+ (function (s) {
+
+ var m = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ };
+
+
+ s.parseJSON = function (filter) {
+ var j;
+
+ function walk(k, v) {
+ var i, n;
+ if (v && typeof v === 'object') {
+ for (i in v) {
+ if (Object.prototype.hasOwnProperty.apply(v, [i])) {
+ n = walk(i, v[i]);
+ if (n !== undefined) {
+ v[i] = n;
+ }
+ }
+ }
+ }
+ return filter(k, v);
+ }
+
+ if (/^[\],:{}\s]*$/.test(this.replace(/\\./g, '@').
+ replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').
+ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+ j = eval('(' + this + ')');
+
+ return typeof filter === 'function' ? walk('', j) : j;
+ }
+
+ throw new SyntaxError('parseJSON');
+ };
+
+
+ s.toJSONString = function () {
+
+ if (/["\\\x00-\x1f]/.test(this)) {
+ return '"' + this.replace(/[\x00-\x1f\\"]/g, function (a) {
+ var c = m[a];
+ if (c) {
+ return c;
+ }
+ c = a.charCodeAt();
+ return '\\u00' + Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + this + '"';
+ };
+ })(String.prototype);
+}
+
+var tagInfoJSON = '[\n {\n \"tag\": "titillation",\n \"popularity\": 4294967296\n },\n {\n \"tag\": "foamless",\n \"popularity\": 1257718401\n },\n {\n \"tag\": "snarler",\n \"popularity\": 613166183\n },\n {\n \"tag\": "multangularness",\n \"popularity\": 368304452\n },\n {\n \"tag\": "Fesapo unventurous",\n \"popularity\": 248026512\n },\n {\n \"tag\": "esthesioblast",\n \"popularity\": 179556755\n },\n {\n \"tag\": "echeneidoid",\n \"popularity\": 136641578\n },\n {\n \"tag\": "embryoctony",\n \"popularity\": 107852576\n },\n {\n \"tag\": "undilatory",\n \"popularity\": 87537981\n },\n {\n \"tag\": "predisregard",\n \"popularity\": 72630939\n },\n {\n \"tag\": "allergenic",\n \"popularity\": 61345190\n },\n {\n \"tag\": "uncloudy",\n \"popularity\": 52580571\n },\n {\n \"tag\": "unforeseeably",\n \"popularity\": 45628109\n },\n {\n \"tag\": "sturniform",\n \"popularity\": 40013489\n },\n {\n \"tag\": "anesthetize",\n \"popularity\": 35409226\n },\n {\n \"tag\": "ametabolia",\n \"popularity\": 31583050\n },\n {\n \"tag\": "angiopathy",\n \"popularity\": 28366350\n },\n {\n \"tag\": "sultanaship",\n \"popularity\": 25634218\n },\n {\n \"tag\": "Frenchwise",\n \"popularity\": 23292461\n },\n {\n \"tag\": "cerviconasal",\n \"popularity\": 21268909\n },\n {\n \"tag\": "mercurialness",\n \"popularity\": 19507481\n },\n {\n \"tag\": "glutelin venditate",\n \"popularity\": 17964042\n },\n {\n \"tag\": "acred overblack",\n \"popularity\": 16603454\n },\n {\n \"tag\": "Atik",\n \"popularity\": 15397451\n },\n {\n \"tag\": "puncturer",\n \"popularity\": 14323077\n },\n {\n \"tag\": "pukatea",\n \"popularity\": 13361525\n },\n {\n \"tag\": "suberize",\n \"popularity\": 12497261\n },\n {\n \"tag\": "Godfrey",\n \"popularity\": 11717365\n },\n {\n \"tag\": "tetraptote",\n \"popularity\": 11011011\n },\n {\n \"tag\": "lucidness",\n \"popularity\": 10369074\n },\n {\n \"tag\": "tartness",\n \"popularity\": 9783815\n },\n {\n \"tag\": "axfetch",\n \"popularity\": 9248634\n },\n {\n \"tag\": "preacquittal",\n \"popularity\": 8757877\n },\n {\n \"tag\": "matris",\n \"popularity\": 8306671\n },\n {\n \"tag\": "hyphenate",\n \"popularity\": 7890801\n },\n {\n \"tag\": "semifabulous",\n \"popularity\": 7506606\n },\n {\n \"tag\": "oppressiveness",\n \"popularity\": 7150890\n },\n {\n \"tag\": "Protococcales",\n \"popularity\": 6820856\n },\n {\n \"tag\": "unpreventive",\n \"popularity\": 6514045\n },\n {\n \"tag\": "Cordia",\n \"popularity\": 6228289\n },\n {\n \"tag\": "Wakamba leaflike",\n \"popularity\": 5961668\n },\n {\n \"tag\": "dacryoma",\n \"popularity\": 5712480\n },\n {\n \"tag\": "inguinal",\n \"popularity\": 5479211\n },\n {\n \"tag\": "responseless",\n \"popularity\": 5260507\n },\n {\n \"tag\": "supplementarily",\n \"popularity\": 5055158\n },\n {\n \"tag\": "emu",\n \"popularity\": 4862079\n },\n {\n \"tag\": "countermeet",\n \"popularity\": 4680292\n },\n {\n \"tag\": "purrer",\n \"popularity\": 4508918\n },\n {\n \"tag\": "Corallinaceae",\n \"popularity\": 4347162\n },\n {\n \"tag\": "speculum",\n \"popularity\": 4194304\n },\n {\n \"tag\": "crimpness",\n \"popularity\": 4049690\n },\n {\n \"tag\": "antidetonant",\n \"popularity\": 3912727\n },\n {\n \"tag\": "topeewallah",\n \"popularity\": 3782875\n },\n {\n \"tag\": "fidalgo ballant",\n \"popularity\": 3659640\n },\n {\n \"tag\": "utriculose",\n \"popularity\": 3542572\n },\n {\n \"tag\": "testata",\n \"popularity\": 3431259\n },\n {\n \"tag\": "beltmaking",\n \"popularity\": 3325322\n },\n {\n \"tag\": "necrotype",\n \"popularity\": 3224413\n },\n {\n \"tag\": "ovistic",\n \"popularity\": 3128215\n },\n {\n \"tag\": "swindlership",\n \"popularity\": 3036431\n },\n {\n \"tag\": "augustal",\n \"popularity\": 2948792\n },\n {\n \"tag\": "Titoist",\n \"popularity\": 2865047\n },\n {\n \"tag\": "trisoctahedral",\n \"popularity\": 2784963\n },\n {\n \"tag\": "sequestrator",\n \"popularity\": 2708327\n },\n {\n \"tag\": "sideburns",\n \"popularity\": 2634939\n },\n {\n \"tag\": "paraphrasia",\n \"popularity\": 2564616\n },\n {\n \"tag\": "graminology unbay",\n \"popularity\": 2497185\n },\n {\n \"tag\": "acaridomatium emargination",\n \"popularity\": 2432487\n },\n {\n \"tag\": "roofward",\n \"popularity\": 2370373\n },\n {\n \"tag\": "lauder",\n \"popularity\": 2310705\n },\n {\n \"tag\": "subjunctive",\n \"popularity\": 2253354\n },\n {\n \"tag\": "subelongate",\n \"popularity\": 2198199\n },\n {\n \"tag\": "guacimo",\n \"popularity\": 2145128\n },\n {\n \"tag\": "cockade",\n \"popularity\": 2094033\n },\n {\n \"tag\": "misgauge",\n \"popularity\": 2044818\n },\n {\n \"tag\": "unexpensive",\n \"popularity\": 1997388\n },\n {\n \"tag\": "chebel",\n \"popularity\": 1951657\n },\n {\n \"tag\": "unpursuing",\n \"popularity\": 1907543\n },\n {\n \"tag\": "kilobar",\n \"popularity\": 1864969\n },\n {\n \"tag\": "obsecration",\n \"popularity\": 1823863\n },\n {\n \"tag\": "nacarine",\n \"popularity\": 1784157\n },\n {\n \"tag\": "spirituosity",\n \"popularity\": 1745787\n },\n {\n \"tag\": "movableness deity",\n \"popularity\": 1708692\n },\n {\n \"tag\": "exostracism",\n \"popularity\": 1672816\n },\n {\n \"tag\": "archipterygium",\n \"popularity\": 1638104\n },\n {\n \"tag\": "monostrophic",\n \"popularity\": 1604506\n },\n {\n \"tag\": "gynecide",\n \"popularity\": 1571974\n },\n {\n \"tag\": "gladden",\n \"popularity\": 1540462\n },\n {\n \"tag\": "throughbred",\n \"popularity\": 1509927\n },\n {\n \"tag\": "groper",\n \"popularity\": 1480329\n },\n {\n \"tag\": "Xenosaurus",\n \"popularity\": 1451628\n },\n {\n \"tag\": "photoetcher",\n \"popularity\": 1423788\n },\n {\n \"tag\": "glucosid",\n \"popularity\": 1396775\n },\n {\n \"tag\": "Galtonian",\n \"popularity\": 1370555\n },\n {\n \"tag\": "mesosporic",\n \"popularity\": 1345097\n },\n {\n \"tag\": "theody",\n \"popularity\": 1320370\n },\n {\n \"tag\": "zaffer",\n \"popularity\": 1296348\n },\n {\n \"tag\": "probiology",\n \"popularity\": 1273003\n },\n {\n \"tag\": "rhizomic",\n \"popularity\": 1250308\n },\n {\n \"tag\": "superphosphate",\n \"popularity\": 1228240\n },\n {\n \"tag\": "Hippolytan",\n \"popularity\": 1206776\n },\n {\n \"tag\": "garget",\n \"popularity\": 1185892\n },\n {\n \"tag\": "diploplacula",\n \"popularity\": 1165568\n },\n {\n \"tag\": "orohydrographical",\n \"popularity\": 1145785\n },\n {\n \"tag\": "enhypostatize",\n \"popularity\": 1126521\n },\n {\n \"tag\": "polisman",\n \"popularity\": 1107759\n },\n {\n \"tag\": "acetometer",\n \"popularity\": 1089482\n },\n {\n \"tag\": "unsnatched",\n \"popularity\": 1071672\n },\n {\n \"tag\": "yabber",\n \"popularity\": 1054313\n },\n {\n \"tag\": "demiwolf",\n \"popularity\": 1037390\n },\n {\n \"tag\": "chromascope",\n \"popularity\": 1020888\n },\n {\n \"tag\": "seamanship",\n \"popularity\": 1004794\n },\n {\n \"tag\": "nonfenestrated",\n \"popularity\": 989092\n },\n {\n \"tag\": "hydrophytism",\n \"popularity\": 973771\n },\n {\n \"tag\": "dotter",\n \"popularity\": 958819\n },\n {\n \"tag\": "thermoperiodism",\n \"popularity\": 944222\n },\n {\n \"tag\": "unlawyerlike",\n \"popularity\": 929970\n },\n {\n \"tag\": "enantiomeride citywards",\n \"popularity\": 916052\n },\n {\n \"tag\": "unmetallurgical",\n \"popularity\": 902456\n },\n {\n \"tag\": "prickled",\n \"popularity\": 889174\n },\n {\n \"tag\": "strangerwise manioc",\n \"popularity\": 876195\n },\n {\n \"tag\": "incisorial",\n \"popularity\": 863510\n },\n {\n \"tag\": "irrationalize",\n \"popularity\": 851110\n },\n {\n \"tag\": "nasology",\n \"popularity\": 838987\n },\n {\n \"tag\": "fatuism",\n \"popularity\": 827131\n },\n {\n \"tag\": "Huk",\n \"popularity\": 815535\n },\n {\n \"tag\": "properispomenon",\n \"popularity\": 804192\n },\n {\n \"tag\": "unpummelled",\n \"popularity\": 793094\n },\n {\n \"tag\": "technographically",\n \"popularity\": 782233\n },\n {\n \"tag\": "underfurnish",\n \"popularity\": 771603\n },\n {\n \"tag\": "sinter",\n \"popularity\": 761198\n },\n {\n \"tag\": "lateroanterior",\n \"popularity\": 751010\n },\n {\n \"tag\": "nonpersonification",\n \"popularity\": 741034\n },\n {\n \"tag\": "Sitophilus",\n \"popularity\": 731264\n },\n {\n \"tag\": "unstudded overexerted",\n \"popularity\": 721694\n },\n {\n \"tag\": "tracheation",\n \"popularity\": 712318\n },\n {\n \"tag\": "thirteenth begloze",\n \"popularity\": 703131\n },\n {\n \"tag\": "bespice",\n \"popularity\": 694129\n },\n {\n \"tag\": "doppia",\n \"popularity\": 685305\n },\n {\n \"tag\": "unadorned",\n \"popularity\": 676656\n },\n {\n \"tag\": "dovelet engraff",\n \"popularity\": 668176\n },\n {\n \"tag\": "diphyozooid",\n \"popularity\": 659862\n },\n {\n \"tag\": "mure",\n \"popularity\": 651708\n },\n {\n \"tag\": "Tripitaka",\n \"popularity\": 643710\n },\n {\n \"tag\": "Billjim",\n \"popularity\": 635865\n },\n {\n \"tag\": "pyramidical",\n \"popularity\": 628169\n },\n {\n \"tag\": "circumlocutionist",\n \"popularity\": 620617\n },\n {\n \"tag\": "slapstick",\n \"popularity\": 613207\n },\n {\n \"tag\": "preobedience",\n \"popularity\": 605934\n },\n {\n \"tag\": "unfriarlike",\n \"popularity\": 598795\n },\n {\n \"tag\": "microchromosome",\n \"popularity\": 591786\n },\n {\n \"tag\": "Orphicism",\n \"popularity\": 584905\n },\n {\n \"tag\": "peel",\n \"popularity\": 578149\n },\n {\n \"tag\": "obediential",\n \"popularity\": 571514\n },\n {\n \"tag\": "Peripatidea",\n \"popularity\": 564997\n },\n {\n \"tag\": "undoubtful",\n \"popularity\": 558596\n },\n {\n \"tag\": "lodgeable",\n \"popularity\": 552307\n },\n {\n \"tag\": "pustulated woodchat",\n \"popularity\": 546129\n },\n {\n \"tag\": "antepast",\n \"popularity\": 540057\n },\n {\n \"tag\": "sagittoid matrimoniously",\n \"popularity\": 534091\n },\n {\n \"tag\": "Albizzia",\n \"popularity\": 528228\n },\n {\n \"tag\": "Elateridae unnewness",\n \"popularity\": 522464\n },\n {\n \"tag\": "convertingness",\n \"popularity\": 516798\n },\n {\n \"tag\": "Pelew",\n \"popularity\": 511228\n },\n {\n \"tag\": "recapitulation",\n \"popularity\": 505751\n },\n {\n \"tag\": "shack",\n \"popularity\": 500365\n },\n {\n \"tag\": "unmellowed",\n \"popularity\": 495069\n },\n {\n \"tag\": "pavis capering",\n \"popularity\": 489859\n },\n {\n \"tag\": "fanfare",\n \"popularity\": 484735\n },\n {\n \"tag\": "sole",\n \"popularity\": 479695\n },\n {\n \"tag\": "subarcuate",\n \"popularity\": 474735\n },\n {\n \"tag\": "multivious",\n \"popularity\": 469856\n },\n {\n \"tag\": "squandermania",\n \"popularity\": 465054\n },\n {\n \"tag\": "scintle",\n \"popularity\": 460329\n },\n {\n \"tag\": "hash chirognomic",\n \"popularity\": 455679\n },\n {\n \"tag\": "linseed",\n \"popularity\": 451101\n },\n {\n \"tag\": "redoubtable",\n \"popularity\": 446596\n },\n {\n \"tag\": "poachy reimpact",\n \"popularity\": 442160\n },\n {\n \"tag\": "limestone",\n \"popularity\": 437792\n },\n {\n \"tag\": "serranid",\n \"popularity\": 433492\n },\n {\n \"tag\": "pohna",\n \"popularity\": 429258\n },\n {\n \"tag\": "warwolf",\n \"popularity\": 425088\n },\n {\n \"tag\": "ruthenous",\n \"popularity\": 420981\n },\n {\n \"tag\": "dover",\n \"popularity\": 416935\n },\n {\n \"tag\": "deuteroalbumose",\n \"popularity\": 412950\n },\n {\n \"tag\": "pseudoprophetic",\n \"popularity\": 409025\n },\n {\n \"tag\": "dissoluteness",\n \"popularity\": 405157\n },\n {\n \"tag\": "preinvention",\n \"popularity\": 401347\n },\n {\n \"tag\": "swagbellied",\n \"popularity\": 397592\n },\n {\n \"tag\": "Ophidia",\n \"popularity\": 393892\n },\n {\n \"tag\": "equanimity",\n \"popularity\": 390245\n },\n {\n \"tag\": "troutful",\n \"popularity\": 386651\n },\n {\n \"tag\": "uke",\n \"popularity\": 383108\n },\n {\n \"tag\": "preacquaint",\n \"popularity\": 379616\n },\n {\n \"tag\": "shoq",\n \"popularity\": 376174\n },\n {\n \"tag\": "yox",\n \"popularity\": 372780\n },\n {\n \"tag\": "unelemental",\n \"popularity\": 369434\n },\n {\n \"tag\": "Yavapai",\n \"popularity\": 366134\n },\n {\n \"tag\": "joulean",\n \"popularity\": 362880\n },\n {\n \"tag\": "dracontine",\n \"popularity\": 359672\n },\n {\n \"tag\": "hardmouth",\n \"popularity\": 356507\n },\n {\n \"tag\": "sylvanize",\n \"popularity\": 353386\n },\n {\n \"tag\": "intraparenchymatous meadowbur",\n \"popularity\": 350308\n },\n {\n \"tag\": "uncharily",\n \"popularity\": 347271\n },\n {\n \"tag\": "redtab flexibly",\n \"popularity\": 344275\n },\n {\n \"tag\": "centervelic",\n \"popularity\": 341319\n },\n {\n \"tag\": "unravellable",\n \"popularity\": 338403\n },\n {\n \"tag\": "infortunately",\n \"popularity\": 335526\n },\n {\n \"tag\": "cannel",\n \"popularity\": 332687\n },\n {\n \"tag\": "oxyblepsia",\n \"popularity\": 329885\n },\n {\n \"tag\": "Damon",\n \"popularity\": 327120\n },\n {\n \"tag\": "etherin",\n \"popularity\": 324391\n },\n {\n \"tag\": "luminal",\n \"popularity\": 321697\n },\n {\n \"tag\": "interrogatorily presbyte",\n \"popularity\": 319038\n },\n {\n \"tag\": "hemiclastic",\n \"popularity\": 316414\n },\n {\n \"tag\": "poh flush",\n \"popularity\": 313823\n },\n {\n \"tag\": "Psoroptes",\n \"popularity\": 311265\n },\n {\n \"tag\": "dispirit",\n \"popularity\": 308740\n },\n {\n \"tag\": "nashgab",\n \"popularity\": 306246\n },\n {\n \"tag\": "Aphidiinae",\n \"popularity\": 303784\n },\n {\n \"tag\": "rhapsody nonconstruction",\n \"popularity\": 301353\n },\n {\n \"tag\": "Osmond",\n \"popularity\": 298952\n },\n {\n \"tag\": "Leonis",\n \"popularity\": 296581\n },\n {\n \"tag\": "Lemnian",\n \"popularity\": 294239\n },\n {\n \"tag\": "acetonic gnathonic",\n \"popularity\": 291926\n },\n {\n \"tag\": "surculus",\n \"popularity\": 289641\n },\n {\n \"tag\": "diagonally",\n \"popularity\": 287384\n },\n {\n \"tag\": "counterpenalty",\n \"popularity\": 285154\n },\n {\n \"tag\": "Eugenie",\n \"popularity\": 282952\n },\n {\n \"tag\": "hornbook",\n \"popularity\": 280776\n },\n {\n \"tag\": "miscoin",\n \"popularity\": 278626\n },\n {\n \"tag\": "admi",\n \"popularity\": 276501\n },\n {\n \"tag\": "Tarmac",\n \"popularity\": 274402\n },\n {\n \"tag\": "inexplicable",\n \"popularity\": 272328\n },\n {\n \"tag\": "rascallion",\n \"popularity\": 270278\n },\n {\n \"tag\": "dusterman",\n \"popularity\": 268252\n },\n {\n \"tag\": "osteostomous unhoroscopic",\n \"popularity\": 266250\n },\n {\n \"tag\": "spinibulbar",\n \"popularity\": 264271\n },\n {\n \"tag\": "phototelegraphically",\n \"popularity\": 262315\n },\n {\n \"tag\": "Manihot",\n \"popularity\": 260381\n },\n {\n \"tag\": "neighborhood",\n \"popularity\": 258470\n },\n {\n \"tag\": "Vincetoxicum",\n \"popularity\": 256581\n },\n {\n \"tag\": "khirka",\n \"popularity\": 254713\n },\n {\n \"tag\": "conscriptive",\n \"popularity\": 252866\n },\n {\n \"tag\": "synechthran",\n \"popularity\": 251040\n },\n {\n \"tag\": "Guttiferales",\n \"popularity\": 249235\n },\n {\n \"tag\": "roomful",\n \"popularity\": 247450\n },\n {\n \"tag\": "germinal",\n \"popularity\": 245685\n },\n {\n \"tag\": "untraitorous",\n \"popularity\": 243939\n },\n {\n \"tag\": "nondissenting",\n \"popularity\": 242213\n },\n {\n \"tag\": "amotion",\n \"popularity\": 240506\n },\n {\n \"tag\": "badious",\n \"popularity\": 238817\n },\n {\n \"tag\": "sumpit",\n \"popularity\": 237147\n },\n {\n \"tag\": "ectozoic",\n \"popularity\": 235496\n },\n {\n \"tag\": "elvet",\n \"popularity\": 233862\n },\n {\n \"tag\": "underclerk",\n \"popularity\": 232246\n },\n {\n \"tag\": "reticency",\n \"popularity\": 230647\n },\n {\n \"tag\": "neutroclusion",\n \"popularity\": 229065\n },\n {\n \"tag\": "unbelieving",\n \"popularity\": 227500\n },\n {\n \"tag\": "histogenetic",\n \"popularity\": 225952\n },\n {\n \"tag\": "dermamyiasis",\n \"popularity\": 224421\n },\n {\n \"tag\": "telenergy",\n \"popularity\": 222905\n },\n {\n \"tag\": "axiomatic",\n \"popularity\": 221406\n },\n {\n \"tag\": "undominoed",\n \"popularity\": 219922\n },\n {\n \"tag\": "periosteoma",\n \"popularity\": 218454\n },\n {\n \"tag\": "justiciaryship",\n \"popularity\": 217001\n },\n {\n \"tag\": "autoluminescence",\n \"popularity\": 215563\n },\n {\n \"tag\": "osmous",\n \"popularity\": 214140\n },\n {\n \"tag\": "borgh",\n \"popularity\": 212731\n },\n {\n \"tag\": "bedebt",\n \"popularity\": 211337\n },\n {\n \"tag\": "considerableness adenoidism",\n \"popularity\": 209957\n },\n {\n \"tag\": "sailorizing",\n \"popularity\": 208592\n },\n {\n \"tag\": "Montauk",\n \"popularity\": 207240\n },\n {\n \"tag\": "Bridget",\n \"popularity\": 205901\n },\n {\n \"tag\": "Gekkota",\n \"popularity\": 204577\n },\n {\n \"tag\": "subcorymbose",\n \"popularity\": 203265\n },\n {\n \"tag\": "undersap",\n \"popularity\": 201967\n },\n {\n \"tag\": "poikilothermic",\n \"popularity\": 200681\n },\n {\n \"tag\": "enneatical",\n \"popularity\": 199409\n },\n {\n \"tag\": "martinetism",\n \"popularity\": 198148\n },\n {\n \"tag\": "sustanedly",\n \"popularity\": 196901\n },\n {\n \"tag\": "declaration",\n \"popularity\": 195665\n },\n {\n \"tag\": "myringoplasty",\n \"popularity\": 194442\n },\n {\n \"tag\": "Ginkgo",\n \"popularity\": 193230\n },\n {\n \"tag\": "unrecurrent",\n \"popularity\": 192031\n },\n {\n \"tag\": "proprecedent",\n \"popularity\": 190843\n },\n {\n \"tag\": "roadman",\n \"popularity\": 189666\n },\n {\n \"tag\": "elemin",\n \"popularity\": 188501\n },\n {\n \"tag\": "maggot",\n \"popularity\": 187347\n },\n {\n \"tag\": "alitrunk",\n \"popularity\": 186204\n },\n {\n \"tag\": "introspection",\n \"popularity\": 185071\n },\n {\n \"tag\": "batiker",\n \"popularity\": 183950\n },\n {\n \"tag\": "backhatch oversettle",\n \"popularity\": 182839\n },\n {\n \"tag\": "thresherman",\n \"popularity\": 181738\n },\n {\n \"tag\": "protemperance",\n \"popularity\": 180648\n },\n {\n \"tag\": "undern",\n \"popularity\": 179568\n },\n {\n \"tag\": "tweeg",\n \"popularity\": 178498\n },\n {\n \"tag\": "crosspath",\n \"popularity\": 177438\n },\n {\n \"tag\": "Tangaridae",\n \"popularity\": 176388\n },\n {\n \"tag\": "scrutation",\n \"popularity\": 175348\n },\n {\n \"tag\": "piecemaker",\n \"popularity\": 174317\n },\n {\n \"tag\": "paster",\n \"popularity\": 173296\n },\n {\n \"tag\": "unpretendingness",\n \"popularity\": 172284\n },\n {\n \"tag\": "inframundane",\n \"popularity\": 171281\n },\n {\n \"tag\": "kiblah",\n \"popularity\": 170287\n },\n {\n \"tag\": "playwrighting",\n \"popularity\": 169302\n },\n {\n \"tag\": "gonepoiesis snowslip",\n \"popularity\": 168326\n },\n {\n \"tag\": "hoodwise",\n \"popularity\": 167359\n },\n {\n \"tag\": "postseason",\n \"popularity\": 166401\n },\n {\n \"tag\": "equivocality",\n \"popularity\": 165451\n },\n {\n \"tag\": "Opiliaceae nuclease",\n \"popularity\": 164509\n },\n {\n \"tag\": "sextipara",\n \"popularity\": 163576\n },\n {\n \"tag\": "weeper",\n \"popularity\": 162651\n },\n {\n \"tag\": "frambesia",\n \"popularity\": 161735\n },\n {\n \"tag\": "answerable",\n \"popularity\": 160826\n },\n {\n \"tag\": "Trichosporum",\n \"popularity\": 159925\n },\n {\n \"tag\": "cajuputol",\n \"popularity\": 159033\n },\n {\n \"tag\": "pleomorphous",\n \"popularity\": 158148\n },\n {\n \"tag\": "aculeolate",\n \"popularity\": 157270\n },\n {\n \"tag\": "wherever",\n \"popularity\": 156400\n },\n {\n \"tag\": "collapse",\n \"popularity\": 155538\n },\n {\n \"tag\": "porky",\n \"popularity\": 154683\n },\n {\n \"tag\": "perule",\n \"popularity\": 153836\n },\n {\n \"tag\": "Nevada",\n \"popularity\": 152996\n },\n {\n \"tag\": "conalbumin",\n \"popularity\": 152162\n },\n {\n \"tag\": "tsunami",\n \"popularity\": 151336\n },\n {\n \"tag\": "Gulf",\n \"popularity\": 150517\n },\n {\n \"tag\": "hertz",\n \"popularity\": 149705\n },\n {\n \"tag\": "limmock",\n \"popularity\": 148900\n },\n {\n \"tag\": "Tartarize",\n \"popularity\": 148101\n },\n {\n \"tag\": "entosphenoid",\n \"popularity\": 147310\n },\n {\n \"tag\": "ibis",\n \"popularity\": 146524\n },\n {\n \"tag\": "unyeaned",\n \"popularity\": 145746\n },\n {\n \"tag\": "tritural",\n \"popularity\": 144973\n },\n {\n \"tag\": "hundredary",\n \"popularity\": 144207\n },\n {\n \"tag\": "stolonlike",\n \"popularity\": 143448\n },\n {\n \"tag\": "chorister",\n \"popularity\": 142694\n },\n {\n \"tag\": "mismove",\n \"popularity\": 141947\n },\n {\n \"tag\": "Andine",\n \"popularity\": 141206\n },\n {\n \"tag\": "Annette proneur escribe",\n \"popularity\": 140471\n },\n {\n \"tag\": "exoperidium",\n \"popularity\": 139742\n },\n {\n \"tag\": "disedge",\n \"popularity\": 139019\n },\n {\n \"tag\": "hypochloruria",\n \"popularity\": 138302\n },\n {\n \"tag\": "prepupa",\n \"popularity\": 137590\n },\n {\n \"tag\": "assent",\n \"popularity\": 136884\n },\n {\n \"tag\": "hydrazobenzene",\n \"popularity\": 136184\n },\n {\n \"tag\": "emballonurid",\n \"popularity\": 135489\n },\n {\n \"tag\": "roselle",\n \"popularity\": 134800\n },\n {\n \"tag\": "unifiedly",\n \"popularity\": 134117\n },\n {\n \"tag\": "clang",\n \"popularity\": 133439\n },\n {\n \"tag\": "acetolytic",\n \"popularity\": 132766\n },\n {\n \"tag\": "cladodont",\n \"popularity\": 132098\n },\n {\n \"tag\": "recoast",\n \"popularity\": 131436\n },\n {\n \"tag\": "celebrated tydie Eocarboniferous",\n \"popularity\": 130779\n },\n {\n \"tag\": "superconsciousness",\n \"popularity\": 130127\n },\n {\n \"tag\": "soberness",\n \"popularity\": 129480\n },\n {\n \"tag\": "panoramist",\n \"popularity\": 128838\n },\n {\n \"tag\": "Orbitolina",\n \"popularity\": 128201\n },\n {\n \"tag\": "overlewd",\n \"popularity\": 127569\n },\n {\n \"tag\": "demiquaver",\n \"popularity\": 126942\n },\n {\n \"tag\": "kamelaukion",\n \"popularity\": 126319\n },\n {\n \"tag\": "flancard",\n \"popularity\": 125702\n },\n {\n \"tag\": "tricuspid",\n \"popularity\": 125089\n },\n {\n \"tag\": "bepelt",\n \"popularity\": 124480\n },\n {\n \"tag\": "decuplet",\n \"popularity\": 123877\n },\n {\n \"tag\": "Rockies",\n \"popularity\": 123278\n },\n {\n \"tag\": "unforgeability",\n \"popularity\": 122683\n },\n {\n \"tag\": "mocha",\n \"popularity\": 122093\n },\n {\n \"tag\": "scrunge",\n \"popularity\": 121507\n },\n {\n \"tag\": "delighter",\n \"popularity\": 120926\n },\n {\n \"tag\": "willey Microtinae",\n \"popularity\": 120349\n },\n {\n \"tag\": "unhuntable",\n \"popularity\": 119777\n },\n {\n \"tag\": "historically",\n \"popularity\": 119208\n },\n {\n \"tag\": "vicegerentship",\n \"popularity\": 118644\n },\n {\n \"tag\": "hemangiosarcoma",\n \"popularity\": 118084\n },\n {\n \"tag\": "harpago",\n \"popularity\": 117528\n },\n {\n \"tag\": "unionoid",\n \"popularity\": 116976\n },\n {\n \"tag\": "wiseman",\n \"popularity\": 116429\n },\n {\n \"tag\": "diclinism",\n \"popularity\": 115885\n },\n {\n \"tag\": "Maud",\n \"popularity\": 115345\n },\n {\n \"tag\": "scaphocephalism",\n \"popularity\": 114809\n },\n {\n \"tag\": "obtenebration",\n \"popularity\": 114277\n },\n {\n \"tag\": "cymar predreadnought",\n \"popularity\": 113749\n },\n {\n \"tag\": "discommend",\n \"popularity\": 113225\n },\n {\n \"tag\": "crude",\n \"popularity\": 112704\n },\n {\n \"tag\": "upflash",\n \"popularity\": 112187\n },\n {\n \"tag\": "saltimbank",\n \"popularity\": 111674\n },\n {\n \"tag\": "posthysterical",\n \"popularity\": 111165\n },\n {\n \"tag\": "trample",\n \"popularity\": 110659\n },\n {\n \"tag\": "ungirthed",\n \"popularity\": 110157\n },\n {\n \"tag\": "unshakable",\n \"popularity\": 109658\n },\n {\n \"tag\": "hepatocystic",\n \"popularity\": 109163\n },\n {\n \"tag\": "psammophyte",\n \"popularity\": 108671\n },\n {\n \"tag\": "millionfold",\n \"popularity\": 108183\n },\n {\n \"tag\": "outtaste",\n \"popularity\": 107698\n },\n {\n \"tag\": "poppycockish",\n \"popularity\": 107217\n },\n {\n \"tag\": "viduine",\n \"popularity\": 106739\n },\n {\n \"tag\": "pleasureman",\n \"popularity\": 106264\n },\n {\n \"tag\": "cholesterolemia",\n \"popularity\": 105792\n },\n {\n \"tag\": "hostlerwife",\n \"popularity\": 105324\n },\n {\n \"tag\": "figure undergrass",\n \"popularity\": 104859\n },\n {\n \"tag\": "bedrape",\n \"popularity\": 104398\n },\n {\n \"tag\": "nuttishness",\n \"popularity\": 103939\n },\n {\n \"tag\": "fow",\n \"popularity\": 103484\n },\n {\n \"tag\": "rachianesthesia",\n \"popularity\": 103031\n },\n {\n \"tag\": "recruitable",\n \"popularity\": 102582\n },\n {\n \"tag\": "semianatomical Oenotheraceae",\n \"popularity\": 102136\n },\n {\n \"tag\": "extracapsular",\n \"popularity\": 101693\n },\n {\n \"tag\": "unsigneted",\n \"popularity\": 101253\n },\n {\n \"tag\": "fissural",\n \"popularity\": 100816\n },\n {\n \"tag\": "ayous",\n \"popularity\": 100381\n },\n {\n \"tag\": "crestfallenness odontograph",\n \"popularity\": 99950\n },\n {\n \"tag\": "monopodium",\n \"popularity\": 99522\n },\n {\n \"tag\": "germfree",\n \"popularity\": 99096\n },\n {\n \"tag\": "dauphin",\n \"popularity\": 98673\n },\n {\n \"tag\": "nonagesimal",\n \"popularity\": 98254\n },\n {\n \"tag\": "waterchat",\n \"popularity\": 97836\n },\n {\n \"tag\": "Entelodon",\n \"popularity\": 97422\n },\n {\n \"tag\": "semischolastic",\n \"popularity\": 97010\n },\n {\n \"tag\": "somata",\n \"popularity\": 96602\n },\n {\n \"tag\": "expositorily",\n \"popularity\": 96195\n },\n {\n \"tag\": "bass",\n \"popularity\": 95792\n },\n {\n \"tag\": "calorimetry",\n \"popularity\": 95391\n },\n {\n \"tag\": "entireness",\n \"popularity\": 94993\n },\n {\n \"tag\": "ratline soppiness",\n \"popularity\": 94597\n },\n {\n \"tag\": "shor",\n \"popularity\": 94204\n },\n {\n \"tag\": "coprecipitation",\n \"popularity\": 93813\n },\n {\n \"tag\": "unblushingly",\n \"popularity\": 93425\n },\n {\n \"tag\": "macarize",\n \"popularity\": 93040\n },\n {\n \"tag\": "scruplesomeness",\n \"popularity\": 92657\n },\n {\n \"tag\": "offsaddle",\n \"popularity\": 92276\n },\n {\n \"tag\": "hypertragical",\n \"popularity\": 91898\n },\n {\n \"tag\": "uncassock loined",\n \"popularity\": 91522\n },\n {\n \"tag\": "interlobate",\n \"popularity\": 91149\n },\n {\n \"tag\": "releasor orrisroot stoloniferously",\n \"popularity\": 90778\n },\n {\n \"tag\": "elementoid",\n \"popularity\": 90410\n },\n {\n \"tag\": "Lentilla",\n \"popularity\": 90043\n },\n {\n \"tag\": "distressing",\n \"popularity\": 89679\n },\n {\n \"tag\": "hydrodrome",\n \"popularity\": 89318\n },\n {\n \"tag\": "Jeannette",\n \"popularity\": 88958\n },\n {\n \"tag\": "Kuli",\n \"popularity\": 88601\n },\n {\n \"tag\": "taxinomist",\n \"popularity\": 88246\n },\n {\n \"tag\": "southwestwardly",\n \"popularity\": 87894\n },\n {\n \"tag\": "polyparia",\n \"popularity\": 87543\n },\n {\n \"tag\": "exmeridian",\n \"popularity\": 87195\n },\n {\n \"tag\": "splenius regimentaled",\n \"popularity\": 86849\n },\n {\n \"tag\": "Sphaeropsidaceae",\n \"popularity\": 86505\n },\n {\n \"tag\": "unbegun",\n \"popularity\": 86163\n },\n {\n \"tag\": "something",\n \"popularity\": 85823\n },\n {\n \"tag\": "contaminable nonexpulsion",\n \"popularity\": 85486\n },\n {\n \"tag\": "douser",\n \"popularity\": 85150\n },\n {\n \"tag\": "prostrike",\n \"popularity\": 84817\n },\n {\n \"tag\": "worky",\n \"popularity\": 84485\n },\n {\n \"tag\": "folliful",\n \"popularity\": 84156\n },\n {\n \"tag\": "prioracy",\n \"popularity\": 83828\n },\n {\n \"tag\": "undermentioned",\n \"popularity\": 83503\n },\n {\n \"tag\": "Judaica",\n \"popularity\": 83179\n },\n {\n \"tag\": "multifarious",\n \"popularity\": 82858\n },\n {\n \"tag\": "poogye",\n \"popularity\": 82538\n },\n {\n \"tag\": "Sparganium",\n \"popularity\": 82221\n },\n {\n \"tag\": "thurrock",\n \"popularity\": 81905\n },\n {\n \"tag\": "outblush",\n \"popularity\": 81591\n },\n {\n \"tag\": "Strophanthus supraordination",\n \"popularity\": 81279\n },\n {\n \"tag\": "gingerroot",\n \"popularity\": 80969\n },\n {\n \"tag\": "unconscient",\n \"popularity\": 80661\n },\n {\n \"tag\": "unconstitutionally",\n \"popularity\": 80354\n },\n {\n \"tag\": "plaguily",\n \"popularity\": 80050\n },\n {\n \"tag\": "waterily equatorwards",\n \"popularity\": 79747\n },\n {\n \"tag\": "nondeposition",\n \"popularity\": 79446\n },\n {\n \"tag\": "dronishly",\n \"popularity\": 79147\n },\n {\n \"tag\": "gateado",\n \"popularity\": 78849\n },\n {\n \"tag\": "dislink",\n \"popularity\": 78553\n },\n {\n \"tag\": "Joceline",\n \"popularity\": 78259\n },\n {\n \"tag\": "amphiboliferous",\n \"popularity\": 77967\n },\n {\n \"tag\": "bushrope",\n \"popularity\": 77676\n },\n {\n \"tag\": "plumicorn sulphosalicylic",\n \"popularity\": 77387\n },\n {\n \"tag\": "nonefficiency",\n \"popularity\": 77100\n },\n {\n \"tag\": "hieroscopy",\n \"popularity\": 76815\n },\n {\n \"tag\": "causativeness",\n \"popularity\": 76531\n },\n {\n \"tag\": "swird paleoeremology",\n \"popularity\": 76249\n },\n {\n \"tag\": "camphoric",\n \"popularity\": 75968\n },\n {\n \"tag\": "retaining",\n \"popularity\": 75689\n },\n {\n \"tag\": "thyreoprotein",\n \"popularity\": 75411\n },\n {\n \"tag\": "carbona",\n \"popularity\": 75136\n },\n {\n \"tag\": "protectively",\n \"popularity\": 74861\n },\n {\n \"tag\": "mosasaur",\n \"popularity\": 74589\n },\n {\n \"tag\": "reciprocator",\n \"popularity\": 74317\n },\n {\n \"tag\": "detentive",\n \"popularity\": 74048\n },\n {\n \"tag\": "supravital",\n \"popularity\": 73780\n },\n {\n \"tag\": "Vespertilionidae",\n \"popularity\": 73513\n },\n {\n \"tag\": "parka",\n \"popularity\": 73248\n },\n {\n \"tag\": "pickaway",\n \"popularity\": 72984\n },\n {\n \"tag\": "oleaceous",\n \"popularity\": 72722\n },\n {\n \"tag\": "anticogitative",\n \"popularity\": 72462\n },\n {\n \"tag\": "woe",\n \"popularity\": 72203\n },\n {\n \"tag\": "skeuomorph",\n \"popularity\": 71945\n },\n {\n \"tag\": "helpmeet",\n \"popularity\": 71689\n },\n {\n \"tag\": "Hexactinellida brickmaking",\n \"popularity\": 71434\n },\n {\n \"tag\": "resink",\n \"popularity\": 71180\n },\n {\n \"tag\": "diluter",\n \"popularity\": 70928\n },\n {\n \"tag\": "micromicron",\n \"popularity\": 70677\n },\n {\n \"tag\": "parentage",\n \"popularity\": 70428\n },\n {\n \"tag\": "galactorrhoea",\n \"popularity\": 70180\n },\n {\n \"tag\": "gey",\n \"popularity\": 69934\n },\n {\n \"tag\": "gesticulatory",\n \"popularity\": 69689\n },\n {\n \"tag\": "wergil",\n \"popularity\": 69445\n },\n {\n \"tag\": "Lecanora",\n \"popularity\": 69202\n },\n {\n \"tag\": "malanders karst",\n \"popularity\": 68961\n },\n {\n \"tag\": "vibetoite",\n \"popularity\": 68721\n },\n {\n \"tag\": "unrequitedness",\n \"popularity\": 68483\n },\n {\n \"tag\": "outwash",\n \"popularity\": 68245\n },\n {\n \"tag\": "unsacred",\n \"popularity\": 68009\n },\n {\n \"tag\": "unabetted dividend",\n \"popularity\": 67775\n },\n {\n \"tag\": "untraveling",\n \"popularity\": 67541\n },\n {\n \"tag\": "thermobattery",\n \"popularity\": 67309\n },\n {\n \"tag\": "polypragmist",\n \"popularity\": 67078\n },\n {\n \"tag\": "irrefutableness",\n \"popularity\": 66848\n },\n {\n \"tag\": "remiges",\n \"popularity\": 66620\n },\n {\n \"tag\": "implode",\n \"popularity\": 66393\n },\n {\n \"tag\": "superfluousness",\n \"popularity\": 66166\n },\n {\n \"tag\": "croakily unalleviated",\n \"popularity\": 65942\n },\n {\n \"tag\": "edicule",\n \"popularity\": 65718\n },\n {\n \"tag\": "entophytous",\n \"popularity\": 65495\n },\n {\n \"tag\": "benefactorship Toryish",\n \"popularity\": 65274\n },\n {\n \"tag\": "pseudoamateurish",\n \"popularity\": 65054\n },\n {\n \"tag\": "flueless Iguanodontoidea snipnose",\n \"popularity\": 64835\n },\n {\n \"tag\": "zealotical Zamicrus interpole",\n \"popularity\": 64617\n },\n {\n \"tag\": "whereabout",\n \"popularity\": 64401\n },\n {\n \"tag\": "benzazide",\n \"popularity\": 64185\n },\n {\n \"tag\": "pokeweed",\n \"popularity\": 63971\n },\n {\n \"tag\": "calamitoid",\n \"popularity\": 63757\n },\n {\n \"tag\": "sporozoal",\n \"popularity\": 63545\n },\n {\n \"tag\": "physcioid Welshwoman",\n \"popularity\": 63334\n },\n {\n \"tag\": "wanting",\n \"popularity\": 63124\n },\n {\n \"tag\": "unencumbering",\n \"popularity\": 62915\n },\n {\n \"tag\": "Tupi",\n \"popularity\": 62707\n },\n {\n \"tag\": "potbank",\n \"popularity\": 62501\n },\n {\n \"tag\": "bulked",\n \"popularity\": 62295\n },\n {\n \"tag\": "uparise",\n \"popularity\": 62090\n },\n {\n \"tag\": "Sudra",\n \"popularity\": 61887\n },\n {\n \"tag\": "hyperscrupulosity",\n \"popularity\": 61684\n },\n {\n \"tag\": "subterraneously unmaid",\n \"popularity\": 61483\n },\n {\n \"tag\": "poisonousness",\n \"popularity\": 61282\n },\n {\n \"tag\": "phare",\n \"popularity\": 61083\n },\n {\n \"tag\": "dicynodont",\n \"popularity\": 60884\n },\n {\n \"tag\": "chewer",\n \"popularity\": 60687\n },\n {\n \"tag\": "uliginous",\n \"popularity\": 60490\n },\n {\n \"tag\": "tinman",\n \"popularity\": 60295\n },\n {\n \"tag\": "coconut",\n \"popularity\": 60100\n },\n {\n \"tag\": "phryganeoid",\n \"popularity\": 59907\n },\n {\n \"tag\": "bismillah",\n \"popularity\": 59714\n },\n {\n \"tag\": "tautomeric",\n \"popularity\": 59523\n },\n {\n \"tag\": "jerquer",\n \"popularity\": 59332\n },\n {\n \"tag\": "Dryopithecinae",\n \"popularity\": 59143\n },\n {\n \"tag\": "ghizite",\n \"popularity\": 58954\n },\n {\n \"tag\": "unliveable",\n \"popularity\": 58766\n },\n {\n \"tag\": "craftsmaster",\n \"popularity\": 58579\n },\n {\n \"tag\": "semiscenic",\n \"popularity\": 58394\n },\n {\n \"tag\": "danaid",\n \"popularity\": 58209\n },\n {\n \"tag\": "flawful",\n \"popularity\": 58025\n },\n {\n \"tag\": "risibleness",\n \"popularity\": 57841\n },\n {\n \"tag\": "Muscovite",\n \"popularity\": 57659\n },\n {\n \"tag\": "snaringly",\n \"popularity\": 57478\n },\n {\n \"tag\": "brilliantwise",\n \"popularity\": 57297\n },\n {\n \"tag\": "plebeity",\n \"popularity\": 57118\n },\n {\n \"tag\": "historicalness",\n \"popularity\": 56939\n },\n {\n \"tag\": "piecemeal",\n \"popularity\": 56761\n },\n {\n \"tag\": "maxillipedary",\n \"popularity\": 56584\n },\n {\n \"tag\": "Hypenantron",\n \"popularity\": 56408\n },\n {\n \"tag\": "quaintness avigate",\n \"popularity\": 56233\n },\n {\n \"tag\": "ave",\n \"popularity\": 56059\n },\n {\n \"tag\": "mediaevally",\n \"popularity\": 55885\n },\n {\n \"tag\": "brucite",\n \"popularity\": 55712\n },\n {\n \"tag\": "Schwendenerian",\n \"popularity\": 55541\n },\n {\n \"tag\": "julole",\n \"popularity\": 55370\n },\n {\n \"tag\": "palaeolith",\n \"popularity\": 55199\n },\n {\n \"tag\": "cotyledonary",\n \"popularity\": 55030\n },\n {\n \"tag\": "rond",\n \"popularity\": 54861\n },\n {\n \"tag\": "boomster tassoo",\n \"popularity\": 54694\n },\n {\n \"tag\": "cattishly",\n \"popularity\": 54527\n },\n {\n \"tag\": "tonguefence",\n \"popularity\": 54360\n },\n {\n \"tag\": "hexastylar triskele",\n \"popularity\": 54195\n },\n {\n \"tag\": "ariot",\n \"popularity\": 54030\n },\n {\n \"tag\": "intarsist",\n \"popularity\": 53867\n },\n {\n \"tag\": "Oscines",\n \"popularity\": 53704\n },\n {\n \"tag\": "Spaniolize",\n \"popularity\": 53541\n },\n {\n \"tag\": "smellfungus",\n \"popularity\": 53380\n },\n {\n \"tag\": "redisplay",\n \"popularity\": 53219\n },\n {\n \"tag\": "phosphene",\n \"popularity\": 53059\n },\n {\n \"tag\": "phycomycete",\n \"popularity\": 52900\n },\n {\n \"tag\": "prophetic",\n \"popularity\": 52741\n },\n {\n \"tag\": "overtrustful",\n \"popularity\": 52584\n },\n {\n \"tag\": "pinitol",\n \"popularity\": 52427\n },\n {\n \"tag\": "asthmatic",\n \"popularity\": 52270\n },\n {\n \"tag\": "convulsive",\n \"popularity\": 52115\n },\n {\n \"tag\": "draughtswoman",\n \"popularity\": 51960\n },\n {\n \"tag\": "unetymologizable",\n \"popularity\": 51806\n },\n {\n \"tag\": "centrarchoid",\n \"popularity\": 51652\n },\n {\n \"tag\": "mesioincisal",\n \"popularity\": 51500\n },\n {\n \"tag\": "transbaikal",\n \"popularity\": 51348\n },\n {\n \"tag\": "silveriness",\n \"popularity\": 51196\n },\n {\n \"tag\": "costotomy",\n \"popularity\": 51046\n },\n {\n \"tag\": "caracore",\n \"popularity\": 50896\n },\n {\n \"tag\": "depotentiation",\n \"popularity\": 50747\n },\n {\n \"tag\": "glossoepiglottidean",\n \"popularity\": 50598\n },\n {\n \"tag\": "upswell",\n \"popularity\": 50450\n },\n {\n \"tag\": "flecnodal",\n \"popularity\": 50303\n },\n {\n \"tag\": "coventrate",\n \"popularity\": 50157\n },\n {\n \"tag\": "duchesse",\n \"popularity\": 50011\n },\n {\n \"tag\": "excisemanship trophied",\n \"popularity\": 49866\n },\n {\n \"tag\": "cytinaceous",\n \"popularity\": 49721\n },\n {\n \"tag\": "assuringly",\n \"popularity\": 49577\n },\n {\n \"tag\": "unconducted upliftitis",\n \"popularity\": 49434\n },\n {\n \"tag\": "rachicentesis",\n \"popularity\": 49292\n },\n {\n \"tag\": "antiangular",\n \"popularity\": 49150\n },\n {\n \"tag\": "advisal",\n \"popularity\": 49008\n },\n {\n \"tag\": "birdcatcher",\n \"popularity\": 48868\n },\n {\n \"tag\": "secularistic",\n \"popularity\": 48728\n },\n {\n \"tag\": "grandeeism superinformal",\n \"popularity\": 48588\n },\n {\n \"tag\": "unapprehension",\n \"popularity\": 48449\n },\n {\n \"tag\": "excipulum",\n \"popularity\": 48311\n },\n {\n \"tag\": "decimole",\n \"popularity\": 48174\n },\n {\n \"tag\": "semidrachm",\n \"popularity\": 48037\n },\n {\n \"tag\": "uvulotome",\n \"popularity\": 47901\n },\n {\n \"tag\": "Lemaneaceae",\n \"popularity\": 47765\n },\n {\n \"tag\": "corrade",\n \"popularity\": 47630\n },\n {\n \"tag\": "Kuroshio",\n \"popularity\": 47495\n },\n {\n \"tag\": "Araliophyllum",\n \"popularity\": 47361\n },\n {\n \"tag\": "victoriousness cardiosphygmograph",\n \"popularity\": 47228\n },\n {\n \"tag\": "reinvent",\n \"popularity\": 47095\n },\n {\n \"tag\": "Macrotolagus",\n \"popularity\": 46963\n },\n {\n \"tag\": "strenuousness",\n \"popularity\": 46831\n },\n {\n \"tag\": "deviability",\n \"popularity\": 46700\n },\n {\n \"tag\": "phyllospondylous",\n \"popularity\": 46570\n },\n {\n \"tag\": "bisect rudderhole",\n \"popularity\": 46440\n },\n {\n \"tag\": "crownwork",\n \"popularity\": 46311\n },\n {\n \"tag\": "Ascalabota",\n \"popularity\": 46182\n },\n {\n \"tag\": "prostatomyomectomy",\n \"popularity\": 46054\n },\n {\n \"tag\": "neurosyphilis",\n \"popularity\": 45926\n },\n {\n \"tag\": "tabloid scraplet",\n \"popularity\": 45799\n },\n {\n \"tag\": "nonmedullated servility",\n \"popularity\": 45673\n },\n {\n \"tag\": "melopoeic practicalization",\n \"popularity\": 45547\n },\n {\n \"tag\": "nonrhythmic",\n \"popularity\": 45421\n },\n {\n \"tag\": "deplorer",\n \"popularity\": 45296\n },\n {\n \"tag\": "Ophion",\n \"popularity\": 45172\n },\n {\n \"tag\": "subprioress",\n \"popularity\": 45048\n },\n {\n \"tag\": "semiregular",\n \"popularity\": 44925\n },\n {\n \"tag\": "praelection",\n \"popularity\": 44802\n },\n {\n \"tag\": "discinct",\n \"popularity\": 44680\n },\n {\n \"tag\": "preplace",\n \"popularity\": 44558\n },\n {\n \"tag\": "paternoster",\n \"popularity\": 44437\n },\n {\n \"tag\": "suboccipital",\n \"popularity\": 44316\n },\n {\n \"tag\": "Teutophil",\n \"popularity\": 44196\n },\n {\n \"tag\": "tracheole",\n \"popularity\": 44076\n },\n {\n \"tag\": "subsmile",\n \"popularity\": 43957\n },\n {\n \"tag\": "nonapostatizing",\n \"popularity\": 43839\n },\n {\n \"tag\": "cleidotomy",\n \"popularity\": 43720\n },\n {\n \"tag\": "hingle",\n \"popularity\": 43603\n },\n {\n \"tag\": "jocoque",\n \"popularity\": 43486\n },\n {\n \"tag\": "trundler notidanian",\n \"popularity\": 43369\n },\n {\n \"tag\": "strangling misdaub",\n \"popularity\": 43253\n },\n {\n \"tag\": "noncancellable",\n \"popularity\": 43137\n },\n {\n \"tag\": "lavabo",\n \"popularity\": 43022\n },\n {\n \"tag\": "lanterloo",\n \"popularity\": 42907\n },\n {\n \"tag\": "uncitizenly",\n \"popularity\": 42793\n },\n {\n \"tag\": "autoturning",\n \"popularity\": 42679\n },\n {\n \"tag\": "Haganah",\n \"popularity\": 42566\n },\n {\n \"tag\": "Glecoma",\n \"popularity\": 42453\n },\n {\n \"tag\": "membered",\n \"popularity\": 42341\n },\n {\n \"tag\": "consuetudinal",\n \"popularity\": 42229\n },\n {\n \"tag\": "gatehouse",\n \"popularity\": 42117\n },\n {\n \"tag\": "tetherball",\n \"popularity\": 42006\n },\n {\n \"tag\": "counterrevolutionist numismatical",\n \"popularity\": 41896\n },\n {\n \"tag\": "pagehood plateiasmus",\n \"popularity\": 41786\n },\n {\n \"tag\": "pelterer",\n \"popularity\": 41676\n },\n {\n \"tag\": "splenemphraxis",\n \"popularity\": 41567\n },\n {\n \"tag\": "Crypturidae",\n \"popularity\": 41458\n },\n {\n \"tag\": "caboodle",\n \"popularity\": 41350\n },\n {\n \"tag\": "Filaria",\n \"popularity\": 41242\n },\n {\n \"tag\": "noninvincibility",\n \"popularity\": 41135\n },\n {\n \"tag\": "preadvertisement",\n \"popularity\": 41028\n },\n {\n \"tag\": "bathrobe",\n \"popularity\": 40921\n },\n {\n \"tag\": "nitrifier",\n \"popularity\": 40815\n },\n {\n \"tag\": "furthermore",\n \"popularity\": 40709\n },\n {\n \"tag\": "recrate",\n \"popularity\": 40604\n },\n {\n \"tag\": "inexist",\n \"popularity\": 40499\n },\n {\n \"tag\": "Mocoan",\n \"popularity\": 40395\n },\n {\n \"tag\": "forint",\n \"popularity\": 40291\n },\n {\n \"tag\": "cardiomyoliposis",\n \"popularity\": 40187\n },\n {\n \"tag\": "channeling",\n \"popularity\": 40084\n },\n {\n \"tag\": "quebrachine",\n \"popularity\": 39981\n },\n {\n \"tag\": "magistery",\n \"popularity\": 39879\n },\n {\n \"tag\": "koko",\n \"popularity\": 39777\n },\n {\n \"tag\": "nobilify",\n \"popularity\": 39676\n },\n {\n \"tag\": "articulate taprooted",\n \"popularity\": 39575\n },\n {\n \"tag\": "cardiotonic Nicaragua",\n \"popularity\": 39474\n },\n {\n \"tag\": "assertiveness",\n \"popularity\": 39374\n },\n {\n \"tag\": "springtail",\n \"popularity\": 39274\n },\n {\n \"tag\": "spontoon",\n \"popularity\": 39174\n },\n {\n \"tag\": "plesiobiosis",\n \"popularity\": 39075\n },\n {\n \"tag\": "rooinek",\n \"popularity\": 38976\n },\n {\n \"tag\": "hairif falsehood",\n \"popularity\": 38878\n },\n {\n \"tag\": "synodally",\n \"popularity\": 38780\n },\n {\n \"tag\": "biodynamics",\n \"popularity\": 38683\n },\n {\n \"tag\": "trickling",\n \"popularity\": 38585\n },\n {\n \"tag\": "oxfly daystar",\n \"popularity\": 38489\n },\n {\n \"tag\": "epicycloidal",\n \"popularity\": 38392\n },\n {\n \"tag\": "shorthand",\n \"popularity\": 38296\n },\n {\n \"tag\": "herpolhode",\n \"popularity\": 38201\n },\n {\n \"tag\": "polysynthesism",\n \"popularity\": 38105\n },\n {\n \"tag\": "cany",\n \"popularity\": 38010\n },\n {\n \"tag\": "sideage",\n \"popularity\": 37916\n },\n {\n \"tag\": "strainableness",\n \"popularity\": 37822\n },\n {\n \"tag\": "superformidable",\n \"popularity\": 37728\n },\n {\n \"tag\": "slendang",\n \"popularity\": 37634\n },\n {\n \"tag\": "impropriation",\n \"popularity\": 37541\n },\n {\n \"tag\": "ficklehearted",\n \"popularity\": 37449\n },\n {\n \"tag\": "wintrify",\n \"popularity\": 37356\n },\n {\n \"tag\": "geomorphogenist",\n \"popularity\": 37264\n },\n {\n \"tag\": "smuggleable",\n \"popularity\": 37173\n },\n {\n \"tag\": "delapsion",\n \"popularity\": 37081\n },\n {\n \"tag\": "projective",\n \"popularity\": 36990\n },\n {\n \"tag\": "unglue exfoliation",\n \"popularity\": 36900\n },\n {\n \"tag\": "Acerae",\n \"popularity\": 36810\n },\n {\n \"tag\": "unstaged",\n \"popularity\": 36720\n },\n {\n \"tag\": "ranal",\n \"popularity\": 36630\n },\n {\n \"tag\": "worrier",\n \"popularity\": 36541\n },\n {\n \"tag\": "unhid",\n \"popularity\": 36452\n },\n {\n \"tag\": "adequation",\n \"popularity\": 36363\n },\n {\n \"tag\": "strongylid Sokotri",\n \"popularity\": 36275\n },\n {\n \"tag\": "fumingly",\n \"popularity\": 36187\n },\n {\n \"tag\": "gynosporangium phaenogenetic",\n \"popularity\": 36100\n },\n {\n \"tag\": "uniunguiculate",\n \"popularity\": 36012\n },\n {\n \"tag\": "prudelike",\n \"popularity\": 35926\n },\n {\n \"tag\": "seminomata",\n \"popularity\": 35839\n },\n {\n \"tag\": "trinklet",\n \"popularity\": 35753\n },\n {\n \"tag\": "risorial",\n \"popularity\": 35667\n },\n {\n \"tag\": "pericardiocentesis",\n \"popularity\": 35581\n },\n {\n \"tag\": "filmist",\n \"popularity\": 35496\n },\n {\n \"tag\": "Nana",\n \"popularity\": 35411\n },\n {\n \"tag\": "cynipoid",\n \"popularity\": 35326\n },\n {\n \"tag\": "cteniform",\n \"popularity\": 35242\n },\n {\n \"tag\": "semiflex",\n \"popularity\": 35158\n },\n {\n \"tag\": "solstitially",\n \"popularity\": 35074\n },\n {\n \"tag\": "Algarsife",\n \"popularity\": 34991\n },\n {\n \"tag\": "noncriminal",\n \"popularity\": 34908\n },\n {\n \"tag\": "compassion",\n \"popularity\": 34825\n },\n {\n \"tag\": "Buddhic",\n \"popularity\": 34743\n },\n {\n \"tag\": "vellicative dactylically hotfoot",\n \"popularity\": 34661\n },\n {\n \"tag\": "chicory",\n \"popularity\": 34579\n },\n {\n \"tag\": "transperitoneally",\n \"popularity\": 34497\n },\n {\n \"tag\": "pennae",\n \"popularity\": 34416\n },\n {\n \"tag\": "Flamandize",\n \"popularity\": 34335\n },\n {\n \"tag\": "underviewer",\n \"popularity\": 34254\n },\n {\n \"tag\": "assoil",\n \"popularity\": 34174\n },\n {\n \"tag\": "saccharobacillus",\n \"popularity\": 34094\n },\n {\n \"tag\": "biacetylene",\n \"popularity\": 34014\n },\n {\n \"tag\": "mouchardism",\n \"popularity\": 33935\n },\n {\n \"tag\": "anisomeric",\n \"popularity\": 33856\n },\n {\n \"tag\": "digestive",\n \"popularity\": 33777\n },\n {\n \"tag\": "darlingly",\n \"popularity\": 33698\n },\n {\n \"tag\": "liman",\n \"popularity\": 33620\n },\n {\n \"tag\": "soldanrie",\n \"popularity\": 33542\n },\n {\n \"tag\": "sully",\n \"popularity\": 33464\n },\n {\n \"tag\": "brightsmith",\n \"popularity\": 33387\n },\n {\n \"tag\": "inwrap antiliturgist ureterocervical",\n \"popularity\": 33309\n },\n {\n \"tag\": "discommodity",\n \"popularity\": 33232\n },\n {\n \"tag\": "typical aggrandizer",\n \"popularity\": 33156\n },\n {\n \"tag\": "xenogeny",\n \"popularity\": 33079\n },\n {\n \"tag\": "uncountrified",\n \"popularity\": 33003\n },\n {\n \"tag\": "Podarge",\n \"popularity\": 32928\n },\n {\n \"tag\": "uninterviewed",\n \"popularity\": 32852\n },\n {\n \"tag\": "underprior",\n \"popularity\": 32777\n },\n {\n \"tag\": "leiomyomatous",\n \"popularity\": 32702\n },\n {\n \"tag\": "postdysenteric",\n \"popularity\": 32627\n },\n {\n \"tag\": "Fusicladium",\n \"popularity\": 32553\n },\n {\n \"tag\": "Dulcinea",\n \"popularity\": 32478\n },\n {\n \"tag\": "interspersion",\n \"popularity\": 32404\n },\n {\n \"tag\": "preobligate",\n \"popularity\": 32331\n },\n {\n \"tag\": "subaggregate",\n \"popularity\": 32257\n },\n {\n \"tag\": "grammarianism",\n \"popularity\": 32184\n },\n {\n \"tag\": "palikar",\n \"popularity\": 32111\n },\n {\n \"tag\": "facileness",\n \"popularity\": 32039\n },\n {\n \"tag\": "deuterofibrinose",\n \"popularity\": 31966\n },\n {\n \"tag\": "pseudesthesia",\n \"popularity\": 31894\n },\n {\n \"tag\": "sedimentary",\n \"popularity\": 31822\n },\n {\n \"tag\": "typewrite",\n \"popularity\": 31751\n },\n {\n \"tag\": "immemorable",\n \"popularity\": 31679\n },\n {\n \"tag\": "Myrtus",\n \"popularity\": 31608\n },\n {\n \"tag\": "hauchecornite",\n \"popularity\": 31537\n },\n {\n \"tag\": "galleylike",\n \"popularity\": 31467\n },\n {\n \"tag\": "thimber",\n \"popularity\": 31396\n },\n {\n \"tag\": "Hegelianism",\n \"popularity\": 31326\n },\n {\n \"tag\": "strig",\n \"popularity\": 31256\n },\n {\n \"tag\": "skyre",\n \"popularity\": 31187\n },\n {\n \"tag\": "eupepticism",\n \"popularity\": 31117\n },\n {\n \"tag\": "eponymism",\n \"popularity\": 31048\n },\n {\n \"tag\": "flunkeyhood",\n \"popularity\": 30979\n },\n {\n \"tag\": "Abama",\n \"popularity\": 30911\n },\n {\n \"tag\": "adiadochokinesis",\n \"popularity\": 30842\n },\n {\n \"tag\": "spendthrifty",\n \"popularity\": 30774\n },\n {\n \"tag\": "chalcedony",\n \"popularity\": 30706\n },\n {\n \"tag\": "authorism",\n \"popularity\": 30638\n },\n {\n \"tag\": "nasturtium",\n \"popularity\": 30571\n },\n {\n \"tag\": "Acanthocereus",\n \"popularity\": 30504\n },\n {\n \"tag\": "uncollapsible",\n \"popularity\": 30437\n },\n {\n \"tag\": "excursionist",\n \"popularity\": 30370\n },\n {\n \"tag\": "fogbow",\n \"popularity\": 30303\n },\n {\n \"tag\": "overlie",\n \"popularity\": 30237\n },\n {\n \"tag\": "velours",\n \"popularity\": 30171\n },\n {\n \"tag\": "zoodendria madrigal stagbush",\n \"popularity\": 30105\n },\n {\n \"tag\": "imi",\n \"popularity\": 30039\n },\n {\n \"tag\": "cojudge",\n \"popularity\": 29974\n },\n {\n \"tag\": "depurate argal",\n \"popularity\": 29909\n },\n {\n \"tag\": "unrecognition",\n \"popularity\": 29844\n },\n {\n \"tag\": "paunchful",\n \"popularity\": 29779\n },\n {\n \"tag\": "invalued",\n \"popularity\": 29714\n },\n {\n \"tag\": "probang",\n \"popularity\": 29650\n },\n {\n \"tag\": "chetvert",\n \"popularity\": 29586\n },\n {\n \"tag\": "enactable",\n \"popularity\": 29522\n },\n {\n \"tag\": "detoxicate adhibit",\n \"popularity\": 29458\n },\n {\n \"tag\": "kullaite",\n \"popularity\": 29395\n },\n {\n \"tag\": "undazzling",\n \"popularity\": 29332\n },\n {\n \"tag\": "excalation",\n \"popularity\": 29269\n },\n {\n \"tag\": "sievings",\n \"popularity\": 29206\n },\n {\n \"tag\": "disenthral",\n \"popularity\": 29143\n },\n {\n \"tag\": "disinterestedly",\n \"popularity\": 29081\n },\n {\n \"tag\": "stanner",\n \"popularity\": 29018\n },\n {\n \"tag\": "recapitulative",\n \"popularity\": 28956\n },\n {\n \"tag\": "objectivist",\n \"popularity\": 28895\n },\n {\n \"tag\": "hypermetropia",\n \"popularity\": 28833\n },\n {\n \"tag\": "incumbency",\n \"popularity\": 28772\n },\n {\n \"tag\": "protegee",\n \"popularity\": 28711\n },\n {\n \"tag\": "zealotic",\n \"popularity\": 28650\n },\n {\n \"tag\": "predebit",\n \"popularity\": 28589\n },\n {\n \"tag\": "cupolar",\n \"popularity\": 28528\n },\n {\n \"tag\": "unattributed",\n \"popularity\": 28468\n },\n {\n \"tag\": "louisine",\n \"popularity\": 28408\n },\n {\n \"tag\": "illustrate",\n \"popularity\": 28348\n },\n {\n \"tag\": "inofficiousness",\n \"popularity\": 28288\n },\n {\n \"tag\": "Americawards",\n \"popularity\": 28228\n },\n {\n \"tag\": "foreflap",\n \"popularity\": 28169\n },\n {\n \"tag\": "eruditeness",\n \"popularity\": 28110\n },\n {\n \"tag\": "copiopsia",\n \"popularity\": 28051\n },\n {\n \"tag\": "sporuliferous",\n \"popularity\": 27992\n },\n {\n \"tag\": "muttering",\n \"popularity\": 27934\n },\n {\n \"tag\": "prepsychology adrip",\n \"popularity\": 27875\n },\n {\n \"tag\": "unfriendly",\n \"popularity\": 27817\n },\n {\n \"tag\": "sulphanilic",\n \"popularity\": 27759\n },\n {\n \"tag\": "Coelococcus",\n \"popularity\": 27701\n },\n {\n \"tag\": "undoubtfulness",\n \"popularity\": 27643\n },\n {\n \"tag\": "flaringly",\n \"popularity\": 27586\n },\n {\n \"tag\": "unordain",\n \"popularity\": 27529\n },\n {\n \"tag\": "fratchety",\n \"popularity\": 27472\n },\n {\n \"tag\": "decadentism dolefully",\n \"popularity\": 27415\n },\n {\n \"tag\": "synthronus",\n \"popularity\": 27358\n },\n {\n \"tag\": "maiid",\n \"popularity\": 27301\n },\n {\n \"tag\": "rhinobyon",\n \"popularity\": 27245\n },\n {\n \"tag\": "Didynamia",\n \"popularity\": 27189\n },\n {\n \"tag\": "millionairedom",\n \"popularity\": 27133\n },\n {\n \"tag\": "mulierine",\n \"popularity\": 27077\n },\n {\n \"tag\": "Mayo",\n \"popularity\": 27021\n },\n {\n \"tag\": "perceivedness",\n \"popularity\": 26966\n },\n {\n \"tag\": "unadoration",\n \"popularity\": 26911\n },\n {\n \"tag\": "regraft",\n \"popularity\": 26856\n },\n {\n \"tag\": "witch",\n \"popularity\": 26801\n },\n {\n \"tag\": "ungrow",\n \"popularity\": 26746\n },\n {\n \"tag\": "glossopharyngeus",\n \"popularity\": 26691\n },\n {\n \"tag\": "unstirrable",\n \"popularity\": 26637\n },\n {\n \"tag\": "synodsman",\n \"popularity\": 26583\n },\n {\n \"tag\": "placentalian",\n \"popularity\": 26529\n },\n {\n \"tag\": "corpulently",\n \"popularity\": 26475\n },\n {\n \"tag\": "photochromoscope",\n \"popularity\": 26421\n },\n {\n \"tag\": "indusiate retinasphaltum chokestrap",\n \"popularity\": 26368\n },\n {\n \"tag\": "murdrum",\n \"popularity\": 26314\n },\n {\n \"tag\": "belatedness",\n \"popularity\": 26261\n },\n {\n \"tag\": "Cochin",\n \"popularity\": 26208\n },\n {\n \"tag\": "Leonist",\n \"popularity\": 26155\n },\n {\n \"tag\": "keeker confined",\n \"popularity\": 26102\n },\n {\n \"tag\": "unintellectual",\n \"popularity\": 26050\n },\n {\n \"tag\": "nymphaline bait",\n \"popularity\": 25997\n },\n {\n \"tag\": "sarcosporidiosis",\n \"popularity\": 25945\n },\n {\n \"tag\": "catawamptiously",\n \"popularity\": 25893\n },\n {\n \"tag\": "outshame",\n \"popularity\": 25841\n },\n {\n \"tag\": "animalism",\n \"popularity\": 25790\n },\n {\n \"tag\": "epithalamial",\n \"popularity\": 25738\n },\n {\n \"tag\": "ganner",\n \"popularity\": 25687\n },\n {\n \"tag\": "desilicify",\n \"popularity\": 25635\n },\n {\n \"tag\": "dandyism",\n \"popularity\": 25584\n },\n {\n \"tag\": "hyleg",\n \"popularity\": 25533\n },\n {\n \"tag\": "photophysical",\n \"popularity\": 25483\n },\n {\n \"tag\": "underload",\n \"popularity\": 25432\n },\n {\n \"tag\": "unintrusive",\n \"popularity\": 25382\n },\n {\n \"tag\": "succinamic",\n \"popularity\": 25331\n },\n {\n \"tag\": "matchy",\n \"popularity\": 25281\n },\n {\n \"tag\": "concordal",\n \"popularity\": 25231\n },\n {\n \"tag\": "exteriority",\n \"popularity\": 25181\n },\n {\n \"tag\": "sterculiad",\n \"popularity\": 25132\n },\n {\n \"tag\": "sulfoxylic",\n \"popularity\": 25082\n },\n {\n \"tag\": "oversubscription",\n \"popularity\": 25033\n },\n {\n \"tag\": "chiasmic",\n \"popularity\": 24984\n },\n {\n \"tag\": "pseudoparthenogenesis",\n \"popularity\": 24935\n },\n {\n \"tag\": "indorse",\n \"popularity\": 24886\n },\n {\n \"tag\": "Krishnaite",\n \"popularity\": 24837\n },\n {\n \"tag\": "calcinize",\n \"popularity\": 24788\n },\n {\n \"tag\": "rhodium",\n \"popularity\": 24740\n },\n {\n \"tag\": "tragopan",\n \"popularity\": 24692\n },\n {\n \"tag\": "overwhelmingly",\n \"popularity\": 24643\n },\n {\n \"tag\": "procidence accorporate",\n \"popularity\": 24595\n },\n {\n \"tag\": "polemize speelless",\n \"popularity\": 24548\n },\n {\n \"tag\": "radiocarpal goran",\n \"popularity\": 24500\n },\n {\n \"tag\": "counteroffer Pelodytes",\n \"popularity\": 24452\n },\n {\n \"tag\": "lionhearted",\n \"popularity\": 24405\n },\n {\n \"tag\": "paramastoid",\n \"popularity\": 24358\n },\n {\n \"tag\": "murine",\n \"popularity\": 24310\n },\n {\n \"tag\": "woodbined",\n \"popularity\": 24263\n },\n {\n \"tag\": "packthread",\n \"popularity\": 24217\n },\n {\n \"tag\": "citreous",\n \"popularity\": 24170\n },\n {\n \"tag\": "unfallaciously",\n \"popularity\": 24123\n },\n {\n \"tag\": "tentwork reincarnadine",\n \"popularity\": 24077\n },\n {\n \"tag\": "verminousness",\n \"popularity\": 24030\n },\n {\n \"tag\": "sillometer",\n \"popularity\": 23984\n },\n {\n \"tag\": "jointy",\n \"popularity\": 23938\n },\n {\n \"tag\": "streptolysin",\n \"popularity\": 23892\n },\n {\n \"tag\": "Florentinism",\n \"popularity\": 23847\n },\n {\n \"tag\": "monosomatous",\n \"popularity\": 23801\n },\n {\n \"tag\": "capsulociliary",\n \"popularity\": 23756\n },\n {\n \"tag\": "organum",\n \"popularity\": 23710\n },\n {\n \"tag\": "overtly",\n \"popularity\": 23665\n },\n {\n \"tag\": "ophthalmoscopical",\n \"popularity\": 23620\n },\n {\n \"tag\": "supposititiously",\n \"popularity\": 23575\n },\n {\n \"tag\": "radiochemistry",\n \"popularity\": 23530\n },\n {\n \"tag\": "flaxtail",\n \"popularity\": 23486\n },\n {\n \"tag\": "pretympanic",\n \"popularity\": 23441\n },\n {\n \"tag\": "auscultation",\n \"popularity\": 23397\n },\n {\n \"tag\": "hairdresser",\n \"popularity\": 23352\n },\n {\n \"tag\": "chaffless",\n \"popularity\": 23308\n },\n {\n \"tag\": "polioencephalitis",\n \"popularity\": 23264\n },\n {\n \"tag\": "axolotl",\n \"popularity\": 23220\n },\n {\n \"tag\": "smous",\n \"popularity\": 23177\n },\n {\n \"tag\": "morgen disenamour toothed",\n \"popularity\": 23133\n },\n {\n \"tag\": "chaiseless",\n \"popularity\": 23089\n },\n {\n \"tag\": "frugally",\n \"popularity\": 23046\n },\n {\n \"tag\": "combustive antievolutionist cinenegative",\n \"popularity\": 23003\n },\n {\n \"tag\": "malacolite",\n \"popularity\": 22960\n },\n {\n \"tag\": "borne",\n \"popularity\": 22917\n },\n {\n \"tag\": "mercaptole",\n \"popularity\": 22874\n },\n {\n \"tag\": "judicatory",\n \"popularity\": 22831\n },\n {\n \"tag\": "noctivagation",\n \"popularity\": 22789\n },\n {\n \"tag\": "synthete",\n \"popularity\": 22746\n },\n {\n \"tag\": "tomboyism",\n \"popularity\": 22704\n },\n {\n \"tag\": "serranoid",\n \"popularity\": 22661\n },\n {\n \"tag\": "impostorism",\n \"popularity\": 22619\n },\n {\n \"tag\": "flagellosis Talitha",\n \"popularity\": 22577\n },\n {\n \"tag\": "pseudoviscous",\n \"popularity\": 22535\n },\n {\n \"tag\": "Galleriidae",\n \"popularity\": 22494\n },\n {\n \"tag\": "undulation didelph Comintern",\n \"popularity\": 22452\n },\n {\n \"tag\": "triangulopyramidal",\n \"popularity\": 22411\n },\n {\n \"tag\": "middlings",\n \"popularity\": 22369\n },\n {\n \"tag\": "piperazin",\n \"popularity\": 22328\n },\n {\n \"tag\": "endostitis",\n \"popularity\": 22287\n },\n {\n \"tag\": "swordlike",\n \"popularity\": 22246\n },\n {\n \"tag\": "forthwith",\n \"popularity\": 22205\n },\n {\n \"tag\": "menaceful",\n \"popularity\": 22164\n },\n {\n \"tag\": "explantation defective",\n \"popularity\": 22123\n },\n {\n \"tag\": "arrear",\n \"popularity\": 22083\n },\n {\n \"tag\": "engraft",\n \"popularity\": 22042\n },\n {\n \"tag\": "revolunteer",\n \"popularity\": 22002\n },\n {\n \"tag\": "foliaceous",\n \"popularity\": 21962\n },\n {\n \"tag\": "pseudograph",\n \"popularity\": 21922\n },\n {\n \"tag\": "maenaite",\n \"popularity\": 21882\n },\n {\n \"tag\": "interfinger",\n \"popularity\": 21842\n },\n {\n \"tag\": "macroscopically",\n \"popularity\": 21802\n },\n {\n \"tag\": "bluewood",\n \"popularity\": 21762\n },\n {\n \"tag\": "chikara",\n \"popularity\": 21723\n },\n {\n \"tag\": "reprehension diazeuxis nickelous",\n \"popularity\": 21683\n },\n {\n \"tag\": "vacuation",\n \"popularity\": 21644\n },\n {\n \"tag\": "Sartish",\n \"popularity\": 21605\n },\n {\n \"tag\": "pseudogyny",\n \"popularity\": 21566\n },\n {\n \"tag\": "friedcake",\n \"popularity\": 21527\n },\n {\n \"tag\": "thraw",\n \"popularity\": 21488\n },\n {\n \"tag\": "bifid",\n \"popularity\": 21449\n },\n {\n \"tag\": "truthlessly",\n \"popularity\": 21411\n },\n {\n \"tag\": "lungy",\n \"popularity\": 21372\n },\n {\n \"tag\": "fluoborite",\n \"popularity\": 21334\n },\n {\n \"tag\": "anthropolithic",\n \"popularity\": 21295\n },\n {\n \"tag\": "coachee straw",\n \"popularity\": 21257\n },\n {\n \"tag\": "dehorner Grecize",\n \"popularity\": 21219\n },\n {\n \"tag\": "spondylopyosis",\n \"popularity\": 21181\n },\n {\n \"tag\": "institutionary",\n \"popularity\": 21143\n },\n {\n \"tag\": "agentry",\n \"popularity\": 21105\n },\n {\n \"tag\": "musing bietle",\n \"popularity\": 21068\n },\n {\n \"tag\": "cormophyte",\n \"popularity\": 21030\n },\n {\n \"tag\": "semielliptic",\n \"popularity\": 20993\n },\n {\n \"tag\": "ependytes",\n \"popularity\": 20955\n },\n {\n \"tag\": "coachmaster",\n \"popularity\": 20918\n },\n {\n \"tag\": "overexuberant",\n \"popularity\": 20881\n },\n {\n \"tag\": "selectable",\n \"popularity\": 20844\n },\n {\n \"tag\": "saclike",\n \"popularity\": 20807\n },\n {\n \"tag\": "mullion",\n \"popularity\": 20770\n },\n {\n \"tag\": "pantheonize prevalency",\n \"popularity\": 20733\n },\n {\n \"tag\": "trophosperm",\n \"popularity\": 20697\n },\n {\n \"tag\": "paraphrasist",\n \"popularity\": 20660\n },\n {\n \"tag\": "undercarry",\n \"popularity\": 20624\n },\n {\n \"tag\": "thallogenic",\n \"popularity\": 20587\n },\n {\n \"tag\": "bulgy forbid",\n \"popularity\": 20551\n },\n {\n \"tag\": "proliquor gratulatory",\n \"popularity\": 20515\n },\n {\n \"tag\": "booker",\n \"popularity\": 20479\n },\n {\n \"tag\": "wizen",\n \"popularity\": 20443\n },\n {\n \"tag\": "synchondrosially",\n \"popularity\": 20407\n },\n {\n \"tag\": "herbless",\n \"popularity\": 20371\n },\n {\n \"tag\": "arfvedsonite",\n \"popularity\": 20336\n },\n {\n \"tag\": "Neuroptera",\n \"popularity\": 20300\n },\n {\n \"tag\": "fingerstone",\n \"popularity\": 20265\n },\n {\n \"tag\": "Odontoglossae",\n \"popularity\": 20229\n },\n {\n \"tag\": "transmigrator",\n \"popularity\": 20194\n },\n {\n \"tag\": "Dehaites",\n \"popularity\": 20159\n },\n {\n \"tag\": "Molinist",\n \"popularity\": 20124\n },\n {\n \"tag\": "novelistic",\n \"popularity\": 20089\n },\n {\n \"tag\": "astelic",\n \"popularity\": 20054\n },\n {\n \"tag\": "pyelometry",\n \"popularity\": 20019\n },\n {\n \"tag\": "pigmentation",\n \"popularity\": 19984\n },\n {\n \"tag\": "epinaos",\n \"popularity\": 19950\n },\n {\n \"tag\": "outdare",\n \"popularity\": 19915\n },\n {\n \"tag\": "Funje philaristocracy",\n \"popularity\": 19881\n },\n {\n \"tag\": "keddah",\n \"popularity\": 19846\n },\n {\n \"tag\": "axoidean",\n \"popularity\": 19812\n },\n {\n \"tag\": "ovule",\n \"popularity\": 19778\n },\n {\n \"tag\": "solidify",\n \"popularity\": 19744\n },\n {\n \"tag\": "noncelestial",\n \"popularity\": 19710\n },\n {\n \"tag\": "overmultiplication",\n \"popularity\": 19676\n },\n {\n \"tag\": "hexatetrahedron",\n \"popularity\": 19642\n },\n {\n \"tag\": "pliciform",\n \"popularity\": 19609\n },\n {\n \"tag\": "zimbalon",\n \"popularity\": 19575\n },\n {\n \"tag\": "annexational",\n \"popularity\": 19542\n },\n {\n \"tag\": "eurhodol",\n \"popularity\": 19508\n },\n {\n \"tag\": "yark",\n \"popularity\": 19475\n },\n {\n \"tag\": "illegality nitroalizarin",\n \"popularity\": 19442\n },\n {\n \"tag\": "quadratum",\n \"popularity\": 19409\n },\n {\n \"tag\": "saccharine",\n \"popularity\": 19376\n },\n {\n \"tag\": "unemploy",\n \"popularity\": 19343\n },\n {\n \"tag\": "uniclinal unipotent",\n \"popularity\": 19310\n },\n {\n \"tag\": "turbo",\n \"popularity\": 19277\n },\n {\n \"tag\": "sybarism",\n \"popularity\": 19244\n },\n {\n \"tag\": "motacilline",\n \"popularity\": 19212\n },\n {\n \"tag\": "weaselly",\n \"popularity\": 19179\n },\n {\n \"tag\": "plastid",\n \"popularity\": 19147\n },\n {\n \"tag\": "wasting",\n \"popularity\": 19114\n },\n {\n \"tag\": "begrime fluting",\n \"popularity\": 19082\n },\n {\n \"tag\": "Nephilinae",\n \"popularity\": 19050\n },\n {\n \"tag\": "disregardance",\n \"popularity\": 19018\n },\n {\n \"tag\": "Shakerlike",\n \"popularity\": 18986\n },\n {\n \"tag\": "uniped",\n \"popularity\": 18954\n },\n {\n \"tag\": "knap",\n \"popularity\": 18922\n },\n {\n \"tag\": "electivism undergardener",\n \"popularity\": 18890\n },\n {\n \"tag\": "hulverheaded",\n \"popularity\": 18858\n },\n {\n \"tag\": "unruptured",\n \"popularity\": 18827\n },\n {\n \"tag\": "solemnize credently",\n \"popularity\": 18795\n },\n {\n \"tag\": "pentastomoid possessingly",\n \"popularity\": 18764\n },\n {\n \"tag\": "octose",\n \"popularity\": 18733\n },\n {\n \"tag\": "psithurism indefensibility",\n \"popularity\": 18701\n },\n {\n \"tag\": "torrentuous cyanometer subcrenate",\n \"popularity\": 18670\n },\n {\n \"tag\": "photoplaywright tapaculo",\n \"popularity\": 18639\n },\n {\n \"tag\": "univalence",\n \"popularity\": 18608\n },\n {\n \"tag\": "Porthetria",\n \"popularity\": 18577\n },\n {\n \"tag\": "funambulo",\n \"popularity\": 18546\n },\n {\n \"tag\": "pedion",\n \"popularity\": 18515\n },\n {\n \"tag\": "horticulturally",\n \"popularity\": 18485\n },\n {\n \"tag\": "marennin",\n \"popularity\": 18454\n },\n {\n \"tag\": "horselaugh",\n \"popularity\": 18423\n },\n {\n \"tag\": "semiexecutive",\n \"popularity\": 18393\n },\n {\n \"tag\": "Monopteridae",\n \"popularity\": 18363\n },\n {\n \"tag\": "commonable",\n \"popularity\": 18332\n },\n {\n \"tag\": "dreariment",\n \"popularity\": 18302\n },\n {\n \"tag\": "disbud",\n \"popularity\": 18272\n },\n {\n \"tag\": "monocled",\n \"popularity\": 18242\n },\n {\n \"tag\": "hurlbarrow",\n \"popularity\": 18212\n },\n {\n \"tag\": "opiateproof",\n \"popularity\": 18182\n },\n {\n \"tag\": "Fahrenheit",\n \"popularity\": 18152\n },\n {\n \"tag\": "writhed",\n \"popularity\": 18122\n },\n {\n \"tag\": "Volstead",\n \"popularity\": 18093\n },\n {\n \"tag\": "yesternight",\n \"popularity\": 18063\n },\n {\n \"tag\": "readmittance",\n \"popularity\": 18033\n },\n {\n \"tag\": "reiterable",\n \"popularity\": 18004\n },\n {\n \"tag\": "triquetral",\n \"popularity\": 17975\n },\n {\n \"tag\": "guillotinement",\n \"popularity\": 17945\n },\n {\n \"tag\": "repermission",\n \"popularity\": 17916\n },\n {\n \"tag\": "assishly",\n \"popularity\": 17887\n },\n {\n \"tag\": "daidle",\n \"popularity\": 17858\n },\n {\n \"tag\": "prismatoid",\n \"popularity\": 17829\n },\n {\n \"tag\": "irreptitious",\n \"popularity\": 17800\n },\n {\n \"tag\": "sourdeline",\n \"popularity\": 17771\n },\n {\n \"tag\": "Austrian",\n \"popularity\": 17742\n },\n {\n \"tag\": "psychorrhagic",\n \"popularity\": 17713\n },\n {\n \"tag\": "Monumbo",\n \"popularity\": 17685\n },\n {\n \"tag\": "cloiochoanitic",\n \"popularity\": 17656\n },\n {\n \"tag\": "hant",\n \"popularity\": 17628\n },\n {\n \"tag\": "roily pulldown",\n \"popularity\": 17599\n },\n {\n \"tag\": "recongratulation",\n \"popularity\": 17571\n },\n {\n \"tag\": "Peking",\n \"popularity\": 17543\n },\n {\n \"tag\": "erdvark",\n \"popularity\": 17514\n },\n {\n \"tag\": "antimnemonic",\n \"popularity\": 17486\n },\n {\n \"tag\": "noncapillarity",\n \"popularity\": 17458\n },\n {\n \"tag\": "irrepressive",\n \"popularity\": 17430\n },\n {\n \"tag\": "Petromyzontes",\n \"popularity\": 17402\n },\n {\n \"tag\": "piscatorially",\n \"popularity\": 17374\n },\n {\n \"tag\": "cholesterosis",\n \"popularity\": 17346\n },\n {\n \"tag\": "denunciate",\n \"popularity\": 17319\n },\n {\n \"tag\": "unmetalled",\n \"popularity\": 17291\n },\n {\n \"tag\": "Tigris enruin",\n \"popularity\": 17263\n },\n {\n \"tag\": "anaspalin",\n \"popularity\": 17236\n },\n {\n \"tag\": "monodromy",\n \"popularity\": 17208\n },\n {\n \"tag\": "Canichanan",\n \"popularity\": 17181\n },\n {\n \"tag\": "mesolabe",\n \"popularity\": 17154\n },\n {\n \"tag\": "trichothallic overcunningness",\n \"popularity\": 17127\n },\n {\n \"tag\": "spinsterishly",\n \"popularity\": 17099\n },\n {\n \"tag\": "sensilla",\n \"popularity\": 17072\n },\n {\n \"tag\": "wifelkin",\n \"popularity\": 17045\n },\n {\n \"tag\": "suppositionless",\n \"popularity\": 17018\n },\n {\n \"tag\": "irksomeness",\n \"popularity\": 16991\n },\n {\n \"tag\": "sanbenito",\n \"popularity\": 16964\n },\n {\n \"tag\": "nonstatement",\n \"popularity\": 16938\n },\n {\n \"tag\": "phenoloid",\n \"popularity\": 16911\n },\n {\n \"tag\": "Steinberger",\n \"popularity\": 16884\n },\n {\n \"tag\": "replicated boom",\n \"popularity\": 16858\n },\n {\n \"tag\": "sciomachiology",\n \"popularity\": 16831\n },\n {\n \"tag\": "starwise",\n \"popularity\": 16805\n },\n {\n \"tag\": "prerich",\n \"popularity\": 16778\n },\n {\n \"tag\": "unspawned",\n \"popularity\": 16752\n },\n {\n \"tag\": "unindentable",\n \"popularity\": 16726\n },\n {\n \"tag\": "stromatic",\n \"popularity\": 16700\n },\n {\n \"tag\": "fetishize",\n \"popularity\": 16673\n },\n {\n \"tag\": "dihydroxy",\n \"popularity\": 16647\n },\n {\n \"tag\": "precaudal",\n \"popularity\": 16621\n },\n {\n \"tag\": "Madagascar",\n \"popularity\": 16595\n },\n {\n \"tag\": "repinement",\n \"popularity\": 16570\n },\n {\n \"tag\": "noncathedral wenzel",\n \"popularity\": 16544\n },\n {\n \"tag\": "corollike",\n \"popularity\": 16518\n },\n {\n \"tag\": "pubes unamortization",\n \"popularity\": 16492\n },\n {\n \"tag\": "brickcroft",\n \"popularity\": 16467\n },\n {\n \"tag\": "intertrabecular",\n \"popularity\": 16441\n },\n {\n \"tag\": "formulaic",\n \"popularity\": 16416\n },\n {\n \"tag\": "arienzo",\n \"popularity\": 16390\n },\n {\n \"tag\": "Mazzinian",\n \"popularity\": 16365\n },\n {\n \"tag\": "wallowishly",\n \"popularity\": 16339\n },\n {\n \"tag\": "sysselman",\n \"popularity\": 16314\n },\n {\n \"tag\": "seligmannite",\n \"popularity\": 16289\n },\n {\n \"tag\": "harlequinery",\n \"popularity\": 16264\n },\n {\n \"tag\": "zucchetto",\n \"popularity\": 16239\n },\n {\n \"tag\": "malonyl",\n \"popularity\": 16214\n },\n {\n \"tag\": "patwari",\n \"popularity\": 16189\n },\n {\n \"tag\": "neoholmia venturesomeness",\n \"popularity\": 16164\n },\n {\n \"tag\": "Dehwar",\n \"popularity\": 16139\n },\n {\n \"tag\": "fetiferous",\n \"popularity\": 16114\n },\n {\n \"tag\": "chromatophore",\n \"popularity\": 16090\n },\n {\n \"tag\": "reregistration",\n \"popularity\": 16065\n },\n {\n \"tag\": "alienor",\n \"popularity\": 16040\n },\n {\n \"tag\": "Hexagynia",\n \"popularity\": 16016\n },\n {\n \"tag\": "cerebrotonia",\n \"popularity\": 15991\n },\n {\n \"tag\": "deedbox",\n \"popularity\": 15967\n },\n {\n \"tag\": "staab",\n \"popularity\": 15943\n },\n {\n \"tag\": "uratemia",\n \"popularity\": 15918\n },\n {\n \"tag\": "flaunt",\n \"popularity\": 15894\n },\n {\n \"tag\": "bogy",\n \"popularity\": 15870\n },\n {\n \"tag\": "subcartilaginous",\n \"popularity\": 15846\n },\n {\n \"tag\": "protonephridial",\n \"popularity\": 15822\n },\n {\n \"tag\": "Boswellia",\n \"popularity\": 15798\n },\n {\n \"tag\": "relaxant untiaraed protoepiphyte",\n \"popularity\": 15774\n },\n {\n \"tag\": "nesslerization",\n \"popularity\": 15750\n },\n {\n \"tag\": "precession",\n \"popularity\": 15726\n },\n {\n \"tag\": "peat",\n \"popularity\": 15702\n },\n {\n \"tag\": "unbit",\n \"popularity\": 15678\n },\n {\n \"tag\": "snailish",\n \"popularity\": 15655\n },\n {\n \"tag\": "porismatical",\n \"popularity\": 15631\n },\n {\n \"tag\": "hooflike",\n \"popularity\": 15608\n },\n {\n \"tag\": "resuppose phene cranic",\n \"popularity\": 15584\n },\n {\n \"tag\": "peptonization kipskin",\n \"popularity\": 15561\n },\n {\n \"tag\": "birdstone",\n \"popularity\": 15537\n },\n {\n \"tag\": "empty inferoanterior",\n \"popularity\": 15514\n },\n {\n \"tag\": "androtauric",\n \"popularity\": 15491\n },\n {\n \"tag\": "triamide",\n \"popularity\": 15467\n },\n {\n \"tag\": "showmanry",\n \"popularity\": 15444\n },\n {\n \"tag\": "doing",\n \"popularity\": 15421\n },\n {\n \"tag\": "bouchaleen",\n \"popularity\": 15398\n },\n {\n \"tag\": "precollude",\n \"popularity\": 15375\n },\n {\n \"tag\": "finger",\n \"popularity\": 15352\n },\n {\n \"tag\": "limnetic intermessenger",\n \"popularity\": 15329\n },\n {\n \"tag\": "uncharitable picrotoxic",\n \"popularity\": 15306\n },\n {\n \"tag\": "nationalizer Phasmidae",\n \"popularity\": 15283\n },\n {\n \"tag\": "laughingstock",\n \"popularity\": 15261\n },\n {\n \"tag\": "nondeferential",\n \"popularity\": 15238\n },\n {\n \"tag\": "uproariously",\n \"popularity\": 15215\n },\n {\n \"tag\": "manzanilla",\n \"popularity\": 15193\n },\n {\n \"tag\": "khahoon",\n \"popularity\": 15170\n },\n {\n \"tag\": "olericulturally longshanks",\n \"popularity\": 15148\n },\n {\n \"tag\": "enthusiastically methionic",\n \"popularity\": 15125\n },\n {\n \"tag\": "pobs",\n \"popularity\": 15103\n },\n {\n \"tag\": "tricarpellate",\n \"popularity\": 15081\n },\n {\n \"tag\": "souterrain",\n \"popularity\": 15058\n },\n {\n \"tag\": "tethelin",\n \"popularity\": 15036\n },\n {\n \"tag\": "tartle",\n \"popularity\": 15014\n },\n {\n \"tag\": "tidelike",\n \"popularity\": 14992\n },\n {\n \"tag\": "cosmoramic",\n \"popularity\": 14970\n },\n {\n \"tag\": "pretardiness",\n \"popularity\": 14948\n },\n {\n \"tag\": "insoul",\n \"popularity\": 14926\n },\n {\n \"tag\": "anthroxan",\n \"popularity\": 14904\n },\n {\n \"tag\": "jilter",\n \"popularity\": 14882\n },\n {\n \"tag\": "pectinibranchian trematode",\n \"popularity\": 14860\n },\n {\n \"tag\": "Renaissancist",\n \"popularity\": 14838\n },\n {\n \"tag\": "imaginant",\n \"popularity\": 14817\n },\n {\n \"tag\": "supercensure",\n \"popularity\": 14795\n },\n {\n \"tag\": "festilogy",\n \"popularity\": 14773\n },\n {\n \"tag\": "regression",\n \"popularity\": 14752\n },\n {\n \"tag\": "mesobregmate languorously",\n \"popularity\": 14730\n },\n {\n \"tag\": "unsupernaturalized",\n \"popularity\": 14709\n },\n {\n \"tag\": "boobyish",\n \"popularity\": 14687\n },\n {\n \"tag\": "scopolamine",\n \"popularity\": 14666\n },\n {\n \"tag\": "reamputation unchristianly",\n \"popularity\": 14645\n },\n {\n \"tag\": "cuneatic",\n \"popularity\": 14623\n },\n {\n \"tag\": "heathberry",\n \"popularity\": 14602\n },\n {\n \"tag\": "hate",\n \"popularity\": 14581\n },\n {\n \"tag\": "redeemableness",\n \"popularity\": 14560\n },\n {\n \"tag\": "damasse",\n \"popularity\": 14539\n },\n {\n \"tag\": "thrillsome",\n \"popularity\": 14518\n },\n {\n \"tag\": "disseverment",\n \"popularity\": 14497\n },\n {\n \"tag\": "underbishopric Ostyak",\n \"popularity\": 14476\n },\n {\n \"tag\": "Exoascales",\n \"popularity\": 14455\n },\n {\n \"tag\": "soiled",\n \"popularity\": 14434\n },\n {\n \"tag\": "Cain",\n \"popularity\": 14413\n },\n {\n \"tag\": "mismanageable arenae",\n \"popularity\": 14392\n },\n {\n \"tag\": "manducate unhinderably",\n \"popularity\": 14372\n },\n {\n \"tag\": "peregrin",\n \"popularity\": 14351\n },\n {\n \"tag\": "musicianly",\n \"popularity\": 14330\n },\n {\n \"tag\": "aln",\n \"popularity\": 14310\n },\n {\n \"tag\": "intercentrum",\n \"popularity\": 14289\n },\n {\n \"tag\": "roothold",\n \"popularity\": 14269\n },\n {\n \"tag\": "jane aneurism",\n \"popularity\": 14248\n },\n {\n \"tag\": "insinuatively forefeel phytolatrous",\n \"popularity\": 14228\n },\n {\n \"tag\": "kanchil",\n \"popularity\": 14208\n },\n {\n \"tag\": "Austrophile",\n \"popularity\": 14187\n },\n {\n \"tag\": "unterrorized",\n \"popularity\": 14167\n },\n {\n \"tag\": "admeasure",\n \"popularity\": 14147\n },\n {\n \"tag\": "electrodissolution",\n \"popularity\": 14127\n },\n {\n \"tag\": "unweddedly",\n \"popularity\": 14107\n },\n {\n \"tag\": "unannoying",\n \"popularity\": 14087\n },\n {\n \"tag\": "uningenuous",\n \"popularity\": 14067\n },\n {\n \"tag\": "omnibenevolent",\n \"popularity\": 14047\n },\n {\n \"tag\": "commissure",\n \"popularity\": 14027\n },\n {\n \"tag\": "tellureted",\n \"popularity\": 14007\n },\n {\n \"tag\": "suffragan",\n \"popularity\": 13987\n },\n {\n \"tag\": "sphaeriaceous",\n \"popularity\": 13967\n },\n {\n \"tag\": "unfearing",\n \"popularity\": 13947\n },\n {\n \"tag\": "stentoriousness precounsellor",\n \"popularity\": 13928\n },\n {\n \"tag\": "haemaspectroscope",\n \"popularity\": 13908\n },\n {\n \"tag\": "teras",\n \"popularity\": 13888\n },\n {\n \"tag\": "pulicine",\n \"popularity\": 13869\n },\n {\n \"tag\": "colicystopyelitis",\n \"popularity\": 13849\n },\n {\n \"tag\": "Physalia",\n \"popularity\": 13830\n },\n {\n \"tag\": "Saxicolidae",\n \"popularity\": 13810\n },\n {\n \"tag\": "peritonital",\n \"popularity\": 13791\n },\n {\n \"tag\": "dysphotic",\n \"popularity\": 13771\n },\n {\n \"tag\": "unabandoned",\n \"popularity\": 13752\n },\n {\n \"tag\": "rashful",\n \"popularity\": 13733\n },\n {\n \"tag\": "goodyness Manobo",\n \"popularity\": 13714\n },\n {\n \"tag\": "glaring",\n \"popularity\": 13694\n },\n {\n \"tag\": "horrorful",\n \"popularity\": 13675\n },\n {\n \"tag\": "intercepting",\n \"popularity\": 13656\n },\n {\n \"tag\": "semifine",\n \"popularity\": 13637\n },\n {\n \"tag\": "Gaypoo",\n \"popularity\": 13618\n },\n {\n \"tag\": "Metrosideros",\n \"popularity\": 13599\n },\n {\n \"tag\": "thoracicolumbar",\n \"popularity\": 13580\n },\n {\n \"tag\": "unserried",\n \"popularity\": 13561\n },\n {\n \"tag\": "keeperess cauterization",\n \"popularity\": 13542\n },\n {\n \"tag\": "administrant",\n \"popularity\": 13523\n },\n {\n \"tag\": "unpropitiatedness",\n \"popularity\": 13505\n },\n {\n \"tag\": "pensileness",\n \"popularity\": 13486\n },\n {\n \"tag\": "quinaldic unreceivable",\n \"popularity\": 13467\n },\n {\n \"tag\": "Carnaria",\n \"popularity\": 13448\n },\n {\n \"tag\": "azothionium wurrus",\n \"popularity\": 13430\n },\n {\n \"tag\": "mistresshood",\n \"popularity\": 13411\n },\n {\n \"tag\": "Savara",\n \"popularity\": 13393\n },\n {\n \"tag\": "dasyurine",\n \"popularity\": 13374\n },\n {\n \"tag\": "superideal",\n \"popularity\": 13356\n },\n {\n \"tag\": "Parisianize",\n \"popularity\": 13337\n },\n {\n \"tag\": "underearth",\n \"popularity\": 13319\n },\n {\n \"tag\": "athrogenic",\n \"popularity\": 13301\n },\n {\n \"tag\": "communicate",\n \"popularity\": 13282\n },\n {\n \"tag\": "denervation enworthed",\n \"popularity\": 13264\n },\n {\n \"tag\": "subbromide",\n \"popularity\": 13246\n },\n {\n \"tag\": "stenocoriasis",\n \"popularity\": 13228\n },\n {\n \"tag\": "facetiousness",\n \"popularity\": 13209\n },\n {\n \"tag\": "twaddling",\n \"popularity\": 13191\n },\n {\n \"tag\": "tetartoconid",\n \"popularity\": 13173\n },\n {\n \"tag\": "audiophile",\n \"popularity\": 13155\n },\n {\n \"tag\": "fustigate",\n \"popularity\": 13137\n },\n {\n \"tag\": "Sorbian cacophonia",\n \"popularity\": 13119\n },\n {\n \"tag\": "fondish",\n \"popularity\": 13101\n },\n {\n \"tag\": "endomastoiditis",\n \"popularity\": 13084\n },\n {\n \"tag\": "sniptious",\n \"popularity\": 13066\n },\n {\n \"tag\": "glochidiate",\n \"popularity\": 13048\n },\n {\n \"tag\": "polycarboxylic",\n \"popularity\": 13030\n },\n {\n \"tag\": "stamp",\n \"popularity\": 13012\n },\n {\n \"tag\": "tritonymph endotoxoid",\n \"popularity\": 12995\n },\n {\n \"tag\": "wolfskin",\n \"popularity\": 12977\n },\n {\n \"tag\": "oncosimeter",\n \"popularity\": 12959\n },\n {\n \"tag\": "outward",\n \"popularity\": 12942\n },\n {\n \"tag\": "circumscribed",\n \"popularity\": 12924\n },\n {\n \"tag\": "autohemolytic",\n \"popularity\": 12907\n },\n {\n \"tag\": "isorhamnose",\n \"popularity\": 12889\n },\n {\n \"tag\": "monarchomachic",\n \"popularity\": 12872\n },\n {\n \"tag\": "phaenomenon",\n \"popularity\": 12855\n },\n {\n \"tag\": "angiopressure",\n \"popularity\": 12837\n },\n {\n \"tag\": "similarize",\n \"popularity\": 12820\n },\n {\n \"tag\": "unseeable",\n \"popularity\": 12803\n },\n {\n \"tag\": "Toryize",\n \"popularity\": 12785\n },\n {\n \"tag\": "fruitling",\n \"popularity\": 12768\n },\n {\n \"tag\": "axle",\n \"popularity\": 12751\n },\n {\n \"tag\": "priestal cocked",\n \"popularity\": 12734\n },\n {\n \"tag\": "serotoxin",\n \"popularity\": 12717\n },\n {\n \"tag\": "unmovably",\n \"popularity\": 12700\n },\n {\n \"tag\": "darbha",\n \"popularity\": 12683\n },\n {\n \"tag\": "Mongolize",\n \"popularity\": 12666\n },\n {\n \"tag\": "clusteringly",\n \"popularity\": 12649\n },\n {\n \"tag\": "tendence",\n \"popularity\": 12632\n },\n {\n \"tag\": "foziness",\n \"popularity\": 12615\n },\n {\n \"tag\": "brickkiln lithify",\n \"popularity\": 12598\n },\n {\n \"tag\": "unpriest",\n \"popularity\": 12581\n },\n {\n \"tag\": "convincer",\n \"popularity\": 12564\n },\n {\n \"tag\": "mornlike",\n \"popularity\": 12548\n },\n {\n \"tag\": "overaddiction ostentatiousness",\n \"popularity\": 12531\n },\n {\n \"tag\": "diffusively moccasin pendom",\n \"popularity\": 12514\n },\n {\n \"tag\": "boose",\n \"popularity\": 12498\n },\n {\n \"tag\": "myonosus",\n \"popularity\": 12481\n },\n {\n \"tag\": "handsome",\n \"popularity\": 12464\n },\n {\n \"tag\": "paroxysmic",\n \"popularity\": 12448\n },\n {\n \"tag\": "Ulidian",\n \"popularity\": 12431\n },\n {\n \"tag\": "heartache",\n \"popularity\": 12415\n },\n {\n \"tag\": "torporize",\n \"popularity\": 12398\n },\n {\n \"tag\": "hippish",\n \"popularity\": 12382\n },\n {\n \"tag\": "stigmal militation",\n \"popularity\": 12366\n },\n {\n \"tag\": "matmaker",\n \"popularity\": 12349\n },\n {\n \"tag\": "marantaceous bivoluminous",\n \"popularity\": 12333\n },\n {\n \"tag\": "Uraniidae",\n \"popularity\": 12317\n },\n {\n \"tag\": "risper",\n \"popularity\": 12301\n },\n {\n \"tag\": "tintinnabulation",\n \"popularity\": 12284\n },\n {\n \"tag\": "tributorian",\n \"popularity\": 12268\n },\n {\n \"tag\": "ashamedly",\n \"popularity\": 12252\n },\n {\n \"tag\": "Macrourus",\n \"popularity\": 12236\n },\n {\n \"tag\": "Chora",\n \"popularity\": 12220\n },\n {\n \"tag\": "caul",\n \"popularity\": 12204\n },\n {\n \"tag\": "exsector",\n \"popularity\": 12188\n },\n {\n \"tag\": "acutish",\n \"popularity\": 12172\n },\n {\n \"tag\": "amphichrome",\n \"popularity\": 12156\n },\n {\n \"tag\": "guarder",\n \"popularity\": 12140\n },\n {\n \"tag\": "sculpturally",\n \"popularity\": 12124\n },\n {\n \"tag\": "benightmare",\n \"popularity\": 12108\n },\n {\n \"tag\": "chucky",\n \"popularity\": 12093\n },\n {\n \"tag\": "Venetian",\n \"popularity\": 12077\n },\n {\n \"tag\": "autotheater",\n \"popularity\": 12061\n },\n {\n \"tag\": "planarioid",\n \"popularity\": 12045\n },\n {\n \"tag\": "handkerchiefful",\n \"popularity\": 12030\n },\n {\n \"tag\": "fuliginousness potentize",\n \"popularity\": 12014\n },\n {\n \"tag\": "pantheum",\n \"popularity\": 11998\n },\n {\n \"tag\": "heavyweight",\n \"popularity\": 11983\n },\n {\n \"tag\": "unbrick",\n \"popularity\": 11967\n },\n {\n \"tag\": "duomachy",\n \"popularity\": 11952\n },\n {\n \"tag\": "polyphyodont",\n \"popularity\": 11936\n },\n {\n \"tag\": "hibernacle",\n \"popularity\": 11921\n },\n {\n \"tag\": "undistend",\n \"popularity\": 11905\n },\n {\n \"tag\": "hystericky",\n \"popularity\": 11890\n },\n {\n \"tag\": "paleolimnology",\n \"popularity\": 11875\n },\n {\n \"tag\": "cedarware",\n \"popularity\": 11859\n },\n {\n \"tag\": "overwrested",\n \"popularity\": 11844\n },\n {\n \"tag\": "Syriacism",\n \"popularity\": 11829\n },\n {\n \"tag\": "pretan",\n \"popularity\": 11813\n },\n {\n \"tag\": "formant",\n \"popularity\": 11798\n },\n {\n \"tag\": "pharmacopoeist Fedia",\n \"popularity\": 11783\n },\n {\n \"tag\": "exorcist eerisome",\n \"popularity\": 11768\n },\n {\n \"tag\": "separation",\n \"popularity\": 11753\n },\n {\n \"tag\": "infancy",\n \"popularity\": 11738\n },\n {\n \"tag\": "ecrasite",\n \"popularity\": 11723\n },\n {\n \"tag\": "propolize",\n \"popularity\": 11708\n },\n {\n \"tag\": "uncram phyllin",\n \"popularity\": 11693\n },\n {\n \"tag\": "thymopathy",\n \"popularity\": 11678\n },\n {\n \"tag\": "omniscient",\n \"popularity\": 11663\n },\n {\n \"tag\": "coussinet hazer",\n \"popularity\": 11648\n },\n {\n \"tag\": "contributiveness",\n \"popularity\": 11633\n },\n {\n \"tag\": "septifluous",\n \"popularity\": 11618\n },\n {\n \"tag\": "halfness",\n \"popularity\": 11603\n },\n {\n \"tag\": "tocher",\n \"popularity\": 11589\n },\n {\n \"tag\": "monotonist",\n \"popularity\": 11574\n },\n {\n \"tag\": "headchair",\n \"popularity\": 11559\n },\n {\n \"tag\": "everywhence",\n \"popularity\": 11544\n },\n {\n \"tag\": "gerate",\n \"popularity\": 11530\n },\n {\n \"tag\": "unrepellent",\n \"popularity\": 11515\n },\n {\n \"tag\": "inidoneous",\n \"popularity\": 11500\n },\n {\n \"tag\": "Rifi",\n \"popularity\": 11486\n },\n {\n \"tag\": "unstop",\n \"popularity\": 11471\n },\n {\n \"tag\": "conformer",\n \"popularity\": 11457\n },\n {\n \"tag\": "vivisectionally",\n \"popularity\": 11442\n },\n {\n \"tag\": "nonfinishing",\n \"popularity\": 11428\n },\n {\n \"tag\": "tyranness",\n \"popularity\": 11413\n },\n {\n \"tag\": "shepherdage havoc",\n \"popularity\": 11399\n },\n {\n \"tag\": "coronale",\n \"popularity\": 11385\n },\n {\n \"tag\": "airmarker",\n \"popularity\": 11370\n },\n {\n \"tag\": "subpanel",\n \"popularity\": 11356\n },\n {\n \"tag\": "conciliation",\n \"popularity\": 11342\n },\n {\n \"tag\": "supergun",\n \"popularity\": 11327\n },\n {\n \"tag\": "photoheliography",\n \"popularity\": 11313\n },\n {\n \"tag\": "cacosmia",\n \"popularity\": 11299\n },\n {\n \"tag\": "caressant",\n \"popularity\": 11285\n },\n {\n \"tag\": "swivet",\n \"popularity\": 11270\n },\n {\n \"tag\": "coddler",\n \"popularity\": 11256\n },\n {\n \"tag\": "rakehellish",\n \"popularity\": 11242\n },\n {\n \"tag\": "recohabitation",\n \"popularity\": 11228\n },\n {\n \"tag\": "postillator",\n \"popularity\": 11214\n },\n {\n \"tag\": "receipt",\n \"popularity\": 11200\n },\n {\n \"tag\": "nonconformistical",\n \"popularity\": 11186\n },\n {\n \"tag\": "unglorified",\n \"popularity\": 11172\n },\n {\n \"tag\": "unordinariness",\n \"popularity\": 11158\n },\n {\n \"tag\": "tetrahydroxy",\n \"popularity\": 11144\n },\n {\n \"tag\": "haploperistomic corporeity",\n \"popularity\": 11130\n },\n {\n \"tag\": "varical",\n \"popularity\": 11117\n },\n {\n \"tag\": "pilferment",\n \"popularity\": 11103\n },\n {\n \"tag\": "reverentially playcraft",\n \"popularity\": 11089\n },\n {\n \"tag\": "unretentive",\n \"popularity\": 11075\n },\n {\n \"tag\": "readiness",\n \"popularity\": 11061\n },\n {\n \"tag\": "thermomagnetism",\n \"popularity\": 11048\n },\n {\n \"tag\": "spotless",\n \"popularity\": 11034\n },\n {\n \"tag\": "semishrubby",\n \"popularity\": 11020\n },\n {\n \"tag\": "metrotomy",\n \"popularity\": 11007\n },\n {\n \"tag\": "hocker",\n \"popularity\": 10993\n },\n {\n \"tag\": "anecdotal",\n \"popularity\": 10979\n },\n {\n \"tag\": "tetrabelodont",\n \"popularity\": 10966\n },\n {\n \"tag\": "Ramillied",\n \"popularity\": 10952\n },\n {\n \"tag\": "sympatheticism",\n \"popularity\": 10939\n },\n {\n \"tag\": "kiskatom",\n \"popularity\": 10925\n },\n {\n \"tag\": "concyclically",\n \"popularity\": 10912\n },\n {\n \"tag\": "tunicless",\n \"popularity\": 10899\n },\n {\n \"tag\": "formalistic",\n \"popularity\": 10885\n },\n {\n \"tag\": "thermacogenesis",\n \"popularity\": 10872\n },\n {\n \"tag\": "multimotored",\n \"popularity\": 10858\n },\n {\n \"tag\": "inversive",\n \"popularity\": 10845\n },\n {\n \"tag\": "Jatki",\n \"popularity\": 10832\n },\n {\n \"tag\": "highest",\n \"popularity\": 10818\n },\n {\n \"tag\": "rubidic",\n \"popularity\": 10805\n },\n {\n \"tag\": "acranial",\n \"popularity\": 10792\n },\n {\n \"tag\": "pulvinulus",\n \"popularity\": 10779\n },\n {\n \"tag\": "nattiness",\n \"popularity\": 10766\n },\n {\n \"tag\": "antisimoniacal",\n \"popularity\": 10752\n },\n {\n \"tag\": "tetanize",\n \"popularity\": 10739\n },\n {\n \"tag\": "spectrophobia",\n \"popularity\": 10726\n },\n {\n \"tag\": "monopolitical",\n \"popularity\": 10713\n },\n {\n \"tag\": "teallite",\n \"popularity\": 10700\n },\n {\n \"tag\": "alicyclic interpellator",\n \"popularity\": 10687\n },\n {\n \"tag\": "nonsynthesized",\n \"popularity\": 10674\n },\n {\n \"tag\": "wheelwrighting",\n \"popularity\": 10661\n },\n {\n \"tag\": "pelliculate",\n \"popularity\": 10648\n },\n {\n \"tag\": "Euphyllopoda",\n \"popularity\": 10635\n },\n {\n \"tag\": "graver",\n \"popularity\": 10622\n },\n {\n \"tag\": "automorph",\n \"popularity\": 10609\n },\n {\n \"tag\": "underhanded",\n \"popularity\": 10597\n },\n {\n \"tag\": "causal",\n \"popularity\": 10584\n },\n {\n \"tag\": "odoom",\n \"popularity\": 10571\n },\n {\n \"tag\": "apodictical",\n \"popularity\": 10558\n },\n {\n \"tag\": "foundery",\n \"popularity\": 10545\n },\n {\n \"tag\": "unneighbored",\n \"popularity\": 10533\n },\n {\n \"tag\": "woolshearing",\n \"popularity\": 10520\n },\n {\n \"tag\": "boschveld",\n \"popularity\": 10507\n },\n {\n \"tag\": "unhardened lipopod",\n \"popularity\": 10495\n },\n {\n \"tag\": "unenriching",\n \"popularity\": 10482\n },\n {\n \"tag\": "spak",\n \"popularity\": 10469\n },\n {\n \"tag\": "yogasana",\n \"popularity\": 10457\n },\n {\n \"tag\": "depoetize",\n \"popularity\": 10444\n },\n {\n \"tag\": "parousiamania",\n \"popularity\": 10432\n },\n {\n \"tag\": "longlegs",\n \"popularity\": 10419\n },\n {\n \"tag\": "gelatinizability",\n \"popularity\": 10407\n },\n {\n \"tag\": "edeology",\n \"popularity\": 10394\n },\n {\n \"tag\": "sodwork",\n \"popularity\": 10382\n },\n {\n \"tag\": "somnambule",\n \"popularity\": 10369\n },\n {\n \"tag\": "antiquing",\n \"popularity\": 10357\n },\n {\n \"tag\": "intaker",\n \"popularity\": 10344\n },\n {\n \"tag\": "Gerberia",\n \"popularity\": 10332\n },\n {\n \"tag\": "preadmit",\n \"popularity\": 10320\n },\n {\n \"tag\": "bullhorn",\n \"popularity\": 10307\n },\n {\n \"tag\": "sororal",\n \"popularity\": 10295\n },\n {\n \"tag\": "phaeophyceous",\n \"popularity\": 10283\n },\n {\n \"tag\": "omphalopsychite",\n \"popularity\": 10271\n },\n {\n \"tag\": "substantious",\n \"popularity\": 10258\n },\n {\n \"tag\": "undemonstratively",\n \"popularity\": 10246\n },\n {\n \"tag\": "corallike blackit",\n \"popularity\": 10234\n },\n {\n \"tag\": "amoebous",\n \"popularity\": 10222\n },\n {\n \"tag\": "Polypodium",\n \"popularity\": 10210\n },\n {\n \"tag\": "blodite",\n \"popularity\": 10198\n },\n {\n \"tag\": "hordarian",\n \"popularity\": 10186\n },\n {\n \"tag\": "nonmoral",\n \"popularity\": 10174\n },\n {\n \"tag\": "dredgeful",\n \"popularity\": 10162\n },\n {\n \"tag\": "nourishingly",\n \"popularity\": 10150\n },\n {\n \"tag\": "seamy",\n \"popularity\": 10138\n },\n {\n \"tag\": "vara",\n \"popularity\": 10126\n },\n {\n \"tag\": "incorruptibleness",\n \"popularity\": 10114\n },\n {\n \"tag\": "manipulator",\n \"popularity\": 10102\n },\n {\n \"tag\": "chromodiascope uncountably",\n \"popularity\": 10090\n },\n {\n \"tag\": "typhemia",\n \"popularity\": 10078\n },\n {\n \"tag\": "Smalcaldic",\n \"popularity\": 10066\n },\n {\n \"tag\": "precontrive",\n \"popularity\": 10054\n },\n {\n \"tag\": "sowarry",\n \"popularity\": 10042\n },\n {\n \"tag\": "monopodic",\n \"popularity\": 10031\n },\n {\n \"tag\": "recodify",\n \"popularity\": 10019\n },\n {\n \"tag\": "phosphowolframic rimple",\n \"popularity\": 10007\n },\n {\n \"tag\": "triconch",\n \"popularity\": 9995\n },\n {\n \"tag\": "pycnodontoid",\n \"popularity\": 9984\n },\n {\n \"tag\": "bradyspermatism",\n \"popularity\": 9972\n },\n {\n \"tag\": "extensionist",\n \"popularity\": 9960\n },\n {\n \"tag\": "characterize",\n \"popularity\": 9949\n },\n {\n \"tag\": "anatreptic proteolytic",\n \"popularity\": 9937\n },\n {\n \"tag\": "waterboard",\n \"popularity\": 9925\n },\n {\n \"tag\": "allopathically",\n \"popularity\": 9914\n },\n {\n \"tag\": "arithmetician",\n \"popularity\": 9902\n },\n {\n \"tag\": "subsist",\n \"popularity\": 9891\n },\n {\n \"tag\": "Islamitish",\n \"popularity\": 9879\n },\n {\n \"tag\": "biddy",\n \"popularity\": 9868\n },\n {\n \"tag\": "reverberation",\n \"popularity\": 9856\n },\n {\n \"tag\": "Zaporogue",\n \"popularity\": 9845\n },\n {\n \"tag\": "soapberry",\n \"popularity\": 9833\n },\n {\n \"tag\": "physiognomics",\n \"popularity\": 9822\n },\n {\n \"tag\": "hospitalization",\n \"popularity\": 9810\n },\n {\n \"tag\": "dissembler",\n \"popularity\": 9799\n },\n {\n \"tag\": "festinate",\n \"popularity\": 9788\n },\n {\n \"tag\": "angiectopia",\n \"popularity\": 9776\n },\n {\n \"tag\": "Pulicidae",\n \"popularity\": 9765\n },\n {\n \"tag\": "beslimer",\n \"popularity\": 9754\n },\n {\n \"tag\": "nontreaty",\n \"popularity\": 9743\n },\n {\n \"tag\": "unhaggled",\n \"popularity\": 9731\n },\n {\n \"tag\": "catfall",\n \"popularity\": 9720\n },\n {\n \"tag\": "stola",\n \"popularity\": 9709\n },\n {\n \"tag\": "pataco",\n \"popularity\": 9698\n },\n {\n \"tag\": "ontologistic",\n \"popularity\": 9686\n },\n {\n \"tag\": "aerosphere",\n \"popularity\": 9675\n },\n {\n \"tag\": "deobstruent",\n \"popularity\": 9664\n },\n {\n \"tag\": "threepence",\n \"popularity\": 9653\n },\n {\n \"tag\": "cyprinoid",\n \"popularity\": 9642\n },\n {\n \"tag\": "overbank",\n \"popularity\": 9631\n },\n {\n \"tag\": "prostyle",\n \"popularity\": 9620\n },\n {\n \"tag\": "photoactivation",\n \"popularity\": 9609\n },\n {\n \"tag\": "homothetic",\n \"popularity\": 9598\n },\n {\n \"tag\": "roguedom",\n \"popularity\": 9587\n },\n {\n \"tag\": "underschool",\n \"popularity\": 9576\n },\n {\n \"tag\": "tractility",\n \"popularity\": 9565\n },\n {\n \"tag\": "gardenin",\n \"popularity\": 9554\n },\n {\n \"tag\": "Micromastictora",\n \"popularity\": 9543\n },\n {\n \"tag\": "gossypine",\n \"popularity\": 9532\n },\n {\n \"tag\": "amylodyspepsia",\n \"popularity\": 9521\n },\n {\n \"tag\": "Luciana",\n \"popularity\": 9510\n },\n {\n \"tag\": "meetly nonfisherman",\n \"popularity\": 9500\n },\n {\n \"tag\": "backhanded",\n \"popularity\": 9489\n },\n {\n \"tag\": "decrustation",\n \"popularity\": 9478\n },\n {\n \"tag\": "pinrail",\n \"popularity\": 9467\n },\n {\n \"tag\": "Mahori",\n \"popularity\": 9456\n },\n {\n \"tag\": "unsizable",\n \"popularity\": 9446\n },\n {\n \"tag\": "disawa",\n \"popularity\": 9435\n },\n {\n \"tag\": "launderability inconsidered",\n \"popularity\": 9424\n },\n {\n \"tag\": "unclassical",\n \"popularity\": 9414\n },\n {\n \"tag\": "inobtrusiveness",\n \"popularity\": 9403\n },\n {\n \"tag\": "sialogenous",\n \"popularity\": 9392\n },\n {\n \"tag\": "sulphonamide",\n \"popularity\": 9382\n },\n {\n \"tag\": "diluvion",\n \"popularity\": 9371\n },\n {\n \"tag\": "deuteranope",\n \"popularity\": 9361\n },\n {\n \"tag\": "addition",\n \"popularity\": 9350\n },\n {\n \"tag\": "bockeret",\n \"popularity\": 9339\n },\n {\n \"tag\": "unidentified",\n \"popularity\": 9329\n },\n {\n \"tag\": "caryatic",\n \"popularity\": 9318\n },\n {\n \"tag\": "misattribution",\n \"popularity\": 9308\n },\n {\n \"tag\": "outray",\n \"popularity\": 9297\n },\n {\n \"tag\": "areometrical",\n \"popularity\": 9287\n },\n {\n \"tag\": "antilogism",\n \"popularity\": 9277\n },\n {\n \"tag\": "inadjustable",\n \"popularity\": 9266\n },\n {\n \"tag\": "byssus",\n \"popularity\": 9256\n },\n {\n \"tag\": "trun",\n \"popularity\": 9245\n },\n {\n \"tag\": "thereology",\n \"popularity\": 9235\n },\n {\n \"tag\": "extort",\n \"popularity\": 9225\n },\n {\n \"tag\": "bumpkin",\n \"popularity\": 9214\n },\n {\n \"tag\": "sulphobenzide",\n \"popularity\": 9204\n },\n {\n \"tag\": "hydrogeology",\n \"popularity\": 9194\n },\n {\n \"tag\": "nidulariaceous",\n \"popularity\": 9183\n },\n {\n \"tag\": "propodiale",\n \"popularity\": 9173\n },\n {\n \"tag\": "fierily",\n \"popularity\": 9163\n },\n {\n \"tag\": "aerotonometry",\n \"popularity\": 9153\n },\n {\n \"tag\": "pelobatid oversuperstitious",\n \"popularity\": 9142\n },\n {\n \"tag\": "restringent",\n \"popularity\": 9132\n },\n {\n \"tag\": "tetrapodic",\n \"popularity\": 9122\n },\n {\n \"tag\": "heroicness Vendidad",\n \"popularity\": 9112\n },\n {\n \"tag\": "Sphingurus",\n \"popularity\": 9102\n },\n {\n \"tag\": "sclerote",\n \"popularity\": 9092\n },\n {\n \"tag\": "unkeyed",\n \"popularity\": 9082\n },\n {\n \"tag\": "superparliamentary",\n \"popularity\": 9072\n },\n {\n \"tag\": "hetericism",\n \"popularity\": 9061\n },\n {\n \"tag\": "hucklebone",\n \"popularity\": 9051\n },\n {\n \"tag\": "yojan",\n \"popularity\": 9041\n },\n {\n \"tag\": "bossed",\n \"popularity\": 9031\n },\n {\n \"tag\": "spiderwork",\n \"popularity\": 9021\n },\n {\n \"tag\": "millfeed dullery",\n \"popularity\": 9011\n },\n {\n \"tag\": "adnoun",\n \"popularity\": 9001\n },\n {\n \"tag\": "mesometric",\n \"popularity\": 8992\n },\n {\n \"tag\": "doublehandedness",\n \"popularity\": 8982\n },\n {\n \"tag\": "suppurant",\n \"popularity\": 8972\n },\n {\n \"tag\": "Berlinize",\n \"popularity\": 8962\n },\n {\n \"tag\": "sontag",\n \"popularity\": 8952\n },\n {\n \"tag\": "biplane",\n \"popularity\": 8942\n },\n {\n \"tag\": "insula",\n \"popularity\": 8932\n },\n {\n \"tag\": "unbrand",\n \"popularity\": 8922\n },\n {\n \"tag\": "Basilosaurus",\n \"popularity\": 8913\n },\n {\n \"tag\": "prenomination",\n \"popularity\": 8903\n },\n {\n \"tag\": "untextual",\n \"popularity\": 8893\n },\n {\n \"tag\": "coleslaw",\n \"popularity\": 8883\n },\n {\n \"tag\": "langsyne",\n \"popularity\": 8874\n },\n {\n \"tag\": "impede",\n \"popularity\": 8864\n },\n {\n \"tag\": "irrigator",\n \"popularity\": 8854\n },\n {\n \"tag\": "deflocculation",\n \"popularity\": 8844\n },\n {\n \"tag\": "narghile",\n \"popularity\": 8835\n },\n {\n \"tag\": "unguardedly ebenaceous",\n \"popularity\": 8825\n },\n {\n \"tag\": "conversantly subocular",\n \"popularity\": 8815\n },\n {\n \"tag\": "hydroponic",\n \"popularity\": 8806\n },\n {\n \"tag\": "anthropopsychism",\n \"popularity\": 8796\n },\n {\n \"tag\": "panoptic",\n \"popularity\": 8787\n },\n {\n \"tag\": "insufferable",\n \"popularity\": 8777\n },\n {\n \"tag\": "salema",\n \"popularity\": 8768\n },\n {\n \"tag\": "Myriapoda",\n \"popularity\": 8758\n },\n {\n \"tag\": "regarrison",\n \"popularity\": 8748\n },\n {\n \"tag\": "overlearned",\n \"popularity\": 8739\n },\n {\n \"tag\": "ultraroyalist conventical bureaucratical",\n \"popularity\": 8729\n },\n {\n \"tag\": "epicaridan",\n \"popularity\": 8720\n },\n {\n \"tag\": "poetastress",\n \"popularity\": 8711\n },\n {\n \"tag\": "monophthalmus",\n \"popularity\": 8701\n },\n {\n \"tag\": "simnel",\n \"popularity\": 8692\n },\n {\n \"tag\": "compotor",\n \"popularity\": 8682\n },\n {\n \"tag\": "hydrolase",\n \"popularity\": 8673\n },\n {\n \"tag\": "attemptless",\n \"popularity\": 8663\n },\n {\n \"tag\": "visceroptosis",\n \"popularity\": 8654\n },\n {\n \"tag\": "unpreparedly",\n \"popularity\": 8645\n },\n {\n \"tag\": "mastage",\n \"popularity\": 8635\n },\n {\n \"tag\": "preinfluence",\n \"popularity\": 8626\n },\n {\n \"tag\": "Siwan",\n \"popularity\": 8617\n },\n {\n \"tag\": "ceratotheca belvedere",\n \"popularity\": 8607\n },\n {\n \"tag\": "disenablement",\n \"popularity\": 8598\n },\n {\n \"tag\": "nine",\n \"popularity\": 8589\n },\n {\n \"tag\": "spellingdown abridgment",\n \"popularity\": 8580\n },\n {\n \"tag\": "twilightless",\n \"popularity\": 8571\n },\n {\n \"tag\": "overflow",\n \"popularity\": 8561\n },\n {\n \"tag\": "mismeasurement",\n \"popularity\": 8552\n },\n {\n \"tag\": "nawabship",\n \"popularity\": 8543\n },\n {\n \"tag\": "Phrynosoma",\n \"popularity\": 8534\n },\n {\n \"tag\": "unanticipatingly",\n \"popularity\": 8525\n },\n {\n \"tag\": "blankite",\n \"popularity\": 8516\n },\n {\n \"tag\": "role",\n \"popularity\": 8506\n },\n {\n \"tag\": "peperine edelweiss",\n \"popularity\": 8497\n },\n {\n \"tag\": "unhysterical",\n \"popularity\": 8488\n },\n {\n \"tag\": "attentiveness",\n \"popularity\": 8479\n },\n {\n \"tag\": "scintillant",\n \"popularity\": 8470\n },\n {\n \"tag\": "stenostomatous",\n \"popularity\": 8461\n },\n {\n \"tag\": "pectinite",\n \"popularity\": 8452\n },\n {\n \"tag\": "herring",\n \"popularity\": 8443\n },\n {\n \"tag\": "interroom",\n \"popularity\": 8434\n },\n {\n \"tag\": "laccol",\n \"popularity\": 8425\n },\n {\n \"tag\": "unpartably kylite",\n \"popularity\": 8416\n },\n {\n \"tag\": "spirivalve",\n \"popularity\": 8407\n },\n {\n \"tag\": "hoosegow",\n \"popularity\": 8398\n },\n {\n \"tag\": "doat",\n \"popularity\": 8389\n },\n {\n \"tag\": "amphibian",\n \"popularity\": 8380\n },\n {\n \"tag\": "exposit",\n \"popularity\": 8371\n },\n {\n \"tag\": "canopy",\n \"popularity\": 8363\n },\n {\n \"tag\": "houndlike",\n \"popularity\": 8354\n },\n {\n \"tag\": "spikebill",\n \"popularity\": 8345\n },\n {\n \"tag\": "wiseacre pyrotechnic",\n \"popularity\": 8336\n },\n {\n \"tag\": "confessingly woodman",\n \"popularity\": 8327\n },\n {\n \"tag\": "overside",\n \"popularity\": 8318\n },\n {\n \"tag\": "oftwhiles",\n \"popularity\": 8310\n },\n {\n \"tag\": "Musophagidae",\n \"popularity\": 8301\n },\n {\n \"tag\": "slumberer",\n \"popularity\": 8292\n },\n {\n \"tag\": "leiotrichy",\n \"popularity\": 8283\n },\n {\n \"tag\": "Mantispidae",\n \"popularity\": 8275\n },\n {\n \"tag\": "perceptually",\n \"popularity\": 8266\n },\n {\n \"tag\": "biller",\n \"popularity\": 8257\n },\n {\n \"tag\": "eudaemonical",\n \"popularity\": 8249\n },\n {\n \"tag\": "underfiend",\n \"popularity\": 8240\n },\n {\n \"tag\": "impartible",\n \"popularity\": 8231\n },\n {\n \"tag\": "saxicavous",\n \"popularity\": 8223\n },\n {\n \"tag\": "yapster",\n \"popularity\": 8214\n },\n {\n \"tag\": "aliseptal",\n \"popularity\": 8205\n },\n {\n \"tag\": "omniparient",\n \"popularity\": 8197\n },\n {\n \"tag\": "nishiki",\n \"popularity\": 8188\n },\n {\n \"tag\": "yuzluk",\n \"popularity\": 8180\n },\n {\n \"tag\": "solderer",\n \"popularity\": 8171\n },\n {\n \"tag\": "Pinna",\n \"popularity\": 8162\n },\n {\n \"tag\": "reinterfere",\n \"popularity\": 8154\n },\n {\n \"tag\": "superepic",\n \"popularity\": 8145\n },\n {\n \"tag\": "ronquil",\n \"popularity\": 8137\n },\n {\n \"tag\": "bratstvo",\n \"popularity\": 8128\n },\n {\n \"tag\": "Thea",\n \"popularity\": 8120\n },\n {\n \"tag\": "hermaphroditical",\n \"popularity\": 8111\n },\n {\n \"tag\": "enlief",\n \"popularity\": 8103\n },\n {\n \"tag\": "Jesuate",\n \"popularity\": 8095\n },\n {\n \"tag\": "gaysome",\n \"popularity\": 8086\n },\n {\n \"tag\": "iliohypogastric",\n \"popularity\": 8078\n },\n {\n \"tag\": "regardance",\n \"popularity\": 8069\n },\n {\n \"tag\": "cumulately",\n \"popularity\": 8061\n },\n {\n \"tag\": "haustorial nucleolocentrosome",\n \"popularity\": 8053\n },\n {\n \"tag\": "cosmocrat",\n \"popularity\": 8044\n },\n {\n \"tag\": "onyxitis",\n \"popularity\": 8036\n },\n {\n \"tag\": "Cabinda",\n \"popularity\": 8028\n },\n {\n \"tag\": "coresort",\n \"popularity\": 8019\n },\n {\n \"tag\": "drusy preformant",\n \"popularity\": 8011\n },\n {\n \"tag\": "piningly",\n \"popularity\": 8003\n },\n {\n \"tag\": "bootlessly",\n \"popularity\": 7994\n },\n {\n \"tag\": "talari",\n \"popularity\": 7986\n },\n {\n \"tag\": "amidoacetal",\n \"popularity\": 7978\n },\n {\n \"tag\": "pschent",\n \"popularity\": 7970\n },\n {\n \"tag\": "consumptional scarer titivate",\n \"popularity\": 7962\n },\n {\n \"tag\": "Anserinae",\n \"popularity\": 7953\n },\n {\n \"tag\": "flaunter",\n \"popularity\": 7945\n },\n {\n \"tag\": "reindeer",\n \"popularity\": 7937\n },\n {\n \"tag\": "disparage",\n \"popularity\": 7929\n },\n {\n \"tag\": "superheat",\n \"popularity\": 7921\n },\n {\n \"tag\": "Chromatium",\n \"popularity\": 7912\n },\n {\n \"tag\": "Tina",\n \"popularity\": 7904\n },\n {\n \"tag\": "rededicatory",\n \"popularity\": 7896\n },\n {\n \"tag\": "nontransient",\n \"popularity\": 7888\n },\n {\n \"tag\": "Phocaean brinkless",\n \"popularity\": 7880\n },\n {\n \"tag\": "ventriculose",\n \"popularity\": 7872\n },\n {\n \"tag\": "upplough",\n \"popularity\": 7864\n },\n {\n \"tag\": "succorless",\n \"popularity\": 7856\n },\n {\n \"tag\": "hayrake",\n \"popularity\": 7848\n },\n {\n \"tag\": "merriness amorphia",\n \"popularity\": 7840\n },\n {\n \"tag\": "merycism",\n \"popularity\": 7832\n },\n {\n \"tag\": "checkrow",\n \"popularity\": 7824\n },\n {\n \"tag\": "scry",\n \"popularity\": 7816\n },\n {\n \"tag\": "obvolve",\n \"popularity\": 7808\n },\n {\n \"tag\": "orchard",\n \"popularity\": 7800\n },\n {\n \"tag\": "isomerize",\n \"popularity\": 7792\n },\n {\n \"tag\": "competitrix",\n \"popularity\": 7784\n },\n {\n \"tag\": "unbannered",\n \"popularity\": 7776\n },\n {\n \"tag\": "undoctrined",\n \"popularity\": 7768\n },\n {\n \"tag\": "theologian",\n \"popularity\": 7760\n },\n {\n \"tag\": "nebby",\n \"popularity\": 7752\n },\n {\n \"tag\": "Cardiazol",\n \"popularity\": 7745\n },\n {\n \"tag\": "phagedenic",\n \"popularity\": 7737\n },\n {\n \"tag\": "nostalgic",\n \"popularity\": 7729\n },\n {\n \"tag\": "orthodoxy",\n \"popularity\": 7721\n },\n {\n \"tag\": "oversanguine",\n \"popularity\": 7713\n },\n {\n \"tag\": "lish",\n \"popularity\": 7705\n },\n {\n \"tag\": "ketogenic",\n \"popularity\": 7698\n },\n {\n \"tag\": "syndicalize",\n \"popularity\": 7690\n },\n {\n \"tag\": "leeftail",\n \"popularity\": 7682\n },\n {\n \"tag\": "bulbomedullary",\n \"popularity\": 7674\n },\n {\n \"tag\": "reletter",\n \"popularity\": 7667\n },\n {\n \"tag\": "bitterly",\n \"popularity\": 7659\n },\n {\n \"tag\": "participatory",\n \"popularity\": 7651\n },\n {\n \"tag\": "baldberry",\n \"popularity\": 7643\n },\n {\n \"tag\": "prowaterpower",\n \"popularity\": 7636\n },\n {\n \"tag\": "lexicographical",\n \"popularity\": 7628\n },\n {\n \"tag\": "Anisodactyli",\n \"popularity\": 7620\n },\n {\n \"tag\": "amphipodous",\n \"popularity\": 7613\n },\n {\n \"tag\": "triglandular",\n \"popularity\": 7605\n },\n {\n \"tag\": "xanthopsin",\n \"popularity\": 7597\n },\n {\n \"tag\": "indefinitude",\n \"popularity\": 7590\n },\n {\n \"tag\": "bookworm",\n \"popularity\": 7582\n },\n {\n \"tag\": "suffocative",\n \"popularity\": 7574\n },\n {\n \"tag\": "uncongested tyrant",\n \"popularity\": 7567\n },\n {\n \"tag\": "alow harmoniously Pamir",\n \"popularity\": 7559\n },\n {\n \"tag\": "monander",\n \"popularity\": 7552\n },\n {\n \"tag\": "bagatelle",\n \"popularity\": 7544\n },\n {\n \"tag\": "membranology",\n \"popularity\": 7537\n },\n {\n \"tag\": "parturifacient",\n \"popularity\": 7529\n },\n {\n \"tag\": "excitovascular",\n \"popularity\": 7522\n },\n {\n \"tag\": "homopolar",\n \"popularity\": 7514\n },\n {\n \"tag\": "phobiac",\n \"popularity\": 7507\n },\n {\n \"tag\": "clype",\n \"popularity\": 7499\n },\n {\n \"tag\": "unsubversive",\n \"popularity\": 7492\n },\n {\n \"tag\": "bostrychoidal scorpionwort",\n \"popularity\": 7484\n },\n {\n \"tag\": "biliteralism",\n \"popularity\": 7477\n },\n {\n \"tag\": "dentatocostate",\n \"popularity\": 7469\n },\n {\n \"tag\": "Pici",\n \"popularity\": 7462\n },\n {\n \"tag\": "sideritic",\n \"popularity\": 7454\n },\n {\n \"tag\": "syntaxis",\n \"popularity\": 7447\n },\n {\n \"tag\": "ingest",\n \"popularity\": 7440\n },\n {\n \"tag\": "rigmarolish",\n \"popularity\": 7432\n },\n {\n \"tag\": "ocreaceous",\n \"popularity\": 7425\n },\n {\n \"tag\": "hyperbrachyskelic",\n \"popularity\": 7418\n },\n {\n \"tag\": "basophobia",\n \"popularity\": 7410\n },\n {\n \"tag\": "substantialness",\n \"popularity\": 7403\n },\n {\n \"tag\": "agglutinoid",\n \"popularity\": 7396\n },\n {\n \"tag\": "longleaf",\n \"popularity\": 7388\n },\n {\n \"tag\": "electroengraving",\n \"popularity\": 7381\n },\n {\n \"tag\": "laparoenterotomy",\n \"popularity\": 7374\n },\n {\n \"tag\": "oxalylurea",\n \"popularity\": 7366\n },\n {\n \"tag\": "unattaintedly",\n \"popularity\": 7359\n },\n {\n \"tag\": "pennystone",\n \"popularity\": 7352\n },\n {\n \"tag\": "Plumbaginaceae",\n \"popularity\": 7345\n },\n {\n \"tag\": "horntip",\n \"popularity\": 7337\n },\n {\n \"tag\": "begrudge",\n \"popularity\": 7330\n },\n {\n \"tag\": "bechignoned",\n \"popularity\": 7323\n },\n {\n \"tag\": "hologonidium",\n \"popularity\": 7316\n },\n {\n \"tag\": "Pulian",\n \"popularity\": 7309\n },\n {\n \"tag\": "gratulation",\n \"popularity\": 7301\n },\n {\n \"tag\": "Sebright",\n \"popularity\": 7294\n },\n {\n \"tag\": "coinstantaneous emotionally",\n \"popularity\": 7287\n },\n {\n \"tag\": "thoracostracan",\n \"popularity\": 7280\n },\n {\n \"tag\": "saurodont",\n \"popularity\": 7273\n },\n {\n \"tag\": "coseat",\n \"popularity\": 7266\n },\n {\n \"tag\": "irascibility",\n \"popularity\": 7259\n },\n {\n \"tag\": "occlude",\n \"popularity\": 7251\n },\n {\n \"tag\": "metallurgist",\n \"popularity\": 7244\n },\n {\n \"tag\": "extraviolet",\n \"popularity\": 7237\n },\n {\n \"tag\": "clinic",\n \"popularity\": 7230\n },\n {\n \"tag\": "skater",\n \"popularity\": 7223\n },\n {\n \"tag\": "linguistic",\n \"popularity\": 7216\n },\n {\n \"tag\": "attacheship",\n \"popularity\": 7209\n },\n {\n \"tag\": "Rachianectes",\n \"popularity\": 7202\n },\n {\n \"tag\": "foliolose",\n \"popularity\": 7195\n },\n {\n \"tag\": "claudetite",\n \"popularity\": 7188\n },\n {\n \"tag\": "aphidian scratching",\n \"popularity\": 7181\n },\n {\n \"tag\": "Carida",\n \"popularity\": 7174\n },\n {\n \"tag\": "tiepin polymicroscope",\n \"popularity\": 7167\n },\n {\n \"tag\": "telpherage",\n \"popularity\": 7160\n },\n {\n \"tag\": "meek",\n \"popularity\": 7153\n },\n {\n \"tag\": "swiftness",\n \"popularity\": 7146\n },\n {\n \"tag\": "gentes",\n \"popularity\": 7139\n },\n {\n \"tag\": "uncommemorated",\n \"popularity\": 7132\n },\n {\n \"tag\": "Lazarus",\n \"popularity\": 7125\n },\n {\n \"tag\": "redivive",\n \"popularity\": 7119\n },\n {\n \"tag\": "nonfebrile",\n \"popularity\": 7112\n },\n {\n \"tag\": "nymphet",\n \"popularity\": 7105\n },\n {\n \"tag\": "areologically",\n \"popularity\": 7098\n },\n {\n \"tag\": "undonkey",\n \"popularity\": 7091\n },\n {\n \"tag\": "projecting",\n \"popularity\": 7084\n },\n {\n \"tag\": "pinnigrade",\n \"popularity\": 7077\n },\n {\n \"tag\": "butylation",\n \"popularity\": 7071\n },\n {\n \"tag\": "philologistic lenticle",\n \"popularity\": 7064\n },\n {\n \"tag\": "nooky",\n \"popularity\": 7057\n },\n {\n \"tag\": "incestuousness",\n \"popularity\": 7050\n },\n {\n \"tag\": "palingenetically",\n \"popularity\": 7043\n },\n {\n \"tag\": "mitochondria",\n \"popularity\": 7037\n },\n {\n \"tag\": "truthify",\n \"popularity\": 7030\n },\n {\n \"tag\": "titanyl",\n \"popularity\": 7023\n },\n {\n \"tag\": "bestride",\n \"popularity\": 7016\n },\n {\n \"tag\": "chende",\n \"popularity\": 7010\n },\n {\n \"tag\": "Chaucerian monophote",\n \"popularity\": 7003\n },\n {\n \"tag\": "cutback",\n \"popularity\": 6996\n },\n {\n \"tag\": "unpatiently",\n \"popularity\": 6989\n },\n {\n \"tag\": "subvitreous",\n \"popularity\": 6983\n },\n {\n \"tag\": "organizable",\n \"popularity\": 6976\n },\n {\n \"tag\": "anniverse uncomprehensible",\n \"popularity\": 6969\n },\n {\n \"tag\": "hyalescence",\n \"popularity\": 6963\n },\n {\n \"tag\": "amniochorial",\n \"popularity\": 6956\n },\n {\n \"tag\": "Corybantian",\n \"popularity\": 6949\n },\n {\n \"tag\": "genocide Scaphitidae",\n \"popularity\": 6943\n },\n {\n \"tag\": "accordionist",\n \"popularity\": 6936\n },\n {\n \"tag\": "becheck",\n \"popularity\": 6930\n },\n {\n \"tag\": "overproduce",\n \"popularity\": 6923\n },\n {\n \"tag\": "unmaniac frijolillo",\n \"popularity\": 6916\n },\n {\n \"tag\": "multisulcated",\n \"popularity\": 6910\n },\n {\n \"tag\": "wennebergite",\n \"popularity\": 6903\n },\n {\n \"tag\": "tautousious mowth",\n \"popularity\": 6897\n },\n {\n \"tag\": "marigold",\n \"popularity\": 6890\n },\n {\n \"tag\": "affray",\n \"popularity\": 6884\n },\n {\n \"tag\": "nonidolatrous",\n \"popularity\": 6877\n },\n {\n \"tag\": "aphrasia",\n \"popularity\": 6871\n },\n {\n \"tag\": "muddlingly",\n \"popularity\": 6864\n },\n {\n \"tag\": "clear",\n \"popularity\": 6858\n },\n {\n \"tag\": "Clitoria",\n \"popularity\": 6851\n },\n {\n \"tag\": "apportionment underwaist",\n \"popularity\": 6845\n },\n {\n \"tag\": "kodakist",\n \"popularity\": 6838\n },\n {\n \"tag\": "Momotidae",\n \"popularity\": 6832\n },\n {\n \"tag\": "cryptovalency",\n \"popularity\": 6825\n },\n {\n \"tag\": "floe",\n \"popularity\": 6819\n },\n {\n \"tag\": "aphagia",\n \"popularity\": 6812\n },\n {\n \"tag\": "brontograph",\n \"popularity\": 6806\n },\n {\n \"tag\": "tubulous",\n \"popularity\": 6799\n },\n {\n \"tag\": "unhorse",\n \"popularity\": 6793\n },\n {\n \"tag\": "chlordane",\n \"popularity\": 6787\n },\n {\n \"tag\": "colloquy brochan",\n \"popularity\": 6780\n },\n {\n \"tag\": "sloosh",\n \"popularity\": 6774\n },\n {\n \"tag\": "battered",\n \"popularity\": 6767\n },\n {\n \"tag\": "monocularity pluriguttulate",\n \"popularity\": 6761\n },\n {\n \"tag\": "chiastoneury",\n \"popularity\": 6755\n },\n {\n \"tag\": "Sanguinaria",\n \"popularity\": 6748\n },\n {\n \"tag\": "confessionary",\n \"popularity\": 6742\n },\n {\n \"tag\": "enzymic",\n \"popularity\": 6736\n },\n {\n \"tag\": "cord",\n \"popularity\": 6729\n },\n {\n \"tag\": "oviducal",\n \"popularity\": 6723\n },\n {\n \"tag\": "crozzle outsea",\n \"popularity\": 6717\n },\n {\n \"tag\": "balladical",\n \"popularity\": 6710\n },\n {\n \"tag\": "uncollectibleness",\n \"popularity\": 6704\n },\n {\n \"tag\": "predorsal",\n \"popularity\": 6698\n },\n {\n \"tag\": "reauthenticate",\n \"popularity\": 6692\n },\n {\n \"tag\": "ravissant",\n \"popularity\": 6685\n },\n {\n \"tag\": "advantageousness",\n \"popularity\": 6679\n },\n {\n \"tag\": "rung",\n \"popularity\": 6673\n },\n {\n \"tag\": "duncedom",\n \"popularity\": 6667\n },\n {\n \"tag\": "hematolite",\n \"popularity\": 6660\n },\n {\n \"tag\": "thisness",\n \"popularity\": 6654\n },\n {\n \"tag\": "mapau",\n \"popularity\": 6648\n },\n {\n \"tag\": "Hecatic",\n \"popularity\": 6642\n },\n {\n \"tag\": "meningoencephalocele",\n \"popularity\": 6636\n },\n {\n \"tag\": "confection sorra",\n \"popularity\": 6630\n },\n {\n \"tag\": "unsedate",\n \"popularity\": 6623\n },\n {\n \"tag\": "meningocerebritis",\n \"popularity\": 6617\n },\n {\n \"tag\": "biopsychological",\n \"popularity\": 6611\n },\n {\n \"tag\": "clavicithern",\n \"popularity\": 6605\n },\n {\n \"tag\": "resun",\n \"popularity\": 6599\n },\n {\n \"tag\": "bayamo",\n \"popularity\": 6593\n },\n {\n \"tag\": "seeableness",\n \"popularity\": 6587\n },\n {\n \"tag\": "hypsidolichocephalism",\n \"popularity\": 6581\n },\n {\n \"tag\": "salivous",\n \"popularity\": 6574\n },\n {\n \"tag\": "neumatize",\n \"popularity\": 6568\n },\n {\n \"tag\": "stree",\n \"popularity\": 6562\n },\n {\n \"tag\": "markshot",\n \"popularity\": 6556\n },\n {\n \"tag\": "phraseologically",\n \"popularity\": 6550\n },\n {\n \"tag\": "yealing",\n \"popularity\": 6544\n },\n {\n \"tag\": "puggy",\n \"popularity\": 6538\n },\n {\n \"tag\": "sexadecimal",\n \"popularity\": 6532\n },\n {\n \"tag\": "unofficerlike",\n \"popularity\": 6526\n },\n {\n \"tag\": "curiosa",\n \"popularity\": 6520\n },\n {\n \"tag\": "pedomotor",\n \"popularity\": 6514\n },\n {\n \"tag\": "astrally",\n \"popularity\": 6508\n },\n {\n \"tag\": "prosomatic",\n \"popularity\": 6502\n },\n {\n \"tag\": "bulletheaded",\n \"popularity\": 6496\n },\n {\n \"tag\": "fortuned",\n \"popularity\": 6490\n },\n {\n \"tag\": "pixy",\n \"popularity\": 6484\n },\n {\n \"tag\": "protectrix",\n \"popularity\": 6478\n },\n {\n \"tag\": "arthritical",\n \"popularity\": 6472\n },\n {\n \"tag\": "coction",\n \"popularity\": 6466\n },\n {\n \"tag\": "Anthropos",\n \"popularity\": 6460\n },\n {\n \"tag\": "runer",\n \"popularity\": 6454\n },\n {\n \"tag\": "prenotify",\n \"popularity\": 6449\n },\n {\n \"tag\": "microspheric gastroparalysis",\n \"popularity\": 6443\n },\n {\n \"tag\": "Jovicentrical",\n \"popularity\": 6437\n },\n {\n \"tag\": "ceratopsid",\n \"popularity\": 6431\n },\n {\n \"tag\": "Theodoric",\n \"popularity\": 6425\n },\n {\n \"tag\": "Pactolus",\n \"popularity\": 6419\n },\n {\n \"tag\": "spawning",\n \"popularity\": 6413\n },\n {\n \"tag\": "nonconfidential",\n \"popularity\": 6407\n },\n {\n \"tag\": "halotrichite infumate",\n \"popularity\": 6402\n },\n {\n \"tag\": "undiscriminatingly",\n \"popularity\": 6396\n },\n {\n \"tag\": "unexasperated",\n \"popularity\": 6390\n },\n {\n \"tag\": "isoeugenol",\n \"popularity\": 6384\n },\n {\n \"tag\": "pressboard",\n \"popularity\": 6378\n },\n {\n \"tag\": "unshrew",\n \"popularity\": 6372\n },\n {\n \"tag\": "huffingly",\n \"popularity\": 6367\n },\n {\n \"tag\": "wagaun",\n \"popularity\": 6361\n },\n {\n \"tag\": "squirt Philistine",\n \"popularity\": 6355\n },\n {\n \"tag\": "kryptic",\n \"popularity\": 6349\n },\n {\n \"tag\": "paraform",\n \"popularity\": 6344\n },\n {\n \"tag\": "preverify",\n \"popularity\": 6338\n },\n {\n \"tag\": "dalar",\n \"popularity\": 6332\n },\n {\n \"tag\": "interdictor appraisingly",\n \"popularity\": 6326\n },\n {\n \"tag\": "chipped",\n \"popularity\": 6321\n },\n {\n \"tag\": "Pteropoda",\n \"popularity\": 6315\n },\n {\n \"tag\": "Bohairic",\n \"popularity\": 6309\n },\n {\n \"tag\": "felting",\n \"popularity\": 6303\n },\n {\n \"tag\": "compurgatorial",\n \"popularity\": 6298\n },\n {\n \"tag\": "unclead",\n \"popularity\": 6292\n },\n {\n \"tag\": "stockish",\n \"popularity\": 6286\n },\n {\n \"tag\": "mulligatawny",\n \"popularity\": 6281\n },\n {\n \"tag\": "Monotheletism",\n \"popularity\": 6275\n },\n {\n \"tag\": "lutanist",\n \"popularity\": 6269\n },\n {\n \"tag\": "gluttonize",\n \"popularity\": 6264\n },\n {\n \"tag\": "hackneyed",\n \"popularity\": 6258\n },\n {\n \"tag\": "yield",\n \"popularity\": 6253\n },\n {\n \"tag\": "sulphonamido",\n \"popularity\": 6247\n },\n {\n \"tag\": "granulative",\n \"popularity\": 6241\n },\n {\n \"tag\": "swingy",\n \"popularity\": 6236\n },\n {\n \"tag\": "Desmidiales",\n \"popularity\": 6230\n },\n {\n \"tag\": "tootlish",\n \"popularity\": 6224\n },\n {\n \"tag\": "unsatisfiedly",\n \"popularity\": 6219\n },\n {\n \"tag\": "burucha",\n \"popularity\": 6213\n },\n {\n \"tag\": "premeditatingly",\n \"popularity\": 6208\n },\n {\n \"tag\": "cowrie",\n \"popularity\": 6202\n },\n {\n \"tag\": "pleurolysis",\n \"popularity\": 6197\n },\n {\n \"tag\": "nationalist",\n \"popularity\": 6191\n },\n {\n \"tag\": "Pholadacea",\n \"popularity\": 6186\n },\n {\n \"tag\": "anakrousis",\n \"popularity\": 6180\n },\n {\n \"tag\": "proctorial",\n \"popularity\": 6175\n },\n {\n \"tag\": "cavillation",\n \"popularity\": 6169\n },\n {\n \"tag\": "cervicobregmatic",\n \"popularity\": 6163\n },\n {\n \"tag\": "interspecific",\n \"popularity\": 6158\n },\n {\n \"tag\": "Teutonity",\n \"popularity\": 6152\n },\n {\n \"tag\": "snakeholing",\n \"popularity\": 6147\n },\n {\n \"tag\": "balcony",\n \"popularity\": 6142\n },\n {\n \"tag\": "latchless",\n \"popularity\": 6136\n },\n {\n \"tag\": "Mithraea",\n \"popularity\": 6131\n },\n {\n \"tag\": "pseudepigraph",\n \"popularity\": 6125\n },\n {\n \"tag\": "flosser",\n \"popularity\": 6120\n },\n {\n \"tag\": "kotyle",\n \"popularity\": 6114\n },\n {\n \"tag\": "outdo",\n \"popularity\": 6109\n },\n {\n \"tag\": "interclerical",\n \"popularity\": 6103\n },\n {\n \"tag\": "aurar",\n \"popularity\": 6098\n },\n {\n \"tag\": "apophyseal",\n \"popularity\": 6093\n },\n {\n \"tag\": "Miro",\n \"popularity\": 6087\n },\n {\n \"tag\": "Priscillian",\n \"popularity\": 6082\n },\n {\n \"tag\": "alluvia",\n \"popularity\": 6076\n },\n {\n \"tag\": "exordize",\n \"popularity\": 6071\n },\n {\n \"tag\": "breakage",\n \"popularity\": 6066\n },\n {\n \"tag\": "unclosable",\n \"popularity\": 6060\n },\n {\n \"tag\": "monocondylous",\n \"popularity\": 6055\n },\n {\n \"tag\": "dyarchy",\n \"popularity\": 6050\n },\n {\n \"tag\": "subchelate",\n \"popularity\": 6044\n },\n {\n \"tag\": "hearsay",\n \"popularity\": 6039\n },\n {\n \"tag\": "prestigiously",\n \"popularity\": 6034\n },\n {\n \"tag\": "unimuscular",\n \"popularity\": 6028\n },\n {\n \"tag\": "lingwort",\n \"popularity\": 6023\n },\n {\n \"tag\": "jealous",\n \"popularity\": 6018\n },\n {\n \"tag\": "artilleryman",\n \"popularity\": 6012\n },\n {\n \"tag\": "phantasmagorially",\n \"popularity\": 6007\n },\n {\n \"tag\": "stagnum",\n \"popularity\": 6002\n },\n {\n \"tag\": "organotropism shatteringly",\n \"popularity\": 5997\n },\n {\n \"tag\": "Mytilus Hebraist",\n \"popularity\": 5991\n },\n {\n \"tag\": "returf",\n \"popularity\": 5986\n },\n {\n \"tag\": "townfolk",\n \"popularity\": 5981\n },\n {\n \"tag\": "propitiative",\n \"popularity\": 5976\n },\n {\n \"tag\": "Anita unsullied",\n \"popularity\": 5970\n },\n {\n \"tag\": "bandoleered",\n \"popularity\": 5965\n },\n {\n \"tag\": "cubby",\n \"popularity\": 5960\n },\n {\n \"tag\": "Hexanchus",\n \"popularity\": 5955\n },\n {\n \"tag\": "circuminsular",\n \"popularity\": 5949\n },\n {\n \"tag\": "chamberletted eumycete",\n \"popularity\": 5944\n },\n {\n \"tag\": "secure",\n \"popularity\": 5939\n },\n {\n \"tag\": "Edwardean",\n \"popularity\": 5934\n },\n {\n \"tag\": "strenth",\n \"popularity\": 5929\n },\n {\n \"tag\": "exhaustless",\n \"popularity\": 5923\n },\n {\n \"tag\": "electioneerer",\n \"popularity\": 5918\n },\n {\n \"tag\": "estoile",\n \"popularity\": 5913\n },\n {\n \"tag\": "redden",\n \"popularity\": 5908\n },\n {\n \"tag\": "solicitee",\n \"popularity\": 5903\n },\n {\n \"tag\": "nonpatented",\n \"popularity\": 5898\n },\n {\n \"tag\": "lemming",\n \"popularity\": 5893\n },\n {\n \"tag\": "marled subalate",\n \"popularity\": 5887\n },\n {\n \"tag\": "premial horizonward",\n \"popularity\": 5882\n },\n {\n \"tag\": "nonrefueling",\n \"popularity\": 5877\n },\n {\n \"tag\": "rupturewort",\n \"popularity\": 5872\n },\n {\n \"tag\": "unfed",\n \"popularity\": 5867\n },\n {\n \"tag\": "empanelment",\n \"popularity\": 5862\n },\n {\n \"tag\": "isoosmosis",\n \"popularity\": 5857\n },\n {\n \"tag\": "jipijapa",\n \"popularity\": 5852\n },\n {\n \"tag\": "Fiji",\n \"popularity\": 5847\n },\n {\n \"tag\": "interferant",\n \"popularity\": 5842\n },\n {\n \"tag\": "reconstitution",\n \"popularity\": 5837\n },\n {\n \"tag\": "dockyardman",\n \"popularity\": 5832\n },\n {\n \"tag\": "dolichopodous",\n \"popularity\": 5826\n },\n {\n \"tag\": "whiteworm",\n \"popularity\": 5821\n },\n {\n \"tag\": "atheistically",\n \"popularity\": 5816\n },\n {\n \"tag\": "nonconcern",\n \"popularity\": 5811\n },\n {\n \"tag\": "scarabaeidoid",\n \"popularity\": 5806\n },\n {\n \"tag\": "triumviri",\n \"popularity\": 5801\n },\n {\n \"tag\": "rakit",\n \"popularity\": 5796\n },\n {\n \"tag\": "leecheater",\n \"popularity\": 5791\n },\n {\n \"tag\": "Arthrostraca",\n \"popularity\": 5786\n },\n {\n \"tag\": "upknit",\n \"popularity\": 5781\n },\n {\n \"tag\": "tymbalon",\n \"popularity\": 5776\n },\n {\n \"tag\": "inventurous",\n \"popularity\": 5771\n },\n {\n \"tag\": "perradiate",\n \"popularity\": 5766\n },\n {\n \"tag\": "seer",\n \"popularity\": 5762\n },\n {\n \"tag\": "Auricularia",\n \"popularity\": 5757\n },\n {\n \"tag\": "wettish exclusivity",\n \"popularity\": 5752\n },\n {\n \"tag\": "arteriosympathectomy",\n \"popularity\": 5747\n },\n {\n \"tag\": "tunlike",\n \"popularity\": 5742\n },\n {\n \"tag\": "cephalocercal",\n \"popularity\": 5737\n },\n {\n \"tag\": "meaninglessness",\n \"popularity\": 5732\n },\n {\n \"tag\": "fountful",\n \"popularity\": 5727\n },\n {\n \"tag\": "appraisement",\n \"popularity\": 5722\n },\n {\n \"tag\": "geniculated",\n \"popularity\": 5717\n },\n {\n \"tag\": "rotator",\n \"popularity\": 5712\n },\n {\n \"tag\": "foremarch biography",\n \"popularity\": 5707\n },\n {\n \"tag\": "arid",\n \"popularity\": 5703\n },\n {\n \"tag\": "inapprehensible",\n \"popularity\": 5698\n },\n {\n \"tag\": "chlorosulphonic",\n \"popularity\": 5693\n },\n {\n \"tag\": "braguette",\n \"popularity\": 5688\n },\n {\n \"tag\": "panophthalmitis",\n \"popularity\": 5683\n },\n {\n \"tag\": "pro objurgatorily",\n \"popularity\": 5678\n },\n {\n \"tag\": "zooplasty",\n \"popularity\": 5673\n },\n {\n \"tag\": "Terebratulidae",\n \"popularity\": 5669\n },\n {\n \"tag\": "Mahran",\n \"popularity\": 5664\n },\n {\n \"tag\": "anthologize merocele",\n \"popularity\": 5659\n },\n {\n \"tag\": "firecracker chiropractic",\n \"popularity\": 5654\n },\n {\n \"tag\": "tenorist",\n \"popularity\": 5649\n },\n {\n \"tag\": "amphitene",\n \"popularity\": 5645\n },\n {\n \"tag\": "silverbush toadstone",\n \"popularity\": 5640\n },\n {\n \"tag\": "entozoological",\n \"popularity\": 5635\n },\n {\n \"tag\": "trustlessness",\n \"popularity\": 5630\n },\n {\n \"tag\": "reassay",\n \"popularity\": 5625\n },\n {\n \"tag\": "chrysalides",\n \"popularity\": 5621\n },\n {\n \"tag\": "truncation",\n \"popularity\": 5616\n },\n {\n \"tag\": "unwavered mausoleal",\n \"popularity\": 5611\n },\n {\n \"tag\": "unserrated",\n \"popularity\": 5606\n },\n {\n \"tag\": "frampler",\n \"popularity\": 5602\n },\n {\n \"tag\": "celestial",\n \"popularity\": 5597\n },\n {\n \"tag\": "depreter",\n \"popularity\": 5592\n },\n {\n \"tag\": "retaliate",\n \"popularity\": 5588\n },\n {\n \"tag\": "decempunctate",\n \"popularity\": 5583\n },\n {\n \"tag\": "submitter",\n \"popularity\": 5578\n },\n {\n \"tag\": "phenothiazine",\n \"popularity\": 5573\n },\n {\n \"tag\": "hobbledehoyish",\n \"popularity\": 5569\n },\n {\n \"tag\": "erraticness",\n \"popularity\": 5564\n },\n {\n \"tag\": "ovariodysneuria",\n \"popularity\": 5559\n },\n {\n \"tag\": "puja",\n \"popularity\": 5555\n },\n {\n \"tag\": "cesspool",\n \"popularity\": 5550\n },\n {\n \"tag\": "sonation",\n \"popularity\": 5545\n },\n {\n \"tag\": "moggan",\n \"popularity\": 5541\n },\n {\n \"tag\": "overjutting",\n \"popularity\": 5536\n },\n {\n \"tag\": "cohobate",\n \"popularity\": 5531\n },\n {\n \"tag\": "Distoma",\n \"popularity\": 5527\n },\n {\n \"tag\": "Plectognathi",\n \"popularity\": 5522\n },\n {\n \"tag\": "dumple caliphate",\n \"popularity\": 5517\n },\n {\n \"tag\": "shiko",\n \"popularity\": 5513\n },\n {\n \"tag\": "downness",\n \"popularity\": 5508\n },\n {\n \"tag\": "whippletree",\n \"popularity\": 5504\n },\n {\n \"tag\": "nymphaeum",\n \"popularity\": 5499\n },\n {\n \"tag\": "there trest",\n \"popularity\": 5494\n },\n {\n \"tag\": "psychrometer",\n \"popularity\": 5490\n },\n {\n \"tag\": "pyelograph",\n \"popularity\": 5485\n },\n {\n \"tag\": "unsalvable",\n \"popularity\": 5481\n },\n {\n \"tag\": "bescreen",\n \"popularity\": 5476\n },\n {\n \"tag\": "cushy",\n \"popularity\": 5471\n },\n {\n \"tag\": "plicatolobate",\n \"popularity\": 5467\n },\n {\n \"tag\": "lakie",\n \"popularity\": 5462\n },\n {\n \"tag\": "anthropodeoxycholic",\n \"popularity\": 5458\n },\n {\n \"tag\": "resatisfaction",\n \"popularity\": 5453\n },\n {\n \"tag\": "unravelment unaccidental",\n \"popularity\": 5449\n },\n {\n \"tag\": "telewriter monogeneous",\n \"popularity\": 5444\n },\n {\n \"tag\": "unsabred",\n \"popularity\": 5440\n },\n {\n \"tag\": "startlingly",\n \"popularity\": 5435\n },\n {\n \"tag\": "Aralia",\n \"popularity\": 5431\n },\n {\n \"tag\": "alamonti",\n \"popularity\": 5426\n },\n {\n \"tag\": "Franklinization",\n \"popularity\": 5422\n },\n {\n \"tag\": "parliament",\n \"popularity\": 5417\n },\n {\n \"tag\": "schoolkeeper",\n \"popularity\": 5413\n },\n {\n \"tag\": "nonsociety",\n \"popularity\": 5408\n },\n {\n \"tag\": "parenthetic",\n \"popularity\": 5404\n },\n {\n \"tag\": "stog",\n \"popularity\": 5399\n },\n {\n \"tag\": "Pristipomidae",\n \"popularity\": 5395\n },\n {\n \"tag\": "exocarp",\n \"popularity\": 5390\n },\n {\n \"tag\": "monaxonial",\n \"popularity\": 5386\n },\n {\n \"tag\": "tramroad",\n \"popularity\": 5381\n },\n {\n \"tag\": "hookah",\n \"popularity\": 5377\n },\n {\n \"tag\": "saccharonic",\n \"popularity\": 5372\n },\n {\n \"tag\": "perimetrium",\n \"popularity\": 5368\n },\n {\n \"tag\": "libelluloid",\n \"popularity\": 5364\n },\n {\n \"tag\": "overrunningly",\n \"popularity\": 5359\n },\n {\n \"tag\": "untwister",\n \"popularity\": 5355\n },\n {\n \"tag\": "ninnyhammer",\n \"popularity\": 5350\n },\n {\n \"tag\": "metranate",\n \"popularity\": 5346\n },\n {\n \"tag\": "sarcoblast",\n \"popularity\": 5341\n },\n {\n \"tag\": "porkish",\n \"popularity\": 5337\n },\n {\n \"tag\": "chauvinistic",\n \"popularity\": 5333\n },\n {\n \"tag\": "sexagesimal",\n \"popularity\": 5328\n },\n {\n \"tag\": "hematogenic",\n \"popularity\": 5324\n },\n {\n \"tag\": "selfpreservatory",\n \"popularity\": 5320\n },\n {\n \"tag\": "myelauxe",\n \"popularity\": 5315\n },\n {\n \"tag\": "triply",\n \"popularity\": 5311\n },\n {\n \"tag\": "metaphysicous",\n \"popularity\": 5306\n },\n {\n \"tag\": "vitrinoid",\n \"popularity\": 5302\n },\n {\n \"tag\": "glabellae",\n \"popularity\": 5298\n },\n {\n \"tag\": "moonlighter",\n \"popularity\": 5293\n },\n {\n \"tag\": "monotheistically epexegetical",\n \"popularity\": 5289\n },\n {\n \"tag\": "pseudolateral",\n \"popularity\": 5285\n },\n {\n \"tag\": "heptamethylene",\n \"popularity\": 5280\n },\n {\n \"tag\": "salvadora",\n \"popularity\": 5276\n },\n {\n \"tag\": "unjovial diphenylthiourea",\n \"popularity\": 5272\n },\n {\n \"tag\": "thievishness",\n \"popularity\": 5268\n },\n {\n \"tag\": "unridable",\n \"popularity\": 5263\n },\n {\n \"tag\": "underhandedly",\n \"popularity\": 5259\n },\n {\n \"tag\": "fungiform",\n \"popularity\": 5255\n },\n {\n \"tag\": "scruffle",\n \"popularity\": 5250\n },\n {\n \"tag\": "preindisposition",\n \"popularity\": 5246\n },\n {\n \"tag\": "Amadis",\n \"popularity\": 5242\n },\n {\n \"tag\": "Culex",\n \"popularity\": 5238\n },\n {\n \"tag\": "churning",\n \"popularity\": 5233\n },\n {\n \"tag\": "imperite",\n \"popularity\": 5229\n },\n {\n \"tag\": "levorotation",\n \"popularity\": 5225\n },\n {\n \"tag\": "barbate",\n \"popularity\": 5221\n },\n {\n \"tag\": "knotwort",\n \"popularity\": 5216\n },\n {\n \"tag\": "gypsiferous",\n \"popularity\": 5212\n },\n {\n \"tag\": "tourmalinic",\n \"popularity\": 5208\n },\n {\n \"tag\": "helleboric",\n \"popularity\": 5204\n },\n {\n \"tag\": "pneumograph",\n \"popularity\": 5199\n },\n {\n \"tag\": "Peltigeraceae",\n \"popularity\": 5195\n },\n {\n \"tag\": "busine",\n \"popularity\": 5191\n },\n {\n \"tag\": "Ailuridae",\n \"popularity\": 5187\n },\n {\n \"tag\": "azotate",\n \"popularity\": 5183\n },\n {\n \"tag\": "unlikable",\n \"popularity\": 5178\n },\n {\n \"tag\": "sloyd",\n \"popularity\": 5174\n },\n {\n \"tag\": "biblioclasm",\n \"popularity\": 5170\n },\n {\n \"tag\": "Seres",\n \"popularity\": 5166\n },\n {\n \"tag\": "unaccurateness",\n \"popularity\": 5162\n },\n {\n \"tag\": "scrollwise",\n \"popularity\": 5157\n },\n {\n \"tag\": "flandowser",\n \"popularity\": 5153\n },\n {\n \"tag\": "unblackened",\n \"popularity\": 5149\n },\n {\n \"tag\": "schistosternia",\n \"popularity\": 5145\n },\n {\n \"tag\": "fuse",\n \"popularity\": 5141\n },\n {\n \"tag\": "narthecal",\n \"popularity\": 5137\n },\n {\n \"tag\": "Cueva",\n \"popularity\": 5133\n },\n {\n \"tag\": "appositeness",\n \"popularity\": 5128\n },\n {\n \"tag\": "proindustrial",\n \"popularity\": 5124\n },\n {\n \"tag\": "dermatorrhoea",\n \"popularity\": 5120\n },\n {\n \"tag\": "oxyurous tendential",\n \"popularity\": 5116\n },\n {\n \"tag\": "isopurpurin",\n \"popularity\": 5112\n },\n {\n \"tag\": "impose",\n \"popularity\": 5108\n },\n {\n \"tag\": "wordsmanship",\n \"popularity\": 5104\n },\n {\n \"tag\": "saturator",\n \"popularity\": 5100\n },\n {\n \"tag\": "Nordicity",\n \"popularity\": 5096\n },\n {\n \"tag\": "interaccuse",\n \"popularity\": 5092\n },\n {\n \"tag\": "acridinic",\n \"popularity\": 5087\n },\n {\n \"tag\": "scholion",\n \"popularity\": 5083\n },\n {\n \"tag\": "pseudoaconitine",\n \"popularity\": 5079\n },\n {\n \"tag\": "doctorial",\n \"popularity\": 5075\n },\n {\n \"tag\": "Etchimin",\n \"popularity\": 5071\n },\n {\n \"tag\": "oliviform",\n \"popularity\": 5067\n },\n {\n \"tag\": "Pele",\n \"popularity\": 5063\n },\n {\n \"tag\": "Chiromantis Progymnasium",\n \"popularity\": 5059\n },\n {\n \"tag\": "toxosis",\n \"popularity\": 5055\n },\n {\n \"tag\": "spadilla",\n \"popularity\": 5051\n },\n {\n \"tag\": "Actinopterygii",\n \"popularity\": 5047\n },\n {\n \"tag\": "untiring",\n \"popularity\": 5043\n },\n {\n \"tag\": "butyral",\n \"popularity\": 5039\n },\n {\n \"tag\": "Gymnoderinae",\n \"popularity\": 5035\n },\n {\n \"tag\": "testudo",\n \"popularity\": 5031\n },\n {\n \"tag\": "frigorify",\n \"popularity\": 5027\n },\n {\n \"tag\": "aliency",\n \"popularity\": 5023\n },\n {\n \"tag\": "jargon",\n \"popularity\": 5019\n },\n {\n \"tag\": "counterservice",\n \"popularity\": 5015\n },\n {\n \"tag\": "isostrychnine",\n \"popularity\": 5011\n },\n {\n \"tag\": "tellership",\n \"popularity\": 5007\n },\n {\n \"tag\": "miscegenetic",\n \"popularity\": 5003\n },\n {\n \"tag\": "sorcer",\n \"popularity\": 4999\n },\n {\n \"tag\": "tilewright",\n \"popularity\": 4995\n },\n {\n \"tag\": "cyanoplastid",\n \"popularity\": 4991\n },\n {\n \"tag\": "fluxionally",\n \"popularity\": 4987\n },\n {\n \"tag\": "proudhearted",\n \"popularity\": 4983\n },\n {\n \"tag\": "blithely",\n \"popularity\": 4979\n },\n {\n \"tag\": "jestproof",\n \"popularity\": 4975\n },\n {\n \"tag\": "jestwise",\n \"popularity\": 4971\n },\n {\n \"tag\": "nonassimilable",\n \"popularity\": 4967\n },\n {\n \"tag\": "compurgation",\n \"popularity\": 4964\n },\n {\n \"tag\": "unhate",\n \"popularity\": 4960\n },\n {\n \"tag\": "haplodonty",\n \"popularity\": 4956\n },\n {\n \"tag\": "cardholder",\n \"popularity\": 4952\n },\n {\n \"tag\": "rainlight megohmmeter overstout",\n \"popularity\": 4948\n },\n {\n \"tag\": "itchless",\n \"popularity\": 4944\n },\n {\n \"tag\": "begiggle",\n \"popularity\": 4940\n },\n {\n \"tag\": "chromatosphere",\n \"popularity\": 4936\n },\n {\n \"tag\": "typicality",\n \"popularity\": 4932\n },\n {\n \"tag\": "overgrown",\n \"popularity\": 4928\n },\n {\n \"tag\": "envolume",\n \"popularity\": 4925\n },\n {\n \"tag\": "pachycholia",\n \"popularity\": 4921\n },\n {\n \"tag\": "passageable",\n \"popularity\": 4917\n },\n {\n \"tag\": "pathopoiesis",\n \"popularity\": 4913\n },\n {\n \"tag\": "overbreak",\n \"popularity\": 4909\n },\n {\n \"tag\": "satyric",\n \"popularity\": 4905\n },\n {\n \"tag\": "unaudited",\n \"popularity\": 4901\n },\n {\n \"tag\": "whimble",\n \"popularity\": 4898\n },\n {\n \"tag\": "pressureless",\n \"popularity\": 4894\n },\n {\n \"tag\": "Selene",\n \"popularity\": 4890\n },\n {\n \"tag\": "slithery",\n \"popularity\": 4886\n },\n {\n \"tag\": "nondisfigurement",\n \"popularity\": 4882\n },\n {\n \"tag\": "overdelicious",\n \"popularity\": 4878\n },\n {\n \"tag\": "Perca",\n \"popularity\": 4875\n },\n {\n \"tag\": "Palladium",\n \"popularity\": 4871\n },\n {\n \"tag\": "insagacity",\n \"popularity\": 4867\n },\n {\n \"tag\": "peristoma",\n \"popularity\": 4863\n },\n {\n \"tag\": "uncreativeness",\n \"popularity\": 4859\n },\n {\n \"tag\": "incomparability surfboarding",\n \"popularity\": 4856\n },\n {\n \"tag\": "bacillar",\n \"popularity\": 4852\n },\n {\n \"tag\": "ulcerative",\n \"popularity\": 4848\n },\n {\n \"tag\": "stychomythia",\n \"popularity\": 4844\n },\n {\n \"tag\": "sesma somatics nonentry",\n \"popularity\": 4840\n },\n {\n \"tag\": "unsepulchred",\n \"popularity\": 4837\n },\n {\n \"tag\": "cephalanthium",\n \"popularity\": 4833\n },\n {\n \"tag\": "Asiaticization",\n \"popularity\": 4829\n },\n {\n \"tag\": "killeen",\n \"popularity\": 4825\n },\n {\n \"tag\": "Pseudococcus",\n \"popularity\": 4822\n },\n {\n \"tag\": "untractable",\n \"popularity\": 4818\n },\n {\n \"tag\": "apolegamic",\n \"popularity\": 4814\n },\n {\n \"tag\": "hyperpnea",\n \"popularity\": 4810\n },\n {\n \"tag\": "martyrolatry",\n \"popularity\": 4807\n },\n {\n \"tag\": "Sarmatic",\n \"popularity\": 4803\n },\n {\n \"tag\": "nonsurface",\n \"popularity\": 4799\n },\n {\n \"tag\": "adjoined",\n \"popularity\": 4796\n },\n {\n \"tag\": "vasiform",\n \"popularity\": 4792\n },\n {\n \"tag\": "tastelessness",\n \"popularity\": 4788\n },\n {\n \"tag\": "rumbo",\n \"popularity\": 4784\n },\n {\n \"tag\": "subdititious",\n \"popularity\": 4781\n },\n {\n \"tag\": "reparticipation",\n \"popularity\": 4777\n },\n {\n \"tag\": "Yorkshireism",\n \"popularity\": 4773\n },\n {\n \"tag\": "outcrow",\n \"popularity\": 4770\n },\n {\n \"tag\": "casserole",\n \"popularity\": 4766\n },\n {\n \"tag\": "semideltaic",\n \"popularity\": 4762\n },\n {\n \"tag\": "freemason",\n \"popularity\": 4759\n },\n {\n \"tag\": "catkin",\n \"popularity\": 4755\n },\n {\n \"tag\": "conscient",\n \"popularity\": 4751\n },\n {\n \"tag\": "reliably",\n \"popularity\": 4748\n },\n {\n \"tag\": "Telembi",\n \"popularity\": 4744\n },\n {\n \"tag\": "hide",\n \"popularity\": 4740\n },\n {\n \"tag\": "social",\n \"popularity\": 4737\n },\n {\n \"tag\": "ichneutic",\n \"popularity\": 4733\n },\n {\n \"tag\": "polypotome blouse pentagrammatic",\n \"popularity\": 4729\n },\n {\n \"tag\": "airdrome pesthole",\n \"popularity\": 4726\n },\n {\n \"tag\": "unportended",\n \"popularity\": 4722\n },\n {\n \"tag\": "sheerly",\n \"popularity\": 4719\n },\n {\n \"tag\": "acardiac",\n \"popularity\": 4715\n },\n {\n \"tag\": "fetor",\n \"popularity\": 4711\n },\n {\n \"tag\": "storax",\n \"popularity\": 4708\n },\n {\n \"tag\": "syndactylic",\n \"popularity\": 4704\n },\n {\n \"tag\": "otiatrics",\n \"popularity\": 4700\n },\n {\n \"tag\": "range",\n \"popularity\": 4697\n },\n {\n \"tag\": "branchway",\n \"popularity\": 4693\n },\n {\n \"tag\": "beatific",\n \"popularity\": 4690\n },\n {\n \"tag\": "Rugosa",\n \"popularity\": 4686\n },\n {\n \"tag\": "rafty",\n \"popularity\": 4682\n },\n {\n \"tag\": "gapy",\n \"popularity\": 4679\n },\n {\n \"tag\": "heterocercal",\n \"popularity\": 4675\n },\n {\n \"tag\": "actinopterygious",\n \"popularity\": 4672\n },\n {\n \"tag\": "glauconite",\n \"popularity\": 4668\n },\n {\n \"tag\": "limbless priest",\n \"popularity\": 4665\n },\n {\n \"tag\": "chrysene",\n \"popularity\": 4661\n },\n {\n \"tag\": "isentropic",\n \"popularity\": 4658\n },\n {\n \"tag\": "lairdess",\n \"popularity\": 4654\n },\n {\n \"tag\": "butterhead choliambic",\n \"popularity\": 4650\n },\n {\n \"tag\": "hexaseme",\n \"popularity\": 4647\n },\n {\n \"tag\": "treeify",\n \"popularity\": 4643\n },\n {\n \"tag\": "coronetted fructify",\n \"popularity\": 4640\n },\n {\n \"tag\": "admiralty",\n \"popularity\": 4636\n },\n {\n \"tag\": "Flosculariidae",\n \"popularity\": 4633\n },\n {\n \"tag\": "limaceous",\n \"popularity\": 4629\n },\n {\n \"tag\": "subterconscious",\n \"popularity\": 4626\n },\n {\n \"tag\": "stayless",\n \"popularity\": 4622\n },\n {\n \"tag\": "psha",\n \"popularity\": 4619\n },\n {\n \"tag\": "Mediterraneanize",\n \"popularity\": 4615\n },\n {\n \"tag\": "impenetrably",\n \"popularity\": 4612\n },\n {\n \"tag\": "Myrmeleonidae",\n \"popularity\": 4608\n },\n {\n \"tag\": "germander",\n \"popularity\": 4605\n },\n {\n \"tag\": "Buri",\n \"popularity\": 4601\n },\n {\n \"tag\": "papyrotamia",\n \"popularity\": 4598\n },\n {\n \"tag\": "Toxylon",\n \"popularity\": 4594\n },\n {\n \"tag\": "batatilla",\n \"popularity\": 4591\n },\n {\n \"tag\": "fabella assumer",\n \"popularity\": 4587\n },\n {\n \"tag\": "macromethod",\n \"popularity\": 4584\n },\n {\n \"tag\": "Blechnum",\n \"popularity\": 4580\n },\n {\n \"tag\": "pantography",\n \"popularity\": 4577\n },\n {\n \"tag\": "seminovel",\n \"popularity\": 4574\n },\n {\n \"tag\": "disembarrassment",\n \"popularity\": 4570\n },\n {\n \"tag\": "bushmaking",\n \"popularity\": 4567\n },\n {\n \"tag\": "neurosis",\n \"popularity\": 4563\n },\n {\n \"tag\": "Animalia",\n \"popularity\": 4560\n },\n {\n \"tag\": "Bernice",\n \"popularity\": 4556\n },\n {\n \"tag\": "wisen",\n \"popularity\": 4553\n },\n {\n \"tag\": "subhymenium",\n \"popularity\": 4549\n },\n {\n \"tag\": "esophagomycosis",\n \"popularity\": 4546\n },\n {\n \"tag\": "wireworks",\n \"popularity\": 4543\n },\n {\n \"tag\": "Sabellidae",\n \"popularity\": 4539\n },\n {\n \"tag\": "fustianish",\n \"popularity\": 4536\n },\n {\n \"tag\": "professively",\n \"popularity\": 4532\n },\n {\n \"tag\": "overcorruptly",\n \"popularity\": 4529\n },\n {\n \"tag\": "overcreep",\n \"popularity\": 4526\n },\n {\n \"tag\": "Castilloa",\n \"popularity\": 4522\n },\n {\n \"tag\": "forelady Georgie",\n \"popularity\": 4519\n },\n {\n \"tag\": "outsider",\n \"popularity\": 4515\n },\n {\n \"tag\": "Enukki",\n \"popularity\": 4512\n },\n {\n \"tag\": "gypsy",\n \"popularity\": 4509\n },\n {\n \"tag\": "Passamaquoddy",\n \"popularity\": 4505\n },\n {\n \"tag\": "reposit",\n \"popularity\": 4502\n },\n {\n \"tag\": "overtenderness",\n \"popularity\": 4499\n },\n {\n \"tag\": "keratome",\n \"popularity\": 4495\n },\n {\n \"tag\": "interclavicular hypermonosyllable Susanna",\n \"popularity\": 4492\n },\n {\n \"tag\": "mispropose",\n \"popularity\": 4489\n },\n {\n \"tag\": "Membranipora",\n \"popularity\": 4485\n },\n {\n \"tag\": "lampad",\n \"popularity\": 4482\n },\n {\n \"tag\": "header",\n \"popularity\": 4479\n },\n {\n \"tag\": "triseriate",\n \"popularity\": 4475\n },\n {\n \"tag\": "distrainment",\n \"popularity\": 4472\n },\n {\n \"tag\": "staphyloplastic",\n \"popularity\": 4469\n },\n {\n \"tag\": "outscour",\n \"popularity\": 4465\n },\n {\n \"tag\": "tallowmaking",\n \"popularity\": 4462\n },\n {\n \"tag\": "plugger",\n \"popularity\": 4459\n },\n {\n \"tag\": "fashionize",\n \"popularity\": 4455\n },\n {\n \"tag\": "puzzle",\n \"popularity\": 4452\n },\n {\n \"tag\": "imbrue",\n \"popularity\": 4449\n },\n {\n \"tag\": "osteoblast",\n \"popularity\": 4445\n },\n {\n \"tag\": "Hydrocores",\n \"popularity\": 4442\n },\n {\n \"tag\": "Lutra",\n \"popularity\": 4439\n },\n {\n \"tag\": "upridge scarfy",\n \"popularity\": 4435\n },\n {\n \"tag\": "ancon taffle",\n \"popularity\": 4432\n },\n {\n \"tag\": "impest",\n \"popularity\": 4429\n },\n {\n \"tag\": "uncollatedness",\n \"popularity\": 4426\n },\n {\n \"tag\": "hypersensitize",\n \"popularity\": 4422\n },\n {\n \"tag\": "autographically",\n \"popularity\": 4419\n },\n {\n \"tag\": "louther",\n \"popularity\": 4416\n },\n {\n \"tag\": "Ollie",\n \"popularity\": 4413\n },\n {\n \"tag\": "recompensate",\n \"popularity\": 4409\n },\n {\n \"tag\": "Shan",\n \"popularity\": 4406\n },\n {\n \"tag\": "brachycnemic",\n \"popularity\": 4403\n },\n {\n \"tag\": "Carinatae",\n \"popularity\": 4399\n },\n {\n \"tag\": "geotherm",\n \"popularity\": 4396\n },\n {\n \"tag\": "sawback",\n \"popularity\": 4393\n },\n {\n \"tag\": "Novatianist",\n \"popularity\": 4390\n },\n {\n \"tag\": "reapproach",\n \"popularity\": 4387\n },\n {\n \"tag\": "myelopoietic",\n \"popularity\": 4383\n },\n {\n \"tag\": "cyanin",\n \"popularity\": 4380\n },\n {\n \"tag\": "unsmutted",\n \"popularity\": 4377\n },\n {\n \"tag\": "nonpapist",\n \"popularity\": 4374\n },\n {\n \"tag\": "transbaikalian",\n \"popularity\": 4370\n },\n {\n \"tag\": "connately",\n \"popularity\": 4367\n },\n {\n \"tag\": "tenderize iterance",\n \"popularity\": 4364\n },\n {\n \"tag\": "hydrostatical",\n \"popularity\": 4361\n },\n {\n \"tag\": "unflag",\n \"popularity\": 4358\n },\n {\n \"tag\": "translate",\n \"popularity\": 4354\n },\n {\n \"tag\": "Scorzonera",\n \"popularity\": 4351\n },\n {\n \"tag\": "uncomforted",\n \"popularity\": 4348\n },\n {\n \"tag\": "risser varied",\n \"popularity\": 4345\n },\n {\n \"tag\": "plumbate",\n \"popularity\": 4342\n },\n {\n \"tag\": "Usneaceae",\n \"popularity\": 4338\n },\n {\n \"tag\": "fohat",\n \"popularity\": 4335\n },\n {\n \"tag\": "slagging",\n \"popularity\": 4332\n },\n {\n \"tag\": "superserious",\n \"popularity\": 4329\n },\n {\n \"tag\": "theocracy",\n \"popularity\": 4326\n },\n {\n \"tag\": "valonia",\n \"popularity\": 4323\n },\n {\n \"tag\": "Sapindales",\n \"popularity\": 4319\n },\n {\n \"tag\": "palaeozoologist",\n \"popularity\": 4316\n },\n {\n \"tag\": "yalb",\n \"popularity\": 4313\n },\n {\n \"tag\": "unviewed",\n \"popularity\": 4310\n },\n {\n \"tag\": "polyarteritis",\n \"popularity\": 4307\n },\n {\n \"tag\": "vectorial",\n \"popularity\": 4304\n },\n {\n \"tag\": "skimpingly",\n \"popularity\": 4301\n },\n {\n \"tag\": "athort",\n \"popularity\": 4297\n },\n {\n \"tag\": "tribofluorescence",\n \"popularity\": 4294\n },\n {\n \"tag\": "benzonitrol",\n \"popularity\": 4291\n },\n {\n \"tag\": "swiller subobtuse subjacency",\n \"popularity\": 4288\n },\n {\n \"tag\": "uncompassed",\n \"popularity\": 4285\n },\n {\n \"tag\": "cacochymia",\n \"popularity\": 4282\n },\n {\n \"tag\": "commensalist butadiene",\n \"popularity\": 4279\n },\n {\n \"tag\": "culpable",\n \"popularity\": 4276\n },\n {\n \"tag\": "contributive",\n \"popularity\": 4273\n },\n {\n \"tag\": "attemperately",\n \"popularity\": 4269\n },\n {\n \"tag\": "spelt",\n \"popularity\": 4266\n },\n {\n \"tag\": "exoneration",\n \"popularity\": 4263\n },\n {\n \"tag\": "antivivisectionist",\n \"popularity\": 4260\n },\n {\n \"tag\": "granitification",\n \"popularity\": 4257\n },\n {\n \"tag\": "palladize",\n \"popularity\": 4254\n },\n {\n \"tag\": "marksmanship",\n \"popularity\": 4251\n },\n {\n \"tag\": "bullydom",\n \"popularity\": 4248\n },\n {\n \"tag\": "spirality",\n \"popularity\": 4245\n },\n {\n \"tag\": "caliginous",\n \"popularity\": 4242\n },\n {\n \"tag\": "reportedly",\n \"popularity\": 4239\n },\n {\n \"tag\": "polyad",\n \"popularity\": 4236\n },\n {\n \"tag\": "arthroempyesis",\n \"popularity\": 4233\n },\n {\n \"tag\": "semibay facultatively",\n \"popularity\": 4229\n },\n {\n \"tag\": "metastatically",\n \"popularity\": 4226\n },\n {\n \"tag\": "prophetically",\n \"popularity\": 4223\n },\n {\n \"tag\": "Linguatula elapid",\n \"popularity\": 4220\n },\n {\n \"tag\": "pyknatom",\n \"popularity\": 4217\n },\n {\n \"tag\": "centimeter",\n \"popularity\": 4214\n },\n {\n \"tag\": "mensurate",\n \"popularity\": 4211\n },\n {\n \"tag\": "migraine",\n \"popularity\": 4208\n },\n {\n \"tag\": "pentagamist",\n \"popularity\": 4205\n },\n {\n \"tag\": "querken",\n \"popularity\": 4202\n },\n {\n \"tag\": "ambulance",\n \"popularity\": 4199\n },\n {\n \"tag\": "Stokavian",\n \"popularity\": 4196\n },\n {\n \"tag\": "malvasian",\n \"popularity\": 4193\n },\n {\n \"tag\": "uncouthsome",\n \"popularity\": 4190\n },\n {\n \"tag\": "readable",\n \"popularity\": 4187\n },\n {\n \"tag\": "enlodge",\n \"popularity\": 4184\n },\n {\n \"tag\": "plasterwise Appendiculariidae perspectograph",\n \"popularity\": 4181\n },\n {\n \"tag\": "inkweed",\n \"popularity\": 4178\n },\n {\n \"tag\": "streep",\n \"popularity\": 4175\n },\n {\n \"tag\": "diadelphian cultured",\n \"popularity\": 4172\n },\n {\n \"tag\": "hymenopterous",\n \"popularity\": 4169\n },\n {\n \"tag\": "unexorableness",\n \"popularity\": 4166\n },\n {\n \"tag\": "cascaron",\n \"popularity\": 4163\n },\n {\n \"tag\": "undaintiness",\n \"popularity\": 4160\n },\n {\n \"tag\": "Curtana",\n \"popularity\": 4157\n },\n {\n \"tag\": "scurvied",\n \"popularity\": 4154\n },\n {\n \"tag\": "molluscoidal",\n \"popularity\": 4151\n },\n {\n \"tag\": "yurt",\n \"popularity\": 4148\n },\n {\n \"tag\": "deciduitis",\n \"popularity\": 4145\n },\n {\n \"tag\": "creephole",\n \"popularity\": 4142\n },\n {\n \"tag\": "quatrefeuille",\n \"popularity\": 4139\n },\n {\n \"tag\": "bicapitate adenomatome",\n \"popularity\": 4136\n },\n {\n \"tag\": "damassin",\n \"popularity\": 4134\n },\n {\n \"tag\": "planching",\n \"popularity\": 4131\n },\n {\n \"tag\": "dashedly inferential",\n \"popularity\": 4128\n },\n {\n \"tag\": "lobe",\n \"popularity\": 4125\n },\n {\n \"tag\": "Hyrachyus",\n \"popularity\": 4122\n },\n {\n \"tag\": "knab",\n \"popularity\": 4119\n },\n {\n \"tag\": "discohexaster",\n \"popularity\": 4116\n },\n {\n \"tag\": "malign",\n \"popularity\": 4113\n },\n {\n \"tag\": "pedagoguism",\n \"popularity\": 4110\n },\n {\n \"tag\": "shrubbery",\n \"popularity\": 4107\n },\n {\n \"tag\": "undershrub",\n \"popularity\": 4104\n },\n {\n \"tag\": "bureaucrat",\n \"popularity\": 4101\n },\n {\n \"tag\": "pantaleon",\n \"popularity\": 4098\n },\n {\n \"tag\": "mesoventral",\n \"popularity\": 4096\n }]';
+
+var log2 = Math.log(2);
+var tagInfo = tagInfoJSON.parseJSON(function(a, b) { if (a == "popularity") { return Math.log(b) / log2; } else {return b; } });
+
+function makeTagCloud(tagInfo)
+{
+ var output = '<div class="tagCloud" style="width: 100%">';
+
+ tagInfo.sort(function(a, b) { if (a.tag < b.tag) { return -1; } else if (a.tag == b.tag) { return 0; } else return 1; });
+
+ for (var i = 0; i < tagInfo.length; i++) {
+ var tag = tagInfo[i].tag;
+
+ var validates = true;
+ for (var j = 0; j < tag.length; j++) {
+ var ch = tag.charCodeAt(j);
+ if (ch < 0x20 || ch >= 0x7f) {
+ validates = false;
+ break;
+ }
+ }
+
+ if (!validates)
+ continue;
+
+ var url = "http://example.com/tag/" + tag.replace(" ", "").toLowerCase();
+ var popularity = tagInfo[i].popularity;
+ var color = 'rgb(' + Math.floor(255 * (popularity - 12) / 20) + ', 0, 255)';
+ output += ' <a href="' + url + '" style="font-size: ' + popularity + 'px; color: ' + color + '">' + tag + '</a> \n';
+ }
+
+ output += '</div>';
+ output.replace(" ", "&nbsp;");
+
+ return output;
+}
+
+var tagcloud = makeTagCloud(tagInfo);
+tagInfo = null;
diff --git a/tests/benchmarks/script/sunspider/tests/string-unpack-code.js b/tests/benchmarks/script/sunspider/tests/string-unpack-code.js
new file mode 100644
index 0000000000..e6330f15f3
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-unpack-code.js
@@ -0,0 +1,68 @@
+// This test case unpacks the compressed code for the MochiKit,
+// jQuery, Dojo and Prototype JavaScript libraries.
+
+/***
+ MochiKit.MochiKit 1.3.1 : PACKED VERSION
+ THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please
+ diff against the source tree, not this file.
+
+ See <http://mochikit.com/> for documentation, downloads, license, etc.
+
+ (c) 2005 Bob Ippolito. All rights Reserved.
+***/
+
+for (var i = 0; i < 2; i++) {
+
+var decompressedMochiKit = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(H(1q)!="L"){1q.2X("B.J")}if(H(B)=="L"){B={}}if(H(B.J)=="L"){B.J={}}B.J.1Y="1.3.1";B.J.1r="B.J";B.J.2l=G(7V,vR){if(7V===O){7V={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){7V[k]=o[k]}}}F 7V};B.J.2l(B.J,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},4f:G(n){if(M.K===0){n=1}F G(){F n++}},4L:G(mw){u me=M.2U;if(M.K==1){me.1U=mw;F Y me()}},bg:G(vQ){u X=[];u m=B.J;u aw=m.1R(O,M);1M(aw.K){u o=aw.2P();if(o&&H(o)=="3n"&&H(o.K)=="2y"){R(u i=o.K-1;i>=0;i--){aw.e9(o[i])}}N{X.1c(o)}}F X},1R:G(7U,1i,av){if(!av){av=0}if(1i){u l=1i.K;if(H(l)!="2y"){if(H(B.15)!="L"){1i=B.15.2G(1i);l=1i.K}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(!7U){7U=[]}R(u i=av;i<l;i++){7U.1c(1i[i])}}F 7U},8Z:G(5g,1i){if(5g===O){5g={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){u v=o[k];if(H(5g[k])=="3n"&&H(v)=="3n"){M.2U(5g[k],v)}N{5g[k]=v}}}}F 5g},lO:G(6c,1i){if(6c===O){6c={}}R(u i=1;i<M.K;i++){u o=M[i];R(u k in o){if(!(k in 6c)){6c[k]=o[k]}}}F 6c},lN:G(1i){u fj=[];R(u mv in 1i){fj.1c(mv)}F fj},lM:G(1i){u fh=[];u e;R(u fi in 1i){u v;1f{v=1i[fi]}1e(e){2V}fh.1c([fi,v])}F fh},jq:G(fg,ff,fe){fe.1U=Y B.J.5a(fg.1r+"."+ff);fg[ff]=fe},4i:{7L:G(a){F!!a},vP:G(a){F!a},eE:G(a){F a},2E:G(a){F~a},vO:G(a){F-a},vN:G(a,b){F a+b},vM:G(a,b){F a-b},4u:G(a,b){F a/b},vL:G(a,b){F a%b},vK:G(a,b){F a*b},3W:G(a,b){F a&b},or:G(a,b){F a|b},vJ:G(a,b){F a^b},vI:G(a,b){F a<<b},vH:G(a,b){F a>>b},vG:G(a,b){F a>>>b},eq:G(a,b){F a==b},ne:G(a,b){F a!=b},gt:G(a,b){F a>b},ge:G(a,b){F a>=b},lt:G(a,b){F a<b},le:G(a,b){F a<=b},vF:G(a,b){F B.J.2f(a,b)===0},vE:G(a,b){F B.J.2f(a,b)!==0},vD:G(a,b){F B.J.2f(a,b)==1},vC:G(a,b){F B.J.2f(a,b)!=-1},vB:G(a,b){F B.J.2f(a,b)==-1},vA:G(a,b){F B.J.2f(a,b)!=1},vz:G(a,b){F a&&b},vy:G(a,b){F a||b},vx:G(a,b){F b in a}},24:G(mu){F G(){F D[mu].1w(D,M)}},lL:G(mt){F G(a9){F a9[mt]}},66:G(){u fd={};R(u i=0;i<M.K;i++){u 6b=M[i];fd[6b]=6b}F G(){R(u i=0;i<M.K;i++){if(!(H(M[i])in fd)){F 1m}}F 1h}},lJ:G(){R(u i=0;i<M.K;i++){if(M[i]!==O){F 1m}}F 1h},lK:G(){R(u i=0;i<M.K;i++){u o=M[i];if(!(H(o)=="L"||o===O)){F 1m}}F 1h},lI:G(1i){F!B.J.7e.1w(D,M)},7e:G(1i){R(u i=0;i<M.K;i++){u o=M[i];if(!(o&&o.K)){F 1m}}F 1h},3A:G(){R(u i=0;i<M.K;i++){u o=M[i];u 6b=H(o);if((6b!="3n"&&!(6b=="G"&&H(o.vw)=="G"))||o===O||H(o.K)!="2y"){F 1m}}F 1h},eN:G(){R(u i=0;i<M.K;i++){u o=M[i];if(H(o)!="3n"||o===O||H(o.9P)!="G"){F 1m}}F 1h},lH:G(fn){if(fn===O){F B.J.1R(O,M,1)}u fc=[];R(u i=1;i<M.K;i++){fc.1c(fn(M[i]))}F fc},2r:G(fn,1g){u m=B.J;u 6a=B.15;u fb=m.3A;if(M.K<=2){if(!fb(1g)){if(6a){1g=6a.2G(1g);if(fn===O){F 1g}}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){F m.1R(O,1g)}u 69=[];R(u i=0;i<1g.K;i++){69.1c(fn(1g[i]))}F 69}N{if(fn===O){fn=7o}u 7T=O;R(i=1;i<M.K;i++){if(!fb(M[i])){if(6a){F 6a.2G(6a.4c.1w(O,M))}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}u l=M[i].K;if(7T===O||7T>l){7T=l}}69=[];R(i=0;i<7T;i++){u fa=[];R(u j=1;j<M.K;j++){fa.1c(M[j][i])}69.1c(fn.1w(D,fa))}F 69}},lG:G(fn){u f9=[];if(fn===O){fn=B.J.4i.7L}R(u i=1;i<M.K;i++){u o=M[i];if(fn(o)){f9.1c(o)}}F f9},47:G(fn,1g,7S){u aq=[];u m=B.J;if(!m.3A(1g)){if(B.15){1g=B.15.2G(1g)}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){fn=m.4i.7L}if(H(7o.1U.47)=="G"){F 7o.1U.47.cz(1g,fn,7S)}N{if(H(7S)=="L"||7S===O){R(u i=0;i<1g.K;i++){u o=1g[i];if(fn(o)){aq.1c(o)}}}N{R(i=0;i<1g.K;i++){o=1g[i];if(fn.cz(7S,o)){aq.1c(o)}}}}F aq},mq:G(7R){F G(){hd(M.K){3j 0:F 7R();3j 1:F 7R(M[0]);3j 2:F 7R(M[0],M[1]);3j 3:F 7R(M[0],M[1],M[2])}u f8=[];R(u i=0;i<M.K;i++){f8.1c("M["+i+"]")}F dB("(1A("+f8.2b(",")+"))")}},lv:G(mr,ms){u m=B.J;F m.1O.1w(D,m.1R([ms,mr],M,2))},1O:G(3c,4o){if(H(3c)=="1n"){3c=4o[3c]}u ao=3c.f5;u 5f=3c.am;u f6=3c.f7;u m=B.J;if(H(3c)=="G"&&H(3c.1w)=="L"){3c=m.mq(3c)}if(H(ao)!="G"){ao=3c}if(H(4o)!="L"){f6=4o}if(H(5f)=="L"){5f=[]}N{5f=5f.9T()}m.1R(5f,M,2);u 7Q=G(){u ap=M;u me=M.2U;if(me.am.K>0){ap=m.2o(me.am,ap)}u 4o=me.f7;if(!4o){4o=D}F me.f5.1w(4o,ap)};7Q.f7=f6;7Q.f5=ao;7Q.am=5f;F 7Q},lF:G(7P){u mp=B.J.1O;R(u k in 7P){u f4=7P[k];if(H(f4)=="G"){7P[k]=mp(f4,7P)}}},5u:G(mo,mn,ml,mk){B.J.ae.5M(mo,mn,ml,mk)},mj:{"5L":1h,"1n":1h,"2y":1h},2f:G(a,b){if(a==b){F 0}u f3=(H(a)=="L"||a===O);u f2=(H(b)=="L"||b===O);if(f3&&f2){F 0}N{if(f3){F-1}N{if(f2){F 1}}}u m=B.J;u f1=m.mj;if(!(H(a)in f1&&H(b)in f1)){1f{F m.ae.3C(a,b)}1e(e){if(e!=m.4d){14 e}}}if(a<b){F-1}N{if(a>b){F 1}}u f0=m.U;14 Y 3p(f0(a)+" 3W "+f0(b)+" 9v 2E be vv")},eM:G(a,b){F B.J.2f(a.9P(),b.9P())},eL:G(a,b){u mi=B.J.2f;u 7O=a.K;u al=0;if(7O>b.K){al=1;7O=b.K}N{if(7O<b.K){al=-1}}R(u i=0;i<7O;i++){u 4j=mi(a[i],b[i]);if(4j){F 4j}}F al},7M:G(mh,mg,mf,md){B.J.ad.5M(mh,mg,mf,md)},U:G(o){if(H(o)=="L"){F"L"}N{if(o===O){F"O"}}1f{if(H(o.1K)=="G"){F o.1K()}N{if(H(o.U)=="G"&&o.U!=M.2U){F o.U()}}F B.J.ad.3C(o)}1e(e){if(H(o.1r)=="1n"&&(o.1l==cZ.1U.1l||o.1l==vu.1U.1l)){F o.1r}}1f{u eZ=(o+"")}1e(e){F"["+H(o)+"]"}if(H(o)=="G"){o=eZ.23(/^\\s+/,"");u 5n=o.2A("{");if(5n!=-1){o=o.3H(0,5n)+"{...}"}}F eZ},eK:G(o){u m=B.J;F"["+m.2r(m.U,o).2b(", ")+"]"},ac:G(o){F("\\""+o.23(/(["\\\\])/g,"\\\\$1")+"\\"").23(/[\\f]/g,"\\\\f").23(/[\\b]/g,"\\\\b").23(/[\\n]/g,"\\\\n").23(/[\\t]/g,"\\\\t").23(/[\\r]/g,"\\\\r")},eJ:G(o){F o+""},ly:G(mc,mb,ma,m9){B.J.ab.5M(mc,mb,ma,m9)},lx:G(){F dB("("+M[0]+")")},lz:G(o){u 5e=H(o);if(5e=="L"){F"L"}N{if(5e=="2y"||5e=="5L"){F o+""}N{if(o===O){F"O"}}}u m=B.J;u eY=m.ac;if(5e=="1n"){F eY(o)}u me=M.2U;u 3S;if(H(o.m8)=="G"){3S=o.m8();if(o!==3S){F me(3S)}}if(H(o.m7)=="G"){3S=o.m7();if(o!==3S){F me(3S)}}if(5e!="G"&&H(o.K)=="2y"){u X=[];R(u i=0;i<o.K;i++){u 2i=me(o[i]);if(H(2i)!="1n"){2i="L"}X.1c(2i)}F"["+X.2b(", ")+"]"}1f{3S=m.ab.3C(o);F me(3S)}1e(e){if(e!=m.4d){14 e}}if(5e=="G"){F O}X=[];R(u k in o){u ak;if(H(k)=="2y"){ak="\\""+k+"\\""}N{if(H(k)=="1n"){ak=eY(k)}N{2V}}2i=me(o[k]);if(H(2i)!="1n"){2V}X.1c(ak+":"+2i)}F"{"+X.2b(", ")+"}"},lE:G(a,b){F(B.J.2f(a,b)===0)},lD:G(eX,4n){if(eX.K!=4n.K){F 1m}F(B.J.2f(eX,4n)===0)},2o:G(){u eW=[];u m6=B.J.1R;R(u i=0;i<M.K;i++){m6(eW,M[i])}F eW},eR:G(2h){u m=B.J;u eU=m.2f;if(M.K==1){F G(a,b){F eU(a[2h],b[2h])}}u eV=m.1R(O,M);F G(a,b){u aj=0;R(u i=0;(aj===0)&&(i<eV.K);i++){u 2h=eV[i];aj=eU(a[2h],b[2h])}F aj}},lC:G(2h){u m5=B.J.eR.1w(D,M);F G(a,b){F m5(b,a)}},2z:G(m4){u m=B.J;F m.1O.1w(D,m.1R([m4,L],M,1))},67:G(m0,1g){if(1g.K===0){F O}u ai=1g[0];u m3=B.J.2f;R(u i=1;i<1g.K;i++){u o=1g[i];if(m3(o,ai)==m0){ai=o}}F ai},lB:G(){F B.J.67(1,M)},lA:G(){F B.J.67(-1,M)},bi:G(1g,lY,lZ,3B){if(H(3B)=="L"||3B===O){3B=1g.K}R(u i=(lZ||0);i<3B;i++){if(1g[i]===lY){F i}}F-1},eO:G(1g,lW,lX,3B){if(H(3B)=="L"||3B===O){3B=1g.K}u 4j=B.J.2f;R(u i=(lX||0);i<3B;i++){if(4j(1g[i],lW)===0){F i}}F-1},d4:G(1j,lV){u ah=[1j];u lU=B.J.1R;1M(ah.K){u X=lV(ah.2P());if(X){lU(ah,X)}}},3f:G(ag){u 2w=ag.1r;if(H(2w)=="L"){2w=""}N{2w=2w+"."}R(u 1b in ag){u o=ag[1b];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+1b}1e(e){}}}},dw:G(3s,68){if(H(B.S)!="L"&&M.K==1&&(H(3s)=="1n"||(H(3s.3T)!="L"&&3s.3T>0))){u kv=B.S.d5(3s);3s=kv[0];68=kv[1]}N{if(M.K==1){u o=3s;3s=[];68=[];R(u k in o){u v=o[k];if(H(v)!="G"){3s.1c(k);68.1c(v)}}}}u W=[];u lT=28.2a(3s.K,68.K);u eT=B.J.af;R(u i=0;i<lT;i++){v=68[i];if(H(v)!="L"&&v!==O){W.1c(eT(3s[i])+"="+eT(v))}}F W.2b("&")},lw:G(lS,lQ){u 7N=lS.23(/\\+/g,"%20").2R("&");u o={};u 5d;if(H(lR)!="L"){5d=lR}N{5d=vt}if(lQ){R(u i=0;i<7N.K;i++){u 2n=7N[i].2R("=");u 1b=5d(2n[0]);u 4n=o[1b];if(!(4n 2C 7o)){4n=[];o[1b]=4n}4n.1c(5d(2n[1]))}}N{R(i=0;i<7N.K;i++){2n=7N[i].2R("=");o[5d(2n[0])]=5d(2n[1])}}F o}});B.J.4a=G(){D.4m=[]};B.J.4a.1U={5M:G(1b,eS,3y,lP){if(lP){D.4m.e9([1b,eS,3y])}N{D.4m.1c([1b,eS,3y])}},3C:G(){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[1].1w(D,M)){F 2n[2].1w(D,M)}}14 B.J.4d},vs:G(1b){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[0]==1b){D.4m.4y(i,1);F 1h}}F 1m}};B.J.1z=["4f","4L","1R","2l","8Z","lO","lN","lM","5a","4i","24","lL","66","lo","ln","lK","lJ","lI","7e","3A","eN","lH","2r","lG","47","1O","lF","4d","4a","5u","2f","7M","U","lE","lD","2o","eR","lC","2z","lm","67","lp","eI","lB","lA","d4","ll","af","dw","lz","ly","lx","lw","eO","bi","bg","lv"];B.J.1W=["3f","ae","ad","ab","eM","eL","eK","ac","eJ"];B.J.2Y=G(lu,eP){if(H(B.eQ)=="L"){B.eQ=(B.3d||(H(1x)=="L"&&H(1q)=="L"))}if(!B.eQ){F}u 1p=eP.2k[":1p"];R(u i=0;i<1p.K;i++){lu[1p[i]]=eP[1p[i]]}};B.J.2d=G(){u m=D;m.vr=m.24;m.vq=m.eO;if(H(ls)!="L"){m.af=G(lr){F ls(lr).23(/\\\'/g,"%27")}}N{m.af=G(lq){F vp(lq).23(/\\+/g,"%2B").23(/\\"/g,"%22").W.23(/\\\'/g,"%27")}}m.5a=G(1b){D.43=1b;D.1b=1b};m.5a.1U=Y 2x();m.2l(m.5a.1U,{U:G(){if(D.43&&D.43!=D.1b){F D.1b+"("+m.U(D.43)+")"}N{F D.1b+"()"}},1l:m.24("U")});m.4d=Y m.5a("B.J.4d");m.lp=m.2z(m.67,1);m.eI=m.2z(m.67,-1);m.lo=m.66("G");m.ln=m.66("L");m.lm=m.2z(m.2l,O);m.ll=m.2z(m.2r,O);m.ae=Y m.4a();m.5u("vo",m.eN,m.eM);m.5u("ej",m.3A,m.eL);m.ad=Y m.4a();m.7M("ej",m.3A,m.eK);m.7M("1n",m.66("1n"),m.ac);m.7M("vn",m.66("2y","5L"),m.eJ);m.ab=Y m.4a();u 1p=m.2o(m.1z,m.1W);m.2k={":3e":m.2o(m.1W),":1p":1p};m.3f(D)};B.J.2d();if(!B.3d){2f=B.J.2f}B.J.2Y(D,B.J);if(H(1q)!="L"){1q.2X("B.15");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.15 3F on B.J!"}if(H(B.15)=="L"){B.15={}}B.15.1r="B.15";B.15.1Y="1.3.1";B.J.2l(B.15,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},9W:G(1b,lk,lj,lh){B.15.9Y.5M(1b,lk,lj,lh)},1Q:G(3R,lg){u I=B.15;if(M.K==2){F I.9Z(G(a){F a!=lg},3R)}if(H(3R.1a)=="G"){F 3R}N{if(H(3R.1Q)=="G"){F 3R.1Q()}}1f{F I.9Y.3C(3R)}1e(e){u m=B.J;if(e==m.4d){e=Y 3p(H(3R)+": "+m.U(3R)+" is 2E vm")}14 e}},eu:G(n){if(!n){n=0}u m=B.J;F{U:G(){F"eu("+n+")"},1l:m.24("U"),1a:m.4f(n)}},et:G(p){u I=B.15;u m=B.J;u 1g=[];u lf=I.1Q(p);F{U:G(){F"et(...)"},1l:m.24("U"),1a:G(){1f{u W=lf.1a();1g.1c(W);F W}1e(e){if(e!=I.25){14 e}if(1g.K===0){D.1a=G(){14 I.25}}N{u i=-1;D.1a=G(){i=(i+1)%1g.K;F 1g[i]}}F D.1a()}}}},7b:G(Q,n){u m=B.J;if(H(n)=="L"){F{U:G(){F"7b("+m.U(Q)+")"},1l:m.24("U"),1a:G(){F Q}}}F{U:G(){F"7b("+m.U(Q)+", "+n+")"},1l:m.24("U"),1a:G(){if(n<=0){14 B.15.25}n-=1;F Q}}},1a:G(ld){F ld.1a()},es:G(p,q){u m=B.J;u 1a=B.15.1a;u lc=m.2r(1Q,M);F{U:G(){F"es(...)"},1l:m.24("U"),1a:G(){F m.2r(1a,lc)}}},a1:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a1(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(3b(W)){F W}}F L}}},a0:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a0(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(!3b(W)){F W}}F L}}},er:G(1V){u I=B.15;u m=B.J;1V=I.1Q(1V);u 5c=0;u 2J=0;u 3a=1;u i=-1;if(M.K==2){2J=M[1]}N{if(M.K==3){5c=M[1];2J=M[2]}N{5c=M[1];2J=M[2];3a=M[3]}}F{U:G(){F"er("+["...",5c,2J,3a].2b(", ")+")"},1l:m.24("U"),1a:G(){u W;1M(i<5c){W=1V.1a();i++}if(5c>=2J){14 I.25}5c+=3a;F W}}},4c:G(aa,p,q){u m=B.J;u I=B.15;u lb=m.2r(I.1Q,m.1R(O,M,1));u 2r=m.2r;u 1a=I.1a;F{U:G(){F"4c(...)"},1l:m.24("U"),1a:G(){F aa.1w(D,2r(1a,lb))}}},ep:G(aa,1V,I){1V=B.15.1Q(1V);u m=B.J;F{U:G(){F"ep(...)"},1l:m.24("U"),1a:G(){F aa.1w(I,1V.1a())}}},55:G(p,q){u I=B.15;u m=B.J;if(M.K==1){F I.1Q(M[0])}u 64=m.2r(I.1Q,M);F{U:G(){F"55(...)"},1l:m.24("U"),1a:G(){1M(64.K>1){1f{F 64[0].1a()}1e(e){if(e!=I.25){14 e}64.2P()}}if(64.K==1){u a9=64.2P();D.1a=m.1O("1a",a9);F D.1a()}14 I.25}}},9Z:G(3b,1V){u I=B.15;1V=I.1Q(1V);F{U:G(){F"9Z(...)"},1l:B.J.24("U"),1a:G(){u W=1V.1a();if(!3b(W)){D.1a=G(){14 I.25};D.1a()}F W}}},eo:G(3b,1V){1V=B.15.1Q(1V);u m=B.J;u 1O=m.1O;F{"U":G(){F"eo(...)"},"1l":m.24("U"),"1a":G(){1M(1h){u W=1V.1a();if(!3b(W)){2K}}D.1a=1O("1a",1V);F W}}},a7:G(63,2u,la){2u.62[63]=-1;u m=B.J;u l9=m.eI;F{U:G(){F"en("+63+", ...)"},1l:m.24("U"),1a:G(){u W;u i=2u.62[63];if(i==2u.29){W=la.1a();2u.a8.1c(W);2u.29+=1;2u.62[63]+=1}N{W=2u.a8[i-2u.2a];2u.62[63]+=1;if(i==2u.2a&&l9(2u.62)!=2u.2a){2u.2a+=1;2u.a8.2P()}}F W}}},en:G(a6,n){u W=[];u 2u={"62":[],"a8":[],"29":-1,"2a":-1};if(M.K==1){n=2}u I=B.15;a6=I.1Q(a6);u a7=I.a7;R(u i=0;i<n;i++){W.1c(a7(i,2u,a6))}F W},2G:G(4l){u m=B.J;if(H(4l.9T)=="G"){F 4l.9T()}N{if(m.3A(4l)){F m.2o(4l)}}u I=B.15;4l=I.1Q(4l);u W=[];1f{1M(1h){W.1c(4l.1a())}}1e(e){if(e!=I.25){14 e}F W}F L},7H:G(fn,7K,l8){u i=0;u x=l8;u I=B.15;7K=I.1Q(7K);if(M.K<3){1f{x=7K.1a()}1e(e){if(e==I.25){e=Y 3p("7H() of vl vk vj no vi 3m")}14 e}i++}1f{1M(1h){x=fn(x,7K.1a())}}1e(e){if(e!=I.25){14 e}}F x},7I:G(){u 4k=0;u 2J=0;u 3a=1;if(M.K==1){2J=M[0]}N{if(M.K==2){4k=M[0];2J=M[1]}N{if(M.K==3){4k=M[0];2J=M[1];3a=M[2]}N{14 Y 3p("7I() vh 1, 2, or 3 M!")}}}if(3a===0){14 Y 3p("7I() 3a 5p 2E be 0")}F{1a:G(){if((3a>0&&4k>=2J)||(3a<0&&4k<=2J)){14 B.15.25}u W=4k;4k+=3a;F W},U:G(){F"7I("+[4k,2J,3a].2b(", ")+")"},1l:B.J.24("U")}},l0:G(a5,l7){u x=l7||0;u I=B.15;a5=I.1Q(a5);1f{1M(1h){x+=a5.1a()}}1e(e){if(e!=I.25){14 e}}F x},em:G(a4){u I=B.15;a4=I.1Q(a4);1f{1M(1h){a4.1a()}}1e(e){if(e!=I.25){14 e}}},9a:G(7J,1A,I){u m=B.J;if(M.K>2){1A=m.1O(1A,I)}if(m.3A(7J)){1f{R(u i=0;i<7J.K;i++){1A(7J[i])}}1e(e){if(e!=B.15.25){14 e}}}N{I=B.15;I.em(I.4c(1A,7J))}},kZ:G(l6,1A){u I=B.15;1f{I.a0(1A,l6).1a();F 1m}1e(e){if(e!=I.25){14 e}F 1h}},kY:G(l5,4j){u W=B.15.2G(l5);if(M.K==1){4j=B.J.2f}W.iz(4j);F W},kX:G(l4){u W=B.15.2G(l4);W.vg();F W},kW:G(l3,1A){u I=B.15;1f{I.a1(1A,l3).1a();F 1h}1e(e){if(e!=I.25){14 e}F 1m}},kV:G(1g,5b){if(B.J.3A(5b)){R(u i=0;i<5b.K;i++){1g.1c(5b[i])}}N{u I=B.15;5b=I.1Q(5b);1f{1M(1h){1g.1c(5b.1a())}}1e(e){if(e!=I.25){14 e}}}F 1g},ek:G(a3,eH){u m=B.J;u I=B.15;if(M.K<2){eH=m.4i.eE}a3=I.1Q(a3);u pk=L;u k=L;u v;G eF(){v=a3.1a();k=eH(v)}G l2(){u 7j=v;v=L;F 7j}u eG=1h;F{U:G(){F"ek(...)"},1a:G(){1M(k==pk){eF();if(eG){eG=1m;2K}}pk=k;F[k,{1a:G(){if(v==L){eF()}if(k!=pk){14 I.25}F l2()}}]}}},kU:G(a2,eD){u m=B.J;u I=B.15;if(M.K<2){eD=m.4i.eE}a2=I.1Q(a2);u ey=[];u eA=1h;u ez;1M(1h){1f{u eB=a2.1a();u 2h=eD(eB)}1e(e){if(e==I.25){2K}14 e}if(eA||2h!=ez){u eC=[];ey.1c([2h,eC])}eC.1c(eB);eA=1m;ez=2h}F ey},9X:G(ex){u i=0;F{U:G(){F"9X(...)"},1l:B.J.24("U"),1a:G(){if(i>=ex.K){14 B.15.25}F ex[i++]}}},eh:G(ew){F(ew&&H(ew.ei)=="G")},9V:G(l1){F{U:G(){F"9V(...)"},1l:B.J.24("U"),1a:G(){u W=l1.ei();if(W===O||W===L){14 B.15.25}F W}}}});B.15.1W=["9Y","9X","eh","9V",];B.15.1z=["25","9W","1Q","eu","et","7b","1a","es","a1","a0","er","4c","ep","55","9Z","eo","en","2G","7H","7I","l0","em","9a","kZ","kY","kX","kW","kV","ek","kU"];B.15.2d=G(){u m=B.J;D.25=Y m.5a("25");D.9Y=Y m.4a();D.9W("ej",m.3A,D.9X);D.9W("ei",D.eh,D.9V);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.15.2d();if(!B.3d){7H=B.15.7H}B.J.2Y(D,B.15);if(H(1q)!="L"){1q.2X("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1H 3F on B.J!"}if(H(B.1H)=="L"){B.1H={}}B.1H.1r="B.1H";B.1H.1Y="1.3.1";B.1H.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1H.1l=G(){F D.1K()};B.1H.1z=["5C","49","7A","kR","2L","5Z","kG","ch","kE","kC"];B.1H.1W=["ef","e8","e7"];B.1H.49=G(1P,kT,3z){D.1P=1P;D.3N=kT;D.3z=3z;D.vf=Y 3Q()};B.1H.49.1U={U:G(){u m=B.J;F"49("+m.2r(m.U,[D.1P,D.3N,D.3z]).2b(", ")+")"},1l:B.J.24("U")};B.J.2l(B.1H,{ef:G(7F){u I=B.1H;if(H(7F)=="1n"){7F=I.5C[7F]}F G(1t){u 7G=1t.3N;if(H(7G)=="1n"){7G=I.5C[7G]}F 7G>=7F}},e8:G(){u kS=B.1H.49;R(u i=0;i<M.K;i++){if(!(M[i]2C kS)){F 1m}}F 1h},e7:G(a,b){F B.J.2f([a.3N,a.3z],[b.3N,b.3z])},kR:G(1t){cq("1P: "+1t.1P+"\\ve: "+1t.3N+"\\vd: "+1t.3z.2b(" "))}});B.1H.7A=G(7E){D.4f=0;if(H(7E)=="L"||7E===O){7E=-1}D.ec=7E;D.4h=[];D.7C={};D.e5=1m};B.1H.7A.1U={vc:G(){D.4h.4y(0,D.4h.K)},kK:G(1t){if(H(2O)!="L"&&2O.eg&&2O.eg.5Z){2O.eg.5Z(1t)}N{if(H(7h)!="L"&&7h.kQ){7h.kQ(1t)}N{if(H(5X)=="G"){5X(1t)}}}},kL:G(1t){R(u k in D.7C){u 2n=D.7C[k];if(2n.kO!=k||(2n[0]&&!2n[0](1t))){2V}2n[1](1t)}},hE:G(ee,7D,kP){if(H(7D)=="1n"){7D=B.1H.ef(7D)}u ed=[7D,kP];ed.kO=ee;D.7C[ee]=ed},c9:G(kN){gi D.7C[kN]},kH:G(kM,vb){u 1t=Y B.1H.49(D.4f,kM,B.J.1R(O,M,1));D.4h.1c(1t);D.kL(1t);if(D.e5){D.kK(1t.3N+": "+1t.3z.2b(" "))}D.4f+=1;1M(D.ec>=0&&D.4h.K>D.ec){D.4h.2P()}},c8:G(9U){u ea=0;if(!(H(9U)=="L"||9U===O)){ea=28.29(0,D.4h.K-9U)}F D.4h.9T(ea)},kJ:G(7B){if(H(7B)=="L"||7B===O){7B=30}u 9S=D.c8(7B);if(9S.K){u 1g=2r(G(m){F"\\n ["+m.1P+"] "+m.3N+": "+m.3z.2b(" ")},9S);1g.e9("va "+9S.K+" v9:");F 1g.2b("")}F""},v8:G(kI){if(H(B.1I)=="L"){cq(D.kJ())}N{B.1I.bY(kI||1m)}}};B.1H.2d=G(){D.5C={8M:40,8L:50,8K:30,8J:20,8I:10};u m=B.J;m.5u("49",D.e8,D.e7);u 61=m.2z;u e6=D.7A;u 60=e6.1U.kH;m.2l(D.7A.1U,{kF:61(60,"8I"),5Z:61(60,"8J"),dE:61(60,"8M"),kD:61(60,"8L"),kB:61(60,"8K")});u I=D;u 5Y=G(1b){F G(){I.2L[1b].1w(I.2L,M)}};D.5Z=5Y("5Z");D.kG=5Y("dE");D.ch=5Y("kF");D.kE=5Y("kD");D.kC=5Y("kB");D.2L=Y e6();D.2L.e5=1h;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};if(H(5X)=="L"&&H(2v)!="L"&&2v.kA&&H(kz)!="L"){5X=G(){5X.3G=M;u ev=2v.kA("v7");ev.v6("5X",1m,1h);kz(ev)}}B.1H.2d();B.J.2Y(D,B.1H);if(H(1q)!="L"){1q.2X("B.1D")}if(H(B)=="L"){B={}}if(H(B.1D)=="L"){B.1D={}}B.1D.1r="B.1D";B.1D.1Y="1.3.1";B.1D.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1D.1l=G(){F D.1K()};B.1D.ks=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u 7z=1y.2R("-");if(7z.K===0){F O}F Y 3Q(7z[0],7z[1]-1,7z[2])};B.1D.ky=/(\\d{4,})(?:-(\\d{1,2})(?:-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{1,2})(?::(\\d{1,2})(?:\\.(\\d+))?)?(?:(Z)|([+-])(\\d{1,2})(?::(\\d{1,2}))?)?)?)?)?/;B.1D.kr=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u X=1y.3C(B.1D.ky);if(H(X)=="L"||X===O){F O}u 5W,7y,7x,9R,2a,9Q,7w;5W=3w(X[1],10);if(H(X[2])=="L"||X[2]===""){F Y 3Q(5W)}7y=3w(X[2],10)-1;7x=3w(X[3],10);if(H(X[4])=="L"||X[4]===""){F Y 3Q(5W,7y,7x)}9R=3w(X[4],10);2a=3w(X[5],10);9Q=(H(X[6])!="L"&&X[6]!=="")?3w(X[6],10):0;if(H(X[7])!="L"&&X[7]!==""){7w=28.ha(c5*4M("0."+X[7]))}N{7w=0}if((H(X[8])=="L"||X[8]==="")&&(H(X[9])=="L"||X[9]==="")){F Y 3Q(5W,7y,7x,9R,2a,9Q,7w)}u 58;if(H(X[9])!="L"&&X[9]!==""){58=3w(X[10],10)*v5;if(H(X[11])!="L"&&X[11]!==""){58+=3w(X[11],10)*kw}if(X[9]=="-"){58=-58}}N{58=0}F Y 3Q(3Q.v4(5W,7y,7x,9R,2a,9Q,7w)-58)};B.1D.dY=G(2g,kx){if(H(2g)=="L"||2g===O){F O}u hh=2g.v3();u mm=2g.v2();u ss=2g.v1();u 1g=[((kx&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];F 1g.2b(":")};B.1D.kq=G(2g,7v){if(H(2g)=="L"||2g===O){F O}u ku=7v?"T":" ";u kt=7v?"Z":"";if(7v){2g=Y 3Q(2g.9P()+(2g.v0()*kw))}F B.1D.dX(2g)+ku+B.1D.dY(2g,7v)+kt};B.1D.dX=G(2g){if(H(2g)=="L"||2g===O){F O}u e4=B.1D.e3;F[2g.dZ(),e4(2g.e1()+1),e4(2g.e0())].2b("-")};B.1D.kp=G(d){d=d+"";if(H(d)!="1n"||d.K===0){F O}u a=d.2R("/");F Y 3Q(a[2],a[0]-1,a[1])};B.1D.e3=G(n){F(n>9)?n:"0"+n};B.1D.ko=G(d){if(H(d)=="L"||d===O){F O}u e2=B.1D.e3;F[e2(d.e1()+1),e2(d.e0()),d.dZ()].2b("/")};B.1D.kn=G(d){if(H(d)=="L"||d===O){F O}F[d.e1()+1,d.e0(),d.dZ()].2b("/")};B.1D.1z=["ks","kr","dY","kq","dX","kp","ko","kn"];B.1D.1W=[];B.1D.2k={":3e":B.1D.1z,":1p":B.1D.1z};B.1D.2d=G(){u 2w=D.1r+".";R(u k in D){u o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1D.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1D)}N{(G(km,dW){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dW.2k[":1p"];R(u i=0;i<1p.K;i++){km[1p[i]]=dW[1p[i]]}}})(D,B.1D)}if(H(1q)!="L"){1q.2X("B.1s")}if(H(B)=="L"){B={}}if(H(B.1s)=="L"){B.1s={}}B.1s.1r="B.1s";B.1s.1Y="1.3.1";B.1s.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1s.1l=G(){F D.1K()};B.1s.ke=G(kl,kk,kj,ki,kh,dV,kg,9N,kf){F G(1P){1P=4M(1P);if(H(1P)=="L"||1P===O||k8(1P)){F kl}u 9L=kk;u 9K=kj;if(1P<0){1P=-1P}N{9L=9L.23(/-/,"")}u me=M.2U;u 9M=B.1s.dJ(ki);if(kh){1P=1P*3k;9K=9M.9y+9K}1P=B.1s.dK(1P,dV);u 9O=1P.2R(/\\./);u 3r=9O[0];u 3P=(9O.K==1)?"":9O[1];u X="";1M(3r.K<kg){3r="0"+3r}if(9N){1M(3r.K>9N){u i=3r.K-9N;X=9M.9A+3r.2W(i,3r.K)+X;3r=3r.2W(0,i)}}X=3r+X;if(dV>0){1M(3P.K<kf){3P=3P+"0"}X=X+9M.9z+3P}F 9L+X+9K}};B.1s.k5=G(9J,9H,9G){if(H(9H)=="L"){9H=""}u 3q=9J.3C(/((?:[0#]+,)?[0#]+)(?:\\.([0#]+))?(%)?/);if(!3q){14 3p("uZ uY")}u 7u=9J.3H(0,3q.c6);u kd=9J.3H(3q.c6+3q[0].K);if(7u.uX(/-/)==-1){7u=7u+"-"}u 9I=3q[1];u 3P=(H(3q[2])=="1n"&&3q[2]!="")?3q[2]:"";u kc=(H(3q[3])=="1n"&&3q[3]!="");u dU=9I.2R(/,/);u 9F;if(H(9G)=="L"){9G="dG"}if(dU.K==1){9F=O}N{9F=dU[1].K}u ka=9I.K-9I.23(/0/g,"").K;u k9=3P.K-3P.23(/0/g,"").K;u kb=3P.K;u W=B.1s.ke(9H,7u,kd,9G,kc,kb,ka,9F,k9);u m=B.J;if(m){u fn=M.2U;u 3G=m.2o(M);W.U=G(){F[I.1r,"(",2r(m.U,3G).2b(", "),")"].2b("")}}F W};B.1s.dJ=G(4g){if(H(4g)=="L"||4g===O){4g="dG"}if(H(4g)=="1n"){u W=B.1s.5V[4g];if(H(W)=="1n"){W=M.2U(W);B.1s.5V[4g]=W}F W}N{F 4g}};B.1s.k4=G(dT,9E){if(9E){u X=dT/9E;if(!k8(X)){F B.1s.9B(dT/9E)}}F"0"};B.1s.9B=G(dS){u dR=(dS<0?"-":"");u s=28.8B(28.uW(dS)*3k).1l();if(s=="0"){F s}if(s.K<3){1M(s.3Z(s.K-1)=="0"){s=s.2W(0,s.K-1)}F dR+"0."+s}u 5E=dR+s.2W(0,s.K-2);u 7t=s.2W(s.K-2,s.K);if(7t=="uV"){F 5E}N{if(7t.3Z(1)=="0"){F 5E+"."+7t.3Z(0)}N{F 5E+"."+7t}}};B.1s.dI=G(1y,dQ){1y=1y+"";if(H(1y)!="1n"){F O}if(!dQ){F 1y.23(/^\\s+/,"")}N{F 1y.23(Y 8V("^["+dQ+"]+"),"")}};B.1s.dH=G(1y,dP){1y=1y+"";if(H(1y)!="1n"){F O}if(!dP){F 1y.23(/\\s+$/,"")}N{F 1y.23(Y 8V("["+dP+"]+$"),"")}};B.1s.k2=G(1y,dO){u I=B.1s;F I.dH(I.dI(1y,dO),dO)};B.1s.dL=G(9D,9C){9D=28.8B(9D*28.dN(10,9C));u X=(9D*28.dN(10,-9C)).6I(9C);if(X.3Z(0)=="."){X="0"+X}F X};B.1s.dK=G(k7,dM){F B.1s.dL(k7+0.5*28.dN(10,-dM),dM)};B.1s.k3=G(k6){F B.1s.9B(3k*k6)+"%"};B.1s.1z=["dL","dK","k5","dJ","k4","9B","k3","dI","dH","k2"];B.1s.5V={k1:{9A:",",9z:".",9y:"%"},uU:{9A:".",9z:",",9y:"%"},uT:{9A:" ",9z:",",9y:"%"},"dG":"k1"};B.1s.1W=[];B.1s.2k={":1p":B.1s.1z,":3e":B.1s.1z};B.1s.2d=G(){u 2w=D.1r+".";u k,v,o;R(k in D.5V){o=D.5V[k];if(H(o)=="3n"){o.U=G(){F D.1r};o.1r=2w+"5V."+k}}R(k in D){o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1s.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1s)}N{(G(k0,dF){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dF.2k[":1p"];R(u i=0;i<1p.K;i++){k0[1p[i]]=dF[1p[i]]}}})(D,B.1s)}if(H(1q)!="L"){1q.2X("B.1k");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1k 3F on B.J!"}if(H(B.1k)=="L"){B.1k={}}B.1k.1r="B.1k";B.1k.1Y="1.3.1";B.1k.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1k.1l=G(){F D.1K()};B.1k.2t=G(jZ){D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jZ;D.7l=1m;D.7r=1m};B.1k.2t.1U={U:G(){u 7s;if(D.2H==-1){7s="uS"}N{if(D.2H===0){7s="uR"}N{7s="dE"}}F"2t("+D.id+", "+7s+")"},1l:B.J.24("U"),7n:B.J.4f(),jY:G(){u I=B.1k;if(D.2H==-1){if(D.7m){D.7m(D)}N{D.7l=1h}if(D.2H==-1){D.52(Y I.di(D))}}N{if((D.2H===0)&&(D.53[0]2C I.2t)){D.53[0].jY()}}},jQ:G(){D.54++},jX:G(){D.54--;if((D.54===0)&&(D.2H>=0)){D.9u()}},jR:G(X){D.9x(X);D.jX()},9x:G(X){D.2H=((X 2C 2x)?1:0);D.53[D.2H]=X;D.9u()},dD:G(){if(D.2H!=-1){if(!D.7l){14 Y B.1k.dj(D)}D.7l=1m;F}},3o:G(X){D.dD();if(X 2C B.1k.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}D.9x(X)},52:G(X){D.dD();u I=B.1k;if(X 2C I.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}if(!(X 2C 2x)){X=Y I.9p(X)}D.9x(X)},jP:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,fn)},5Q:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,O)},jA:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(O,fn)},9w:G(cb,eb){if(D.7r){14 Y 2x("uQ uP 9v 2E be re-uO")}D.55.1c([cb,eb]);if(D.2H>=0){D.9u()}F D},9u:G(){u dC=D.55;u 56=D.2H;u X=D.53[56];u I=D;u cb=O;1M(dC.K>0&&D.54===0){u 2n=dC.2P();u f=2n[56];if(f===O){2V}1f{X=f(X);56=((X 2C 2x)?1:0);if(X 2C B.1k.2t){cb=G(X){I.jR(X)};D.jQ()}}1e(3O){56=1;if(!(3O 2C 2x)){3O=Y B.1k.9p(3O)}X=3O}}D.2H=56;D.53[56]=X;if(cb&&D.54){X.jP(cb);X.7r=1h}}};B.J.2l(B.1k,{dk:G(){F dB("("+M[0].jN+")")},dp:G(uN){u d=Y B.1k.2t();d.3o.1w(d,M);F d},9q:G(uM){u d=Y B.1k.2t();d.52.1w(d,M);F d},do:G(){u I=M.2U;if(!I.7q){u dy=[G(){F Y 7q()},G(){F Y dA("jO.dz")},G(){F Y dA("uL.dz")},G(){F Y dA("jO.dz.4.0")},G(){14 Y B.1k.dh("uK uJ 2E uI 7q")}];R(u i=0;i<dy.K;i++){u 1A=dy[i];1f{I.7q=1A;F 1A()}1e(e){}}}F I.7q()},dx:G(){},jK:G(d){if(D.uH==4){1f{D.5T=O}1e(e){1f{D.5T=B.1k.dx}1e(e){}}u 5U=O;1f{5U=D.jm;if(!5U&&B.J.7e(D.jN)){5U=jM}}1e(e){}if(5U==hQ||5U==jM){d.3o(D)}N{u 3O=Y B.1k.dg(D,"uG uF");if(3O.2y){d.52(3O)}N{d.52(3O)}}}},jL:G(2s){1f{2s.5T=O}1e(e){1f{2s.5T=B.1k.dx}1e(e){}}2s.uE()},dl:G(2s,7p){if(H(7p)=="L"||7p===O){7p=""}u m=B.J;u I=B.1k;u d=Y I.2t(m.2z(I.jL,2s));1f{2s.5T=m.1O(I.jK,2s,d);2s.uD(7p)}1e(e){1f{2s.5T=O}1e(uC){}d.52(e)}F d},dn:G(5F){u I=B.1k;u 2s=I.do();if(M.K>1){u m=B.J;u qs=m.dw.1w(O,m.1R(O,M,1));if(qs){5F+="?"+qs}}2s.cp("uB",5F,1h);F I.dl(2s)},jv:G(5F){u I=B.1k;u d=I.dn.1w(I,M);d=d.5Q(I.dk);F d},dm:G(jJ,dv){u d=Y B.1k.2t();u m=B.J;if(H(dv)!="L"){d.5Q(G(){F dv})}u jI=uA(m.1O("3o",d),28.8B(jJ*c5));d.7m=G(){1f{uz(jI)}1e(e){}};F d},ju:G(jH,1A){u m=B.J;u jG=m.2z.1w(m,m.1R(O,M,1));F B.1k.dm(jH).5Q(G(X){F jG()})}});B.1k.5O=G(){D.5S=[];D.4e=1m;D.id=D.7n()};B.1k.5O.1U={bX:B.1k.5O,uy:G(){d=Y B.1k.2t();if(D.4e){D.5S.1c(d)}N{D.4e=1h;d.3o(D)}F d},jF:G(){if(!D.4e){14 3p("ux to jF an jE 5O")}D.4e=1m;if(D.5S.K>0){D.4e=1h;D.5S.2P().3o(D)}},7n:B.J.4f(),U:G(){u 9t;if(D.4e){9t="4e, "+D.5S.K+" 5S"}N{9t="jE"}F"5O("+D.id+", "+9t+")"},1l:B.J.24("U")};B.1k.7i=G(2G,du,jC,jB,jD){D.2G=2G;D.9r=Y 7o(D.2G.K);D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jD;D.7l=1m;if(D.2G.K===0&&!du){D.3o(D.9r)}D.dr=0;D.jz=du;D.jy=jC;D.jx=jB;u 9s=0;B.J.2r(B.J.1O(G(d){d.5Q(B.J.1O(D.dt,D),9s,1h);d.jA(B.J.1O(D.dt,D),9s,1m);9s+=1},D),D.2G)};B.J.2l(B.1k.7i.1U,B.1k.2t.1U);B.J.2l(B.1k.7i.1U,{dt:G(ds,7k,5R){D.9r[ds]=[7k,5R];D.dr+=1;if(D.2H!==0){if(7k&&D.jz){D.3o([ds,5R])}N{if(!7k&&D.jy){D.52(5R)}N{if(D.dr==D.2G.K){D.3o(D.9r)}}}}if(!7k&&D.jx){5R=O}F 5R}});B.1k.jt=G(jw){u d=Y B.1k.7i(jw,1m,1h,1m);d.5Q(G(dq){u 7j=[];R(u i=0;i<dq.K;i++){7j.1c(dq[i][1])}F 7j});F d};B.1k.jr=G(1A){u I=B.1k;u 5P;1f{u r=1A.1w(O,B.J.1R([],M,1));if(r 2C I.2t){5P=r}N{if(r 2C 2x){5P=I.9q(r)}N{5P=I.dp(r)}}}1e(e){5P=I.9q(e)}F 5P};B.1k.1z=["dj","di","dh","9p","dg","2t","dp","9q","do","dn","jv","dm","ju","dl","5O","7i","jt","jr"];B.1k.1W=["dk"];B.1k.2d=G(){u m=B.J;u ne=m.2z(m.jq,D);ne("dj",G(jp){D.jo=jp});ne("di",G(jn){D.jo=jn});ne("dh",G(1t){D.43=1t});ne("9p",G(1t){D.43=1t});ne("dg",G(2s,1t){D.2s=2s;D.43=1t;1f{D.2y=2s.jm}1e(e){}});D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1k.2d();B.J.2Y(D,B.1k);if(H(1q)!="L"){1q.2X("B.S");1q.2M("B.15")}if(H(1x)!="L"){1x.26("B.15",[])}1f{if(H(B.15)=="L"){14""}}1e(e){14"B.S 3F on B.15!"}if(H(B.S)=="L"){B.S={}}B.S.1r="B.S";B.S.1Y="1.3.1";B.S.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.S.1l=G(){F D.1K()};B.S.1z=["d5","cr","b9","95","94","j3","9k","cX","cw","iT","iV","4X","9j","iQ","hS","cs","ia","i9","i8","i7","i6","i5","i4","hV","i3","i2","i1","cu","hW","ct","i0","hZ","hY","hX","P","io","il","ik","ij","cm","ih","ii","ig","ie","ic","cv","8d","A","6m","ib","1E","$","4q","aH","cO","cN","iM","5G","iK","9d","9e","iH","iD","9c","iB","cG","97","hU","hT","iw","jh","jb","j6","j5","jk","jl"];B.S.1W=["9b"];B.S.5N=G(w,h){D.w=w;D.h=h};B.S.5N.1U.U=G(){u U=B.J.U;F"{w: "+U(D.w)+", h: "+U(D.h)+"}"};B.S.5t=G(x,y){D.x=x;D.y=y};B.S.5t.1U.U=G(){u U=B.J.U;F"{x: "+U(D.x)+", y: "+U(D.y)+"}"};B.S.5t.1U.1l=G(){F D.U()};B.J.2l(B.S,{jl:G(Q,o){Q=B.S.1E(Q);B.S.4X(Q,{"1T":{"9o":o,"-hL-9o":o,"-uw-9o":o,"47":" uv(9o="+(o*3k)+")"}})},jk:G(){u d=Y B.S.5N();u w=B.S.3X;u b=B.S.1Z.5s;if(w.jj){d.w=w.jj;d.h=w.uu}N{if(b.dd.9n){d.w=b.dd.9n;d.h=b.dd.ji}N{if(b&&b.9n){d.w=b.9n;d.h=b.ji}}}F d},jh:G(Q){u I=B.S;if(H(Q.w)=="2y"||H(Q.h)=="2y"){F Y I.5N(Q.w||0,Q.h||0)}Q=I.1E(Q);if(!Q){F L}if(I.4q(Q,"3u")!="98"){F Y I.5N(Q.jg||0,Q.ci||0)}u s=Q.1T;u je=s.dc;u jf=s.6P;s.dc="fR";s.6P="j8";s.3u="";u jd=Q.jg;u jc=Q.ci;s.3u="98";s.6P=jf;s.dc=je;F Y I.5N(jd,jc)},jb:G(Q,4Z){u I=B.S;Q=I.1E(Q);if(!Q){F L}u c=Y I.5t(0,0);if(Q.x&&Q.y){c.x+=Q.x||0;c.y+=Q.y||0;F c}N{if(Q.3t===O||I.4q(Q,"3u")=="98"){F L}}u 51=O;u 2j=O;u d=B.S.1Z;u de=d.7Z;u b=d.5s;if(Q.ja){51=Q.ja();c.x+=51.2I+(de.6y||b.6y)-(de.8q||b.8q);c.y+=51.3D+(de.4C||b.4C)-(de.8p||b.8p)}N{if(d.j9){51=d.j9(Q);c.x+=51.x;c.y+=51.y}N{if(Q.8g){c.x+=Q.db;c.y+=Q.da;2j=Q.8g;if(2j!=Q){1M(2j){c.x+=2j.db;c.y+=2j.da;2j=2j.8g}}u ua=ut.us.8G();if((H(7h)!="L"&&4M(7h.ur())<9)||(ua.2A("uq")!=-1&&I.4q(Q,"6P")=="j8")){c.x-=b.db;c.y-=b.da}}}}if(H(4Z)!="L"){4Z=M.2U(4Z);if(4Z){c.x-=(4Z.x||0);c.y-=(4Z.y||0)}}if(Q.3t){2j=Q.3t}N{2j=O}1M(2j&&2j.j7!="uo"&&2j.j7!="co"){c.x-=2j.6y;c.y-=2j.4C;if(2j.3t){2j=2j.3t}N{2j=O}}F c},j6:G(Q,d9,7g){Q=B.S.1E(Q);if(H(7g)=="L"){7g="px"}B.S.4X(Q,{"1T":{"5A":d9.w+7g,"3V":d9.h+7g}})},j5:G(Q,d8,7f){Q=B.S.1E(Q);if(H(7f)=="L"){7f="px"}B.S.4X(Q,{"1T":{"2I":d8.x+7f,"3D":d8.y+7f}})},cr:G(){F B.S.3X},b9:G(){F B.S.1Z},95:G(2m,1A){u I=B.S;u d6=I.1Z;u d7=I.un;u W;1f{I.3X=2m;I.1Z=2m.2v;W=1A()}1e(e){I.3X=d7;I.1Z=d6;14 e}I.3X=d7;I.1Z=d6;F W},d5:G(Q){u 7d=[];u 7c=[];u m=B.J;u I=B.S;if(H(Q)=="L"||Q===O){Q=I.1Z}N{Q=I.1E(Q)}m.d4(Q,G(Q){u 1b=Q.1b;if(m.7e(1b)){u 4Y=Q.cD;if(4Y=="cv"&&(Q.1J=="um"||Q.1J=="uk")&&!Q.ip){F O}if(4Y=="ct"){if(Q.j4>=0){u 9m=Q.1S[Q.j4];7d.1c(1b);7c.1c((9m.3m)?9m.3m:9m.7X);F O}7d.1c(1b);7c.1c("");F O}if(4Y=="cu"||4Y=="P"||4Y=="8d"||4Y=="6m"){F Q.5h}7d.1c(1b);7c.1c(Q.3m||"");F O}F Q.5h});F[7d,7c]},94:G(1N,1A){u I=B.S;u d3=I.1Z;u W;1f{I.1Z=1N;W=1A()}1e(e){I.1Z=d3;14 e}I.1Z=d3;F W},j3:G(1b,j2,3y,j1){B.S.9b.5M(1b,j2,3y,j1)},9k:G(1j,7a){u im=B.15;u I=B.S;u 1Q=im.1Q;u iY=im.7b;u 4c=im.4c;u iX=I.9b;u iZ=I.9k;u iW=B.J.4d;1M(1h){if(H(1j)=="L"||1j===O){F O}if(H(1j.3T)!="L"&&1j.3T>0){F 1j}if(H(1j)=="2y"||H(1j)=="5L"){1j=1j.1l()}if(H(1j)=="1n"){F I.1Z.4S(1j)}if(H(1j.j0)=="G"){1j=1j.j0(7a);2V}if(H(1j)=="G"){1j=1j(7a);2V}u 9l=O;1f{9l=1Q(1j)}1e(e){}if(9l){F 4c(iZ,9l,iY(7a))}1f{1j=iX.3C(1j,7a);2V}1e(e){if(e!=iW){14 e}}F I.1Z.4S(1j.1l())}F L},iV:G(1j,79,iU){u o={};o[79]=iU;1f{F B.S.4X(1j,o)}1e(e){}F O},iT:G(1j,79){u I=B.S;u d2=I.4U.99[79];1j=I.1E(1j);1f{if(d2){F 1j[d2]}F 1j.fm(79)}1e(e){}F O},4X:G(1j,5K){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}if(5K){u d0=B.J.8Z;if(I.4U.6X){R(u k in 5K){u v=5K[k];if(H(v)=="3n"&&H(Q[k])=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}N{u iS=I.4U.99;R(k in 5K){v=5K[k];u d1=iS[k];if(k=="1T"&&H(v)=="1n"){Q.1T.3x=v}N{if(H(d1)=="1n"){Q[d1]=v}N{if(H(Q[k])=="3n"&&H(v)=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}}}}F Q},9j:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}u 78=[I.9k(B.J.1R(O,M,1),Q)];u iR=B.J.2o;1M(78.K){u n=78.2P();if(H(n)=="L"||n===O){}N{if(H(n.3T)=="2y"){Q.2c(n)}N{78=iR(n,78)}}}F Q},iQ:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j);M[0]=Q}u cY;1M((cY=Q.6n)){Q.6S(cY)}if(M.K<2){F Q}N{F I.9j.1w(D,M)}},cX:G(1b,4b){u Q;u I=B.S;u m=B.J;if(H(4b)=="1n"||H(4b)=="2y"){u 3G=m.1R([1b,O],M,1);F M.2U.1w(D,3G)}if(H(1b)=="1n"){if(4b&&"1b"in 4b&&!I.4U.6X){1b=("<"+1b+" 1b=\\""+I.9c(4b.1b)+"\\">")}Q=I.1Z.2S(1b)}N{Q=1b}if(4b){I.4X(Q,4b)}if(M.K<=2){F Q}N{u 3G=m.1R([Q],M,2);F I.9j.1w(D,3G)}},cw:G(){u m=B.J;F m.2z.1w(D,m.1R([B.S.cX],M))},cs:G(5J,1d){u I=B.S;5J=I.1E(5J);u cW=5J.3t;if(1d){1d=I.1E(1d);cW.uj(1d,5J)}N{cW.6S(5J)}F 1d},1E:G(id){u I=B.S;if(M.K==1){F((H(id)=="1n")?I.1Z.hN(id):id)}N{F B.J.2r(I.1E,M)}},4q:G(iP,cV,cU){if(M.K==2){cU=cV}u I=B.S;u el=I.1E(iP);u 77=I.1Z;if(!el||el==77){F L}if(el.iO){F el.iO[cV]}if(H(77.5k)=="L"){F L}if(77.5k===O){F L}u 9i=77.5k.g4(el,O);if(H(9i)=="L"||9i===O){F L}F 9i.6q(cU)},aH:G(76,9g,4W){u I=B.S;if(H(76)=="L"||76===O){76="*"}if(H(4W)=="L"||4W===O){4W=I.1Z}4W=I.1E(4W);u 9h=(4W.fr(76)||I.1Z.1p);if(H(9g)=="L"||9g===O){F B.J.1R(O,9h)}u cR=[];R(u i=0;i<9h.K;i++){u cS=9h[i];u cT=cS.3M.2R(" ");R(u j=0;j<cT.K;j++){if(cT[j]==9g){cR.1c(cS);2K}}}F cR},iN:G(5I,9f){u W=G(){u cQ=M.2U.5H;R(u i=0;i<cQ.K;i++){if(cQ[i].1w(D,M)===1m){2K}}if(9f){1f{D[5I]=O}1e(e){}}};W.5H=[];F W},cO:G(cP,5I,1A,9f){u I=B.S;u 4V=cP[5I];u 75=4V;if(!(H(4V)=="G"&&H(4V.5H)=="3n"&&4V.5H!==O)){75=I.iN(5I,9f);if(H(4V)=="G"){75.5H.1c(4V)}cP[5I]=75}75.5H.1c(1A)},cN:G(1A){u I=B.S;I.cO(I.3X,"gh",1A,1h)},iM:G(74){u I=B.S;I.cN(G(){74=I.1E(74);if(74){74.ui()}})},5G:G(iL,cM){u I=B.S;u 1i=I.1E(iL);if(I.4U.6X){1i.4p("iq",cM)}N{1i.4p("3M",cM)}},iK:G(cL){u I=B.S;R(u i=1;i<M.K;i++){u 1i=I.1E(M[i]);if(!I.9d(1i,cL)){I.9e(1i,cL)}}},9d:G(iJ,73){u I=B.S;u 1i=I.1E(iJ);u 2F=1i.3M;if(2F.K===0){I.5G(1i,73);F 1h}if(2F==73){F 1m}u cK=1i.3M.2R(" ");R(u i=0;i<cK.K;i++){if(cK[i]==73){F 1m}}I.5G(1i,2F+" "+73);F 1h},9e:G(iI,cJ){u I=B.S;u 1i=I.1E(iI);u 2F=1i.3M;if(2F.K===0){F 1m}if(2F==cJ){I.5G(1i,"");F 1h}u 72=1i.3M.2R(" ");R(u i=0;i<72.K;i++){if(72[i]==cJ){72.4y(i,1);I.5G(1i,72.2b(" "));F 1h}}F 1m},iH:G(iG,iF,iE){u 1i=B.S.1E(iG);u X=B.S.9e(1i,iF);if(X){B.S.9d(1i,iE)}F X},iD:G(iC,uh){u 1i=B.S.1E(iC);u cI=1i.3M.2R(" ");R(u i=1;i<M.K;i++){u cH=1m;R(u j=0;j<cI.K;j++){if(cI[j]==M[i]){cH=1h;2K}}if(!cH){F 1m}}F 1h},9c:G(s){F s.23(/&/g,"&ug;").23(/"/g,"&uf;").23(/</g,"&lt;").23(/>/g,"&gt;")},iB:G(2q){F B.S.cG(2q).2b("")},cG:G(2q,1g){if(H(1g)=="L"||1g===O){1g=[]}u 70=[2q];u I=B.S;u cB=I.9c;u iA=I.4U;1M(70.K){2q=70.hP();if(H(2q)=="1n"){1g.1c(2q)}N{if(2q.3T==1){1g.1c("<"+2q.cD.8G());u 71=[];u cF=iA(2q);R(u i=0;i<cF.K;i++){u a=cF[i];71.1c([" ",a.1b,"=\\"",cB(a.3m),"\\""])}71.iz();R(i=0;i<71.K;i++){u cE=71[i];R(u j=0;j<cE.K;j++){1g.1c(cE[j])}}if(2q.ue()){1g.1c(">");70.1c("</"+2q.cD.8G()+">");u cC=2q.5h;R(i=cC.K-1;i>=0;i--){70.1c(cC[i])}}N{1g.1c("/>")}}N{if(2q.3T==3){1g.1c(cB(2q.iv))}}}}F 1g},97:G(ix,cA){u m=B.J;u iy=m.1R(O,M,1);B.15.9a(m.47(O,m.2r(B.S.1E,iy)),G(cA){cA.1T.3u=ix})},iw:G(1j,iu){u W=[];(G(1j){u cn=1j.5h;if(cn){R(u i=0;i<cn.K;i++){M.2U.cz(D,cn[i])}}u cy=1j.iv;if(H(cy)=="1n"){W.1c(cy)}})(B.S.1E(1j));if(iu){F W}N{F W.2b("")}},2d:G(2m){u m=B.J;D.1Z=2v;D.3X=2m;D.9b=Y m.4a();u 6Z=D.1Z.2S("cj");u 2T;if(6Z&&6Z.6Y&&6Z.6Y.K>0){u it=m.47;2T=G(1j){F it(2T.ir,1j.6Y)};2T.cx={};B.15.9a(6Z.6Y,G(a){2T.cx[a.1b]=a.3m});2T.ir=G(a){F(2T.cx[a.1b]!=a.3m)};2T.6X=1m;2T.99={"iq":"3M","ip":"ud","uc":"ub","R":"u9"}}N{2T=G(1j){F 1j.6Y};2T.6X=1h;2T.99={}}D.4U=2T;u 1C=D.cw;D.io=1C("ul");D.il=1C("ol");D.ik=1C("li");D.ij=1C("td");D.cm=1C("tr");D.ii=1C("u8");D.ih=1C("u7");D.ig=1C("u6");D.ie=1C("u5");D.ic=1C("th");D.cv=1C("ck");D.8d=1C("cj");D.A=1C("a");D.6m=1C("4u");D.ib=1C("u4");D.ia=1C("2e");D.i9=1C("tt");D.i8=1C("4O");D.i7=1C("h1");D.i6=1C("h2");D.i5=1C("h3");D.i4=1C("br");D.i3=1C("hr");D.i2=1C("u3");D.i1=1C("u2");D.cu=1C("u1");D.P=1C("p");D.ct=1C("u0");D.i0=1C("hJ");D.hZ=1C("tZ");D.hY=1C("tY");D.hX=1C("tX");D.hW=1C("tW");D.hV=1C("tV");D.hU=m.2z(D.97,"98");D.hT=m.2z(D.97,"8c");D.hS=D.cs;D.$=D.1E;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)}});B.S.2d(((H(2O)=="L")?D:2O));if(!B.3d){95=B.S.95;94=B.S.94}B.J.2Y(D,B.S);if(H(1q)!="L"){1q.2X("B.1I");1q.2M("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.1H",[]);1x.26("B.J",[])}1f{if(H(B.J)=="L"||H(B.1H)=="L"){14""}}1e(e){14"B.1I 3F on B.J 3W B.1H!"}if(H(B.1I)=="L"){B.1I={}}B.1I.1r="B.1I";B.1I.1Y="1.3.1";B.1I.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1I.1l=G(){F D.1K()};B.1I.bY=G(6W){u m=B.1I;6W=!(!6W);if(m.3l&&m.3l.8Q!=6W){m.3l.hA();m.3l=O}if(!m.3l||m.3l.8P){m.3l=Y m.1I(6W,B.1H.2L)}F m.3l};B.1I.1I=G(4R,6V){if(H(6V)=="L"||6V===O){6V=B.1H.2L}D.2L=6V;u tU=B.J.2l;u c3=B.J.8Z;u 1O=B.J.1O;u hM=B.J.4L;u 2m=2O;u 6U="tT";if(H(B.S)!="L"){2m=B.S.cr()}if(!4R){u 5F=2m.tS.tR.2R("?")[0].23(/[:\\/.><&]/g,"hR");u 1b=6U+"hR"+5F;u 5D=2m.cp("",1b,"tQ,tP,3V=hQ");if(!5D){cq("tO tN to cp tM 2O tL to hP-up tK.");F L}5D.2v.fl("<!tJ co tI \\"-//tH//tG co 4.0 tF//tE\\" "+"\\"fq://fp.tD.fo/cm/tC/tB.tA\\">"+"<hO><5E><8Y>[B.1I]</8Y></5E>"+"<5s></5s></hO>");5D.2v.hG();5D.2v.8Y+=" "+2m.2v.8Y;2m=5D}u 1N=2m.2v;D.1N=1N;u 21=1N.hN(6U);u c4=!!21;if(21&&H(21.5B)!="L"){21.5B.2L=D.2L;21.5B.6K();F 21.5B}if(c4){u cl;1M((cl=21.6n)){21.6S(cl)}}N{21=1N.2S("4u");21.id=6U}21.5B=D;u 8T=1N.2S("ck");u 8S=1N.2S("ck");u 6O=1N.2S("2e");u 6N=1N.2S("2e");u 6M=1N.2S("2e");u 6L=1N.2S("2e");u 3L=1N.2S("4u");u 42=1N.2S("4u");u 8U=6U+"tz";D.8N=hM(D.8N);u 4T=[];u 6R=O;u cf=G(1t){u 6T=1t.3N;if(H(6T)=="2y"){6T=B.1H.5C[6T]}F 6T};u cd=G(1t){F 1t.3z.2b(" ")};u ca=1O(G(1t){u 8W=cf(1t);u 7X=cd(1t);u c=D.8N[8W];u p=1N.2S("cj");p.3M="B-49 B-5C-"+8W;p.1T.3x="ty: 2N; 4F-8X: -hL-4O-3y; 4F-8X: -o-4O-3y; 4F-8X: 4O-3y; 4F-8X: 4O-tx; hK-3y: 2K-hK; 3y-hJ: tw; 3U: "+c;p.2c(1N.4S(8W+": "+7X));42.2c(p);42.2c(1N.2S("br"));if(3L.ci>3L.hI){3L.4C=0}N{3L.4C=3L.hI}},D);u hD=G(1t){4T[4T.K]=1t;ca(1t)};u hF=G(){u cg,ce;1f{cg=Y 8V(8T.3m);ce=Y 8V(8S.3m)}1e(e){ch("2x in 47 tv: "+e.43);F O}F G(1t){F(cg.hH(cf(1t))&&ce.hH(cd(1t)))}};u cc=G(){1M(42.6n){42.6S(42.6n)}};u hB=G(){4T=[];cc()};u bZ=1O(G(){if(D.8P){F}D.8P=1h;if(B.1I.3l==D){B.1I.3l=O}D.2L.c9(8U);21.5B=O;if(4R){21.3t.6S(21)}N{D.2m.hG()}},D);u c7=G(){cc();R(u i=0;i<4T.K;i++){u 1t=4T[i];if(6R===O||6R(1t)){ca(1t)}}};D.6K=G(){6R=hF();c7();D.2L.c9(8U);D.2L.hE(8U,6R,hD)};u c0=1O(G(){4T=D.2L.c8();c7()},D);u c2=1O(G(6Q){6Q=6Q||2O.6D;2h=6Q.6w||6Q.8t;if(2h==13){D.6K()}},D);u 31="3u: 8c; z-c6: c5; 2I: 2N; 6f: 2N; 6P: tu; 5A: 3k%; he-3U: 4F; c1: "+D.8O;if(4R){31+="; 3V: ts; 3E-3D: fO 8a 8y"}N{31+="; 3V: 3k%;"}21.1T.3x=31;if(!c4){1N.5s.2c(21)}31={"3x":"5A: 33%; 3u: 8Q; c1: "+D.8O};c3(8T,{"3m":"8L|8M|8K|8J|8I","hC":c2,"1T":31});21.2c(8T);c3(8S,{"3m":".*","hC":c2,"1T":31});21.2c(8S);31="5A: 8%; 3u:8Q; c1: "+D.8O;6O.2c(1N.4S("tq"));6O.8R=1O("6K",D);6O.1T.3x=31;21.2c(6O);6N.2c(1N.4S("tp"));6N.8R=c0;6N.1T.3x=31;21.2c(6N);6M.2c(1N.4S("tn"));6M.8R=hB;6M.1T.3x=31;21.2c(6M);6L.2c(1N.4S("tm"));6L.8R=bZ;6L.1T.3x=31;21.2c(6L);3L.1T.3x="fS: tk; 5A: 3k%";42.1T.3x="5A: 3k%; 3V: "+(4R?"tj":"3k%");3L.2c(42);21.2c(3L);D.6K();c0();if(4R){D.2m=L}N{D.2m=2m}D.8Q=4R;D.hA=bZ;D.8P=1m;F D};B.1I.1I.1U={"8O":"ti tg,tf-te","8N":{"8M":"1v","8L":"gU","8K":"1F","8J":"8y","8I":"bx"}};B.1I.1W=["1I"];B.1I.1z=["bY"];B.1I.2d=G(){D.2k={":3e":D.1z,":1p":B.J.2o(D.1z,D.1W)};B.J.3f(D);B.1I.3l=O};B.1I.2d();B.J.2Y(D,B.1I);if(H(1q)!="L"){1q.2X("B.V");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.V 3F on B.J"}if(H(B.V)=="L"){B.V={}}B.V.1r="B.V";B.V.1Y="1.3.1";B.V.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.V.1l=G(){F D.1K()};B.V.V=G(1v,hz,1F,6J){if(H(6J)=="L"||6J===O){6J=1}D.1B={r:1v,g:hz,b:1F,a:6J}};B.V.V.1U={bX:B.V.V,tc:G(hy){u 1B=D.1B;u m=B.V;F m.V.3Y(1B.r,1B.g,1B.b,hy)},tb:G(1o){u 1G=D.41();1G.h=1o;u m=B.V;F m.V.4H(1G)},ta:G(hx){u 1G=D.41();1G.s=hx;u m=B.V;F m.V.4H(1G)},t9:G(hw){u 1G=D.41();1G.l=hw;u m=B.V;F m.V.4H(1G)},t8:G(hv){u 1G=D.41();1G.l=28.29(1G.l-hv,0);u m=B.V;F m.V.4H(1G)},t7:G(hu){u 1G=D.41();1G.l=28.2a(1G.l+hu,1);u m=B.V;F m.V.4H(1G)},fJ:G(ht,5z){if(H(5z)=="L"||5z===O){5z=0.5}u sf=1-5z;u s=D.1B;u d=ht.1B;u df=5z;F B.V.V.3Y((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df))},h4:G(hs){u a=D.6r();u b=hs.6r();F B.J.2f([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a])},hq:G(){F D.41().b>0.5},t6:G(){F(!D.hq())},t5:G(){u c=D.41();u 2Z=B.V.6F;u W=D.ho;if(!W){u 5y=(2Z(c.h,bF).6I(0)+","+2Z(c.s,3k).hp(4)+"%"+","+2Z(c.l,3k).hp(4)+"%");u a=c.a;if(a>=1){a=1;W="1G("+5y+")"}N{if(a<=0){a=0}W="t4("+5y+","+a+")"}D.ho=W}F W},hl:G(){u c=D.1B;u 2Z=B.V.6F;u W=D.hn;if(!W){u 5y=(2Z(c.r,3h).6I(0)+","+2Z(c.g,3h).6I(0)+","+2Z(c.b,3h).6I(0));if(c.a!=1){W="t3("+5y+","+c.a+")"}N{W="1B("+5y+")"}D.hn=W}F W},6r:G(){F B.J.4L(D.1B)},t2:G(){u m=B.V;u c=D.1B;u 2Z=B.V.6F;u W=D.hm;if(!W){W=("#"+m.6E(2Z(c.r,3h))+m.6E(2Z(c.g,3h))+m.6E(2Z(c.b,3h)));D.hm=W}F W},t1:G(){u 2Q=D.2Q;u c=D.1B;if(H(2Q)=="L"||2Q===O){2Q=B.V.bA(D.1B);D.2Q=2Q}F B.J.4L(2Q)},41:G(){u 1G=D.1G;u c=D.1B;if(H(1G)=="L"||1G===O){1G=B.V.bC(D.1B);D.1G=1G}F B.J.4L(1G)},1l:G(){F D.hl()},U:G(){u c=D.1B;u hk=[c.r,c.g,c.b,c.a];F D.bX.1r+"("+hk.2b(", ")+")"}};B.J.2l(B.V.V,{3Y:G(1v,bW,1F,8H){u hj=B.V.V;if(M.K==1){u 1B=1v;1v=1B.r;bW=1B.g;1F=1B.b;if(H(1B.a)=="L"){8H=L}N{8H=1B.a}}F Y hj(1v,bW,1F,8H)},4H:G(1o,t0,sZ,sY){u m=B.V;F m.V.3Y(m.bB.1w(m,M))},sX:G(1o,sW,sV,sU){u m=B.V;F m.V.3Y(m.bz.1w(m,M))},hi:G(1b){u 8F=B.V.V;if(1b.3Z(0)=="\\""){1b=1b.3H(1,1b.K-2)}u bV=8F.by[1b.8G()];if(H(bV)=="1n"){F 8F.bT(bV)}N{if(1b=="aP"){F 8F.sT()}}F O},8f:G(4Q){u I=B.V.V;u bU=4Q.3H(0,3);if(bU=="1B"){F I.h9(4Q)}N{if(bU=="1G"){F I.h8(4Q)}N{if(4Q.3Z(0)=="#"){F I.bT(4Q)}}}F I.hi(4Q)},bT:G(4P){if(4P.3Z(0)=="#"){4P=4P.2W(1)}u 8E=[];u i,5x;if(4P.K==3){R(i=0;i<3;i++){5x=4P.3H(i,1);8E.1c(3w(5x+5x,16)/3h)}}N{R(i=0;i<6;i+=2){5x=4P.3H(i,2);8E.1c(3w(5x,16)/3h)}}u bS=B.V.V;F bS.3Y.1w(bS,8E)},bG:G(4O,hf,hg,4N){if(4N.2A(4O)===0){4N=4N.2W(4N.2A("(",3)+1,4N.K-1)}u bR=4N.2R(/\\s*,\\s*/);u bP=[];R(u i=0;i<bR.K;i++){u c=bR[i];u 2i;u bQ=c.2W(c.K-3);if(c.3Z(c.K-1)=="%"){2i=0.bE*4M(c.2W(0,c.K-1))}N{if(bQ=="sS"){2i=4M(c)/bF}N{if(bQ=="sR"){2i=4M(c)/(28.sQ*2)}N{2i=hg[i]*4M(c)}}}bP.1c(2i)}F D[hf].1w(D,bP)},bN:G(Q,sP,sO){u d=B.S;u 2F=B.V.V;R(Q=d.1E(Q);Q;Q=Q.3t){u bO=d.4q.1w(d,M);if(!bO){2V}u 8D=2F.8f(bO);if(!8D){2K}if(8D.6r().a>0){F 8D}}F O},ba:G(Q){u 2F=B.V.V;F 2F.bN(Q,"aZ","he-3U")||2F.sN()},sM:G(Q){u 2F=B.V.V;F 2F.bN(Q,"3U","3U")||2F.sL()},sK:G(){F B.J.4L(B.V.V.by)}});B.J.2l(B.V,{6F:G(v,8C){v*=8C;if(v<0){F 0}N{if(v>8C){F 8C}N{F v}}},hc:G(n1,n2,1o){if(1o>6){1o-=6}N{if(1o<0){1o+=6}}u 2i;if(1o<1){2i=n1+(n2-n1)*1o}N{if(1o<3){2i=n2}N{if(1o<4){2i=n1+(n2-n1)*(4-1o)}N{2i=n1}}}F 2i},bz:G(1o,5w,3i,bM){if(M.K==1){u 2Q=1o;1o=2Q.h;5w=2Q.s;3i=2Q.v;bM=2Q.a}u 1v;u 3K;u 1F;if(5w===0){1v=0;3K=0;1F=0}N{u i=28.8B(1o*6);u f=(1o*6)-i;u p=3i*(1-5w);u q=3i*(1-(5w*f));u t=3i*(1-(5w*(1-f)));hd(i){3j 1:1v=q;3K=3i;1F=p;2K;3j 2:1v=p;3K=3i;1F=t;2K;3j 3:1v=p;3K=q;1F=3i;2K;3j 4:1v=t;3K=p;1F=3i;2K;3j 5:1v=3i;3K=p;1F=q;2K;3j 6:3j 0:1v=3i;3K=t;1F=p;2K}}F{r:1v,g:3K,b:1F,a:bM}},bB:G(1o,5v,3v,bL){if(M.K==1){u 1G=1o;1o=1G.h;5v=1G.s;3v=1G.l;bL=1G.a}u 1v;u 8A;u 1F;if(5v===0){1v=3v;8A=3v;1F=3v}N{u m2;if(3v<=0.5){m2=3v*(1+5v)}N{m2=3v+5v-(3v*5v)}u m1=(2*3v)-m2;u f=B.V.hc;u h6=1o*6;1v=f(m1,m2,h6+2);8A=f(m1,m2,h6);1F=f(m1,m2,h6-2)}F{r:1v,g:8A,b:1F,a:bL}},bA:G(1v,4K,1F,bK){if(M.K==1){u 1B=1v;1v=1B.r;4K=1B.g;1F=1B.b;bK=1B.a}u 29=28.29(28.29(1v,4K),1F);u 2a=28.2a(28.2a(1v,4K),1F);u 1o;u 8z;u hb=29;if(2a==29){1o=0;8z=0}N{u 6H=(29-2a);8z=6H/29;if(1v==29){1o=(4K-1F)/6H}N{if(4K==29){1o=2+((1F-1v)/6H)}N{1o=4+((1v-4K)/6H)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:8z,v:hb,a:bK}},bC:G(1v,4J,1F,bI){if(M.K==1){u 1B=1v;1v=1B.r;4J=1B.g;1F=1B.b;bI=1B.a}u 29=28.29(1v,28.29(4J,1F));u 2a=28.2a(1v,28.2a(4J,1F));u 1o;u 6G;u bJ=(29+2a)/2;u 4I=29-2a;if(4I===0){1o=0;6G=0}N{if(bJ<=0.5){6G=4I/(29+2a)}N{6G=4I/(2-29-2a)}if(1v==29){1o=(4J-1F)/4I}N{if(4J==29){1o=2+((1F-1v)/4I)}N{1o=4+((1v-4J)/4I)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:6G,l:bJ,a:bI}},6E:G(1P){1P=28.ha(1P);u bH=1P.1l(16);if(1P<16){F"0"+bH}F bH},2d:G(){u m=B.J;D.V.h9=m.1O(D.V.bG,D.V,"1B","3Y",[1/3h,1/3h,1/3h,1]);D.V.h8=m.1O(D.V.bG,D.V,"1G","4H",[1/bF,0.bE,0.bE,1]);u 4G=1/3;u bD={8y:[0,0,0],1F:[0,0,1],gY:[0.6,0.4,0.2],gX:[0,1,1],sJ:[4G,4G,4G],gR:[0.5,0.5,0.5],bx:[0,1,0],sI:[2*4G,2*4G,2*4G],gN:[1,0,1],gL:[1,0.5,0],gK:[0.5,0,0.5],1v:[1,0,0],aP:[0,0,0,0],4F:[1,1,1],gI:[1,1,0]};u h7=G(1b,r,g,b,a){u W=D.3Y(r,g,b,a);D[1b]=G(){F W};F W};R(u k in bD){u 1b=k+"V";u h5=m.2o([h7,D.V,1b],bD[k]);D.V[1b]=m.1O.1w(O,h5)}u h0=G(){R(u i=0;i<M.K;i++){if(!(M[i]2C V)){F 1m}}F 1h};u gZ=G(a,b){F a.h4(b)};m.3f(D);m.5u(D.V.1r,h0,gZ);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}}});B.V.1z=["V"];B.V.1W=["6F","bC","bB","bA","bz","6E"];B.V.2d();B.J.2Y(D,B.V);B.V.V.by={sH:"#sG",sF:"#sE",sD:"#gW",sC:"#sB",sA:"#sz",sy:"#sx",sw:"#sv",8y:"#su",st:"#sr",1F:"#sq",sp:"#so",gY:"#sn",sm:"#sl",sk:"#sj",si:"#sh",sg:"#se",sd:"#sc",sb:"#sa",s9:"#s8",s7:"#s6",gX:"#gW",s5:"#s4",s3:"#s2",s1:"#s0",rZ:"#gV",rY:"#rX",rW:"#gV",rV:"#rU",rT:"#rS",rR:"#rQ",rP:"#rO",rN:"#rM",gU:"#rL",rK:"#rJ",rI:"#rH",rG:"#rF",rE:"#gT",rD:"#gT",rC:"#rB",rA:"#rz",ry:"#rx",rw:"#rv",ru:"#gS",rt:"#gS",rs:"#rr",rq:"#rp",ro:"#rn",rm:"#rl",rk:"#gM",rj:"#ri",rh:"#rg",rf:"#rd",rc:"#rb",gR:"#gQ",bx:"#ra",r9:"#r8",r7:"#gQ",r6:"#r5",r4:"#r3",r2:"#r1",r0:"#qZ",qY:"#qX",qW:"#qV",qU:"#qT",qS:"#qR",qQ:"#qP",qO:"#qN",qM:"#qL",qK:"#qJ",qI:"#qH",qG:"#qF",qE:"#gP",qD:"#qC",qB:"#gP",qA:"#qz",qy:"#qx",qw:"#qv",qu:"#qt",qr:"#gO",qq:"#gO",qp:"#qo",qn:"#qm",ql:"#qk",qj:"#qi",qh:"#qg",gN:"#gM",qf:"#qe",qd:"#qc",qb:"#qa",q9:"#q8",q7:"#q6",q5:"#q4",q3:"#q2",q1:"#q0",pZ:"#pY",pX:"#pW",pV:"#pU",pT:"#pS",pR:"#pQ",pP:"#pO",pN:"#pM",pL:"#pK",pJ:"#pI",pH:"#pG",pF:"#pE",gL:"#pD",pC:"#pB",pA:"#pz",py:"#pw",pv:"#pu",pt:"#ps",pr:"#pq",pp:"#po",pn:"#pm",pl:"#pj",pi:"#ph",pg:"#pf",pe:"#pd",gK:"#pc",1v:"#pb",pa:"#p9",p8:"#p7",p6:"#p5",p4:"#p3",p2:"#p1",p0:"#oZ",oY:"#oX",oW:"#oV",oU:"#oT",oS:"#oR",oQ:"#oP",oO:"#gJ",oN:"#gJ",oM:"#oL",oK:"#oJ",oI:"#oH",oG:"#oF",oE:"#oD",oC:"#oB",oA:"#oz",oy:"#ox",ow:"#ov",ou:"#ot",4F:"#os",oq:"#op",gI:"#oo",om:"#ok"};if(H(1q)!="L"){1q.2X("B.1u");1q.2M("B.J");1q.2M("B.S")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1u 3F on B.J!"}1f{if(H(B.S)=="L"){14""}}1e(e){14"B.1u 3F on B.S!"}if(H(B.1u)=="L"){B.1u={}}B.1u.1r="B.1u";B.1u.1Y="1.3.1";B.1u.4x=[];B.1u.bq=G(1d,e){D.1L=e||2O.6D;D.gH=1d};B.J.2l(B.1u.bq.1U,{1K:G(){u U=B.J.U;u 1y="{6D(): "+U(D.6D())+", 1d(): "+U(D.1d())+", 1J(): "+U(D.1J())+", 8x(): "+U(D.8x())+", 4E(): "+"{8w: "+U(D.4E().8w)+", 8v: "+U(D.4E().8v)+", 8u: "+U(D.4E().8u)+", 2P: "+U(D.4E().2P)+", bw: "+U(D.4E().bw)+"}";if(D.1J()&&D.1J().2A("2h")===0){1y+=", 2h(): {3J: "+U(D.2h().3J)+", 1n: "+U(D.2h().1n)+"}"}if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){1y+=", 3I(): {4D: "+U(D.3I().4D)+", 6A: "+U(D.3I().6A);if(D.1J()!="gC"){1y+=", 2e: {2I: "+U(D.3I().2e.2I)+", 6v: "+U(D.3I().2e.6v)+", 3g: "+U(D.3I().2e.3g)+"}}"}N{1y+="}"}}if(D.1J()=="gG"||D.1J()=="gF"){1y+=", 6C(): "+U(D.6C())}1y+="}";F 1y},1l:G(){F D.1K()},1d:G(){F D.gH},6D:G(){F D.1L},1J:G(){F D.1L.1J||L},8x:G(){F D.1L.8x||D.1L.oj},6C:G(){if(D.1J()=="gG"){F(D.1L.6C||D.1L.aW)}N{if(D.1J()=="gF"){F(D.1L.6C||D.1L.oi)}}F L},4E:G(){u m={};m.8w=D.1L.oh;m.8v=D.1L.og;m.8u=D.1L.oe||1m;m.2P=D.1L.od;m.bw=m.8w||m.8v||m.2P||m.8u;F m},2h:G(){u k={};if(D.1J()&&D.1J().2A("2h")===0){if(D.1J()=="oc"||D.1J()=="ob"){k.3J=D.1L.8t;k.1n=(B.1u.5r[k.3J]||"oa");F k}N{if(D.1J()=="o9"){k.3J=0;k.1n="";if(H(D.1L.6B)!="L"&&D.1L.6B!==0&&!B.1u.bv[D.1L.6B]){k.3J=D.1L.6B;k.1n=bu.bt(k.3J)}N{if(D.1L.8t&&H(D.1L.6B)=="L"){k.3J=D.1L.8t;k.1n=bu.bt(k.3J)}}F k}}}F L},3I:G(){u m={};u e=D.1L;if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){m.6A=Y B.S.5t(0,0);if(e.6z||e.6x){m.6A.x=(!e.6z||e.6z<0)?0:e.6z;m.6A.y=(!e.6x||e.6x<0)?0:e.6x}m.4D=Y B.S.5t(0,0);if(e.8s||e.8r){m.4D.x=(!e.8s||e.8s<0)?0:e.8s;m.4D.y=(!e.8r||e.8r<0)?0:e.8r}N{u de=B.S.1Z.7Z;u b=B.S.1Z.5s;m.4D.x=e.6z+(de.6y||b.6y)-(de.8q||b.8q);m.4D.y=e.6x+(de.4C||b.4C)-(de.8p||b.8p)}if(D.1J()!="gC"){m.2e={};m.2e.2I=1m;m.2e.3g=1m;m.2e.6v=1m;if(e.6w){m.2e.2I=(e.6w==1);m.2e.6v=(e.6w==2);m.2e.3g=(e.6w==3)}N{m.2e.2I=!!(e.2e&1);m.2e.3g=!!(e.2e&2);m.2e.6v=!!(e.2e&4)}}F m}F L},2J:G(){D.8o();D.8n()},8o:G(){if(D.1L.8o){D.1L.8o()}N{D.1L.o8=1h}},8n:G(){if(D.1L.8n){D.1L.8n()}N{D.1L.o7=1m}}});B.1u.bv={3:"gz",o6:"gA",o5:"gy",o4:"gx",o3:"gw",o2:"gv",o1:"gu",o0:"gs",nZ:"gr",nY:"gq",nX:"gp",nW:"go"};R(i=gB;i<=nV;i++){B.1u.bv[i]="gk"+(i-gB+1)}B.1u.5r={8:"nU",9:"nT",12:"gA",13:"gz",16:"nS",17:"nR",18:"nQ",19:"nP",20:"nO",27:"nN",32:"nM",33:"gy",34:"gx",35:"gw",36:"gv",37:"gu",38:"gs",39:"gr",40:"gq",44:"nL",45:"gp",46:"go",59:"gn",91:"nK",92:"nJ",93:"nI",nH:"nG",nF:"nE",nD:"nC-gm",nB:"nA",nz:"ny",nx:"nw",nv:"nu",nt:"gn",ns:"nr",nq:"np",nn:"nm-gm",nl:"nk",nj:"ni",nh:"ng",nf:"nd",nc:"nb",na:"n9",n8:"n7"};R(u i=48;i<=57;i++){B.1u.5r[i]="gl"+(i-48)}R(i=65;i<=90;i++){B.1u.5r[i]="gl"+bu.bt(i)}R(i=96;i<=n6;i++){B.1u.5r[i]="n5"+(i-96)}R(i=gj;i<=n4;i++){B.1u.5r[i]="gk"+(i-gj+1)}B.J.2l(B.1u,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},g7:G(){u I=B.1u;u bs=I.4x;R(u i=0;i<bs.K;i++){I.6t(bs[i])}gi I.4x;1f{2O.gh=L}1e(e){}1f{2O.g8=L}1e(e){}},gb:G(1d,1A,1i,gg){u E=B.1u.bq;if(!gg){F B.J.1O(1A,1i)}1i=1i||1d;if(H(1A)=="1n"){F G(gf){1i[1A].1w(1i,[Y E(1d,gf)])}}N{F G(gd){1A.1w(1i,[Y E(1d,gd)])}}},6s:G(1d,2D,5q,4B){1d=B.S.1E(1d);u I=B.1u;if(H(2D)!="1n"){14 Y 2x("\'2D\' 5p be a 1n")}u 1i=O;u 1A=O;if(H(4B)!="L"){1i=5q;1A=4B;if(H(4B)=="1n"){if(H(5q[4B])!="G"){14 Y 2x("\'bp\' 5p be a G on \'gc\'")}}N{if(H(4B)!="G"){14 Y 2x("\'bp\' 5p be a G or 1n")}}}N{if(H(5q)!="G"){14 Y 2x("\'gc\' 5p be a G if \'bp\' is 2E n3")}N{1A=5q}}if(H(1i)=="L"||1i===O){1i=1d}u bm=!!(1d.bo||1d.bn);u 8m=I.gb(1d,1A,1i,bm);if(1d.bo){1d.bo(2D.3H(2),8m,1m)}N{if(1d.bn){1d.bn(2D,8m)}}u bk=[1d,2D,8m,bm,5q,4B];I.4x.1c(bk);F bk},6t:G(6u){if(!6u[3]){F}u 1d=6u[0];u 2D=6u[1];u bj=6u[2];if(1d.ga){1d.ga(2D.3H(2),bj,1m)}N{if(1d.g9){1d.g9(2D,bj)}N{14 Y 2x("\'1d\' 5p be a S n0")}}},8j:G(bh){u I=B.1u;u 5o=I.4x;u m=B.J;if(M.K>1){u 1d=B.S.1E(M[0]);u 2D=M[1];u 1i=M[2];u 1A=M[3];R(u i=5o.K-1;i>=0;i--){u o=5o[i];if(o[0]===1d&&o[1]===2D&&o[4]===1i&&o[5]===1A){I.6t(o);5o.4y(i,1);F 1h}}}N{u 5n=m.bi(5o,bh);if(5n>=0){I.6t(bh);5o.4y(5n,1);F 1h}}F 1m},8i:G(1d,2D){1d=B.S.1E(1d);u m=B.J;u 8l=m.bg(m.1R(O,M,1));u I=B.1u;u bd=I.6t;u 4z=I.4x;if(8l.K===0){R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d){bd(4A);4z.4y(i,1)}}}N{u bf={};R(u i=0;i<8l.K;i++){bf[8l[i]]=1h}R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d&&4A[1]in bf){bd(4A);4z.4y(i,1)}}}},8h:G(1d,2D){u bc=B.1u.4x;1d=B.S.1E(1d);u 3G=B.J.1R(O,M,2);u 5m=[];R(u i=0;i<bc.K;i++){u 8k=bc[i];if(8k[0]===1d&&8k[1]===2D){1f{8k[2].1w(1d,3G)}1e(e){5m.1c(e)}}}if(5m.K==1){14 5m[0]}N{if(5m.K>1){u e=Y 2x("mZ bb mY in mX \'2D\', mW bb mV");e.bb=5m;14 e}}}});B.1u.1W=[];B.1u.1z=["6s","8j","8h","8i"];B.1u.2d=G(2m){u m=B.J;D.1Z=2v;D.3X=2m;1f{D.6s(2O,"g8",D.g7)}1e(e){}D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1u.2d(D);if(!B.3d){6s=B.1u.6s;8j=B.1u.8j;8i=B.1u.8i;8h=B.1u.8h}B.J.2Y(D,B.1u);if(H(1q)!="L"){1q.2X("B.1X");1q.2M("B.J");1q.2M("B.S");1q.2M("B.V")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[]);1x.26("B.V",[])}1f{if(H(B.J)=="L"||H(B.S)=="L"||H(B.V)=="L"){14""}}1e(e){14"B.1X 3F on B.J, B.S 3W B.V!"}if(H(B.1X)=="L"){B.1X={}}B.1X.1r="B.1X";B.1X.1Y="1.3.1";B.1X.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1X.1l=G(){F D.1K()};B.1X.aI=G(e,g6){e=B.S.1E(e);D.fN(g6);if(D.1S.fL){e=D.g5(e)}u 4w=D.1S.3U;u C=B.V.V;if(D.1S.3U=="aW"){4w=C.ba(e)}N{if(!(4w 2C C)){4w=C.8f(4w)}}D.82=(4w.6r().a<=0);u 5l=D.1S.aV;if(D.1S.aV=="fM"){5l=C.ba(e.8g)}N{if(!(5l 2C C)){5l=C.8f(5l)}}D.g3(e,4w,5l)};B.1X.aI.1U={g5:G(e){u mU=e.3t;u 1N=B.S.b9();if(H(1N.5k)=="L"||1N.5k===O){F e}u 4v=1N.5k.g4(e,O);if(H(4v)=="L"||4v===O){F e}u b8=B.S.6m({"1T":{3u:"8c",mT:4v.6q("6p-3D"),85:4v.6q("6p-3g"),mS:4v.6q("6p-6f"),86:4v.6q("6p-2I"),6p:"2N"}});b8.6o=e.6o;e.6o="";e.2c(b8);F e},g3:G(e,b7,8e){if(D.1S.3E){D.g2(e,8e)}if(D.fy()){D.fX(e,b7,8e)}if(D.fx()){D.fV(e,b7,8e)}},g2:G(el,g1){u b6="6l 8a "+D.aQ(g1);u g0="3E-2I: "+b6;u fZ="3E-3g: "+b6;u fY="1T=\'"+g0+";"+fZ+"\'";el.6o="<4u "+fY+">"+el.6o+"</4u>"},fX:G(el,fW,b5){u b4=D.b1(b5);R(u i=0;i<D.1S.89;i++){b4.2c(D.b0(fW,b5,i,"3D"))}el.1T.mR=0;el.mQ(b4,el.6n)},fV:G(el,fU,b3){u b2=D.b1(b3);R(u i=(D.1S.89-1);i>=0;i--){b2.2c(D.b0(fU,b3,i,"6f"))}el.1T.mP=0;el.2c(b2)},b1:G(fT){u 2q=B.S;F 2q.6m({1T:{aZ:fT.1l()}})},b0:G(aY,fQ,n,aX){u 6k=B.S.8d();u 2p=6k.1T;2p.aZ=aY.1l();2p.3u="8c";2p.3V="6l";2p.fS="fR";2p.mO="6l";u 8b=D.aQ(aY,fQ);if(D.1S.3E&&n===0){2p.mN="8a";2p.mM="6l";2p.84="2N";2p.83="2N";2p.mL="2N";2p.3V="2N";2p.fP=8b.1l()}N{if(8b){2p.fP=8b.1l();2p.mK="8a";2p.mJ="2N 6l"}}if(!D.1S.4r&&(n==(D.1S.89-1))){2p.3V="fO"}D.fI(6k,n,aX);D.fG(6k,n,aX);F 6k},fN:G(fK){D.1S={6g:"1p",3U:"aW",aV:"fM",5j:1h,3E:1m,4r:1m,fL:1m};B.J.2l(D.1S,fK);D.1S.89=(D.1S.4r?2:4)},aL:G(){u 88=D.1S.6g;if(D.6h(88,"1p","3D")){F""}u aU=(88.2A("tl")!=-1);u aT=(88.2A("tr")!=-1);if(aU&&aT){F""}if(aU){F"2I"}if(aT){F"3g"}F""},aK:G(){u 87=D.1S.6g;if(D.6h(87,"1p","6f")){F""}u aS=(87.2A("bl")!=-1);u aR=(87.2A("br")!=-1);if(aS&&aR){F""}if(aS){F"2I"}if(aR){F"3g"}F""},aQ:G(aN,aO){if(aN=="aP"){F aO}N{if(D.1S.3E){F D.1S.3E}N{if(D.1S.5j){F aO.fJ(aN)}}}F""},fI:G(el,n,fH){u 6j=D.fE(n)+"px";u aM=(fH=="3D"?D.aL():D.aK());u 4t=el.1T;if(aM=="2I"){4t.86=6j;4t.85="2N"}N{if(aM=="3g"){4t.85=6j;4t.86="2N"}N{4t.86=6j;4t.85=6j}}},fG:G(el,n,fF){u 6i=D.fz(n)+"px";u aJ=(fF=="3D"?D.aL():D.aK());u 4s=el.1T;if(aJ=="2I"){4s.84=6i;4s.83="2N"}N{if(aJ=="3g"){4s.83=6i;4s.84="2N"}N{4s.84=6i;4s.83=6i}}},fE:G(n){if(D.82){F 0}u o=D.1S;if(o.4r&&o.5j){u fD=[1,0];F fD[n]}N{if(o.4r){u fC=[2,1];F fC[n]}N{if(o.5j){u fB=[3,2,1,0];F fB[n]}N{u fA=[5,3,2,1];F fA[n]}}}},fz:G(n){u o=D.1S;u 5i;if(o.4r&&(o.5j||D.82)){F 1}N{if(o.4r){5i=[1,0]}N{if(o.5j){5i=[2,1,1,1]}N{if(o.3E){5i=[0,2,0,0]}N{if(D.82){5i=[5,3,2,1]}N{F 0}}}}}F 5i[n]},6h:G(1y){R(u i=1;i<M.K;i++){if(1y.2A(M[i])!=-1){F 1h}}F 1m},fy:G(){F D.6h(D.1S.6g,"1p","3D","tl","tr")},fx:G(){F D.6h(D.1S.6g,"1p","6f","bl","br")},mI:G(el){F(el.5h.K==1&&el.5h[0].3T==3)}};B.1X.aF=G(e,fw){Y B.1X.aI(e,fw)};B.1X.fs=G(fv,fu,ft){u aG=B.S.aH(fv,fu);R(u i=0;i<aG.K;i++){B.1X.aF(aG[i],ft)}};B.1X.V=B.V.V;B.1X.mH=B.S.4q;B.1X.2d=G(){u m=B.J;m.3f(D);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}};B.1X.1z=["aF","fs"];B.1X.1W=[];B.1X.2d();B.J.2Y(D,B.1X);if(H(B)=="L"){B={}}if(H(B.B)=="L"){B.B={}}B.B.1r="B.B";B.B.1Y="1.3.1";B.B.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.B.1l=G(){F D.1K()};B.B.aA=["J","15","1H","1D","1s","1k","S","1I","V","1u","1X"];if(H(1x)!="L"||H(1q)!="L"){if(H(1q)!="L"){1q.2X("B.B");1q.2M("B.*")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.15",[]);1x.26("B.1H",[]);1x.26("B.1D",[]);1x.26("B.1s",[]);1x.26("B.1k",[]);1x.26("B.S",[]);1x.26("B.1I",[]);1x.26("B.V",[]);1x.26("B.1u",[]);1x.26("B.1X",[])}(G(){u 6e=B.J.1R;u I=B.B;u aE=I.aA;u aD=[];u aC=[];u 81={};u i,k,m,1p;R(i=0;i<aE.K;i++){m=B[aE[i]];6e(aD,m.1z);6e(aC,m.1W);R(k in m.2k){81[k]=6e(81[k],m.2k[k])}1p=m.2k[":1p"];if(!1p){1p=6e(O,m.1z,m.1W)}u j;R(j=0;j<1p.K;j++){k=1p[j];I[k]=m[k]}}I.1z=aD;I.1W=aC;I.2k=81}())}N{if(H(B.3d)=="L"){B.3d=1h}(G(){u 80=2v.fr("7W");u ay="fq://fp.mG.fo/mF/mE/mD.is.aB.mC";u 2w=O;u ax=O;u az={};u i;R(i=0;i<80.K;i++){u 1d=80[i].fm("1d");if(!1d){2V}az[1d]=1h;if(1d.3C(/B.js$/)){2w=1d.2W(0,1d.mB("B.js"));ax=80[i]}}if(2w===O){F}u 6d=B.B.aA;R(u i=0;i<6d.K;i++){if(B[6d[i]]){2V}u 7Y=2w+6d[i]+".js";if(7Y in az){2V}if(2v.7Z&&2v.7Z.mA==ay){u s=2v.mz(ay,"7W");s.4p("id","my"+2w+6d[i]);s.4p("1d",7Y);s.4p("1J","mx/x-fk");ax.3t.2c(s)}N{2v.fl("<7W 1d=\\""+7Y+"\\" 1J=\\"7X/fk\\"></7W>")}}})()}',62,1976,'||||||||||||||||||||||||||||||var|||||||MochiKit||this||return|function|typeof|self|Base|length|undefined|arguments|else|null||elem|for|DOM||repr|Color|rval|res|new||||||throw|Iter|||||next|name|push|src|catch|try|lst|true|obj|node|Async|toString|false|string|hue|all|dojo|NAME|Format|msg|Signal|red|apply|JSAN|str|EXPORT|func|rgb|_425|DateTime|getElement|blue|hsl|Logging|LoggingPane|type|__repr__|_event|while|doc|bind|num|iter|extend|options|style|prototype|seq|EXPORT_OK|Visual|VERSION|_document||_434||replace|forwardCall|StopIteration|use||Math|max|min|join|appendChild|__new__|button|compare|date|key|val|_329|EXPORT_TAGS|update|win|pair|concat|_596|dom|map|req|Deferred|sync|document|base|Error|number|partial|indexOf||instanceof|sig|not|cls|list|fired|left|stop|break|logger|require|0px|window|shift|hsv|split|createElement|_423|callee|continue|substring|provide|_exportSymbols|ccc||_464|||||||||step|pred|_51|__compat__|common|nameFunctions|right|255|_517|case|100|_loggingPane|value|object|callback|TypeError|_251|_246|_113|parentNode|display|_522|parseInt|cssText|wrap|info|isArrayLike|end|match|top|border|depends|args|substr|mouse|code|_519|_443|className|level|err|frac|Date|_135|_85|nodeType|color|height|and|_window|fromRGB|charAt||asHSL|_444|message||||filter||LogMessage|AdapterRegistry|_366|imap|NotFound|locked|counter|_262|_messages|operator|cmp|_165|_161|pairs|arr|_52|setAttribute|computedStyle|compact|_614|_610|div|_576|_572|_observers|splice|_565|_566|_555|scrollTop|page|modifier|white|_541|fromHSL|_539|_535|_528|clone|parseFloat|_505|pre|_499|_497|_427|createTextNode|_446|attributeArray|_388|_379|updateNodeAttributes|_341|_326||box|errback|results|paused|chain|_285||ofs||NamedError|_175|_147|_122|_83|_54|_17|childNodes|_619|blend|defaultView|_574|_569|idx|_562|must|_554|_specialKeys|body|Coordinates|registerComparator|_521|_516|hex|mid|_478|width|loggingPane|LogLevel|nwin|head|url|setElementClass|callStack|path|dest|_359|boolean|register|Dimensions|DeferredLock|_313|addCallback|_310|waiting|onreadystatechange|_290|LOCALE|year|printfire|_214|log|_213|_211|pos|_155|_153||typeMatcher|listMinMax|_114|_40|itr|typ|_19|_634|_625|bottom|corners|_hasString|_612|_608|_595|1px|DIV|firstChild|innerHTML|padding|getPropertyValue|asRGB|connect|_disconnect|_559|middle|which|clientY|scrollLeft|clientX|client|charCode|relatedTarget|event|toColorPart|clampColorComponent|_537|_534|toFixed|_468|buildAndApplyFilter|_442|_441|_440|_439|position|_463|_447|removeChild|_449|uid|_428|_426|compliant|attributes|_422|_409|_412|_400|_395|_390|_389|_377|_375|_363|attr|ctx|repeat|_340|_339|isNotEmpty|_335|_333|opera|DeferredList|ret|_309|silentlyCancelled|canceller|_nextId|Array|_293|XMLHttpRequest|chained|_281|tail|_252|_225|msec|day|month|iso|Logger|_208|listeners|_200|_198|_194|_196|reduce|range|_169|_162|truth|registerRepr|_121|_70|_58|_56|_47|_45|_41|_13|_1|script|text|uri|documentElement|_630|_629|isTransparent|borderRightWidth|borderLeftWidth|marginRight|marginLeft|_602|_599|numSlices|solid|_597|block|SPAN|_579|fromString|offsetParent|signal|disconnectAll|disconnect|_570|_563|_557|preventDefault|stopPropagation|clientTop|clientLeft|pageY|pageX|keyCode|meta|ctrl|alt|target|black|_532|_524|floor|_513|_512|_500|_495|toLowerCase|_487|DEBUG|INFO|WARNING|FATAL|ERROR|colorTable|logFont|closed|inline|onclick|_438|_437|_445|RegExp|_452|space|title|updatetree|||||withDocument|withWindow||setDisplayForElement|none|renames|forEach|domConverters|escapeHTML|addElementClass|removeElementClass|once|_378|_380|_376|appendChildNodes|coerceToDOM|_355|opt|clientWidth|opacity|GenericError|fail|resultList|_307|_301|_fire|can|addCallbacks|_resback|percent|decimal|separator|twoDigitFloat|_274|_273|_264|_257|_250|_249|_254|_248|_243|_242|fmt|_240|_245|getTime|sec|hour|_209|slice|_206|iterateNextIter|registerIteratorFactory|arrayLikeIter|iteratorRegistry|takewhile|ifilterfalse|ifilter|_181|_176|_168|_166|_159|_tee|deque|arg|fun|jsonRegistry|reprString|reprRegistry|comparatorRegistry|urlEncode|_110|_108|cur|_95|_87|_71|im_preargs||_53|_57|_46|present|like|array|Argument|_15|_12|_632|_631|_633|SUBMODULES|only|_628|_627|_626|roundElement|_624|getElementsByTagAndClassName|_RoundCorners|_613|_whichSideBottom|_whichSideTop|_609|_605|_606|transparent|_borderColor|_604|_603|_601|_600|bgColor|fromElement|_594|_592|backgroundColor|_createCornerSlice|_createCorner|_590|_589|_587|_586|_581|_578|_577|currentDocument|fromBackground|errors|_568|_564||sigs|flattenArguments|_561|findIdentical|_560|_558||_556|attachEvent|addEventListener|funcOrStr|Event||_548|fromCharCode|String|_specialMacKeys|any|green|_namedColors|hsvToRGB|rgbToHSV|hslToRGB|rgbToHSL|_542|01|360|_fromColorString|_540|_536|_538|_529|_523|_518|fromComputedStyle|_511|_507|_508|_506|_501|fromHexString|_498|_496|_486|__class__|createLoggingPane|_459|_461|font|_462|_430|_435|1000|index|_460|getMessages|removeListener|_451||_457|_450|infore|_448|_456|logDebug|offsetHeight|span|input|_436|TR||HTML|open|alert|currentWindow|swapDOM|SELECT|FORM|INPUT|createDOMFunc|ignoreAttr|_421|call|_417|_410|_415|nodeName|_414|_413|emitHTML|good|_406|_399|_397|_393|_392|addLoadEvent|addToCallStack|_387|_386|_381|_382|_383|_373|_372|_369|createDOM|_365|Function|_360|_362|_358|_344|nodeWalk|formContents|_337|_338|_334|_332|offsetTop|offsetLeft|visibility|parentElement|||XMLHttpRequestError|BrowserComplianceError|CancelledError|AlreadyCalledError|evalJSONRequest|sendXMLHttpRequest|wait|doSimpleXMLHttpRequest|getXMLHttpRequest|succeed|_312|finishedCount|_308|_cbDeferred|_303|_297|queryString|_nothing|_289|XMLHTTP|ActiveXObject|eval|_284|_check|error|_279|default|rstrip|lstrip|formatLocale|roundToFixed|truncToFixed|_276|pow|_272|_271|_270|sign|_265|_263|tmp|_238|_232|toISODate|toISOTime|getFullYear|getDate|getMonth|_230|_padTwo|_228|useNativeConsole|_212|compareLogMessage|isLogMessage|unshift|_207||maxSize|_202|_199|logLevelAtLeast|console|hasIterateNext|iterateNext|arrayLike|groupby||exhaust|tee|dropwhile|applymap||islice|izip|cycle|count||_189|_188|_183|_185|_184|_186|_187|_182|identity|fetch|_180|_177|listMin|reprNumber|reprArrayLike|compareArrayLike|compareDateLike|isDateLike|findValue|_128|__export__|keyComparator|_124|_118|_93|_94|_90|_88|_84|_77|_68|_67|_66|_65|_60|im_func|_55|im_self|_48|_44|_42|_39|_36|_33|_27|_26|_25|_22|_24|_20|javascript|write|getAttribute||org|www|http|getElementsByTagName|roundClass|_623|_622|_621|_620|_isBottomRounded|_isTopRounded|_borderSize|_618|_617|_616|_615|_marginSize|_611|_setBorder|_607|_setMargin|blendedColor|_598|__unstable__wrapElement|fromParent|_setOptions|2px|borderColor|_593|hidden|overflow|_591|_588|_roundBottomCorners|_585|_roundTopCorners|_584|_583|_582|_580|_renderBorder|_roundCornersImpl|getComputedStyle|_doWrap|_571|_unloadCache|onunload|detachEvent|removeEventListener|_listener|objOrFunc|_552||_551|_549|onload|delete|112|KEY_F|KEY_|MINUS|KEY_SEMICOLON|KEY_DELETE|KEY_INSERT|KEY_ARROW_DOWN|KEY_ARROW_RIGHT|KEY_ARROW_UP||KEY_ARROW_LEFT|KEY_HOME|KEY_END|KEY_PAGE_DOWN|KEY_PAGE_UP|KEY_ENTER|KEY_NUM_PAD_CLEAR|63236|mousemove|contextmenu|click|mouseout|mouseover|_src|yellow|708090|purple|orange|ff00ff|magenta|778899|d3d3d3|808080|gray|696969|2f4f4f|darkred|a9a9a9|00ffff|cyan|brown|_547|_546||||compareRGB|_545||_543|fromHSLString|fromRGBString|round|_533|_hslValue|switch|background|_503|_504||fromName|_488|col|toRGBString|_hexString|_rgbString|_hslString|toPrecision|isLight||_481|_477|_476|_475|_474|_473|_469|_466|closePane|_458|onkeypress|_454|addListener|_455|close|test|scrollHeight|option|word|moz|_431|getElementById|html|pop|200|_|removeElement|showElement|hideElement|CANVAS|STRONG|FIELDSET|LEGEND|OPTGROUP|OPTION|TEXTAREA|LABEL|HR|BR|H3|H2|H1|PRE|TT|BUTTON|IMG|TH||TABLE||TFOOT|THEAD|TBODY|TD|LI|OL|||UL|checked|class|ignoreAttrFilter||_424|_419|nodeValue|scrapeText|_416|_418|sort|_411|toHTML|_404|hasElementClass|_403|_402|_401|swapElementClass|_398|_394|toggleElementClass|_391|focusOnLoad|_newCallStack|currentStyle|_371|replaceChildNodes|_364|_361|getNodeAttribute|_357|setNodeAttribute|_354|_352|_350|_353|toDOM|_346|_345|registerDOMConverter|selectedIndex|setElementPosition|setElementDimensions|tagName|absolute|getBoxObjectFor|getBoundingClientRect|elementPosition|_325|_324|_322|_323|offsetWidth|elementDimensions|clientHeight|innerWidth|getViewportDimensions|setOpacity|status|_317|deferred|_316|_newNamedError|maybeDeferred||gatherResults|callLater|loadJSONDoc|_311|consumeErrors|fireOnOneErrback|fireOnOneCallback|addErrback|_305|_304|_306|unlocked|release|_300|_299|_298|_296|_xhr_onreadystatechange|_xhr_canceller|304|responseText|Msxml2|addBoth|_pause|_continue|result|the|are|they|instances|_unpause|cancel|_280|_278|en_US|strip|percentFormat|twoDigitAverage|numberFormatter|_277|_275|isNaN|_259|_258|_260|_255|_253|_numberFormatter|_241|_239|_237|_236|_235|_234|_233|_231|toAmericanDate|toPaddedAmericanDate|americanDate|toISOTimestamp|isoTimestamp|isoDate|foot|sep||60000|_221|_isoRegexp|dispatchEvent|createEvent|warning|logWarning|fatal|logFatal|debug|logError|baseLog|_210|getMessageText|logToConsole|dispatchListeners|_204|_203|ident|_201|postError|alertListener|_197|_192|groupby_as_array|iextend|some|reversed|sorted|every|sum|_190|eat|_174|_173|_172|_171|_167|_163|_158|_157|_151|_144|_141||_139|_136|_134||_133|_132|zip|merge|isUndefined|isCallable|listMax|_131|_130|encodeURIComponent||_127|method|parseQueryString|evalJSON|registerJSON|serializeJSON|objMin|objMax|reverseKeyComparator|arrayEqual|objEqual|bindMethods|xfilter|xmap|isEmpty|isNull|isUndefinedOrNull|itemgetter|items|keys|setdefault|_126|_120|decodeURIComponent|_119|len|_109|_107|_104|_105|_101|_102|_98|||_100|_97|_96|_91|json|__json__|_82|_81|_80|_79|_76||_75|_74|_73|_69|_primitives|_64|_63||_62|_61|_59|_wrapDumbFunction|_49|_50|_31|_30|_21|_7|application|MochiKit_|createElementNS|namespaceURI|lastIndexOf|xul|there|gatekeeper|keymaster|mozilla|getElementsComputedStyle|_hasSingleTextChild|borderWidth|borderStyle|borderBottomWidth|borderTopWidth|borderTopStyle|fontSize|paddingBottom|insertBefore|paddingTop|marginBottom|marginTop|_575|property|see|handling|thrown|Multiple|element|||given|123|KEY_NUM_PAD_|105|KEY_APOSTROPHE|222|KEY_RIGHT_SQUARE_BRACKET|221|KEY_REVERSE_SOLIDUS|220|KEY_LEFT_SQUARE_BRACKET||219|KEY_GRAVE_ACCENT|192|KEY_SOLIDUS|191|KEY_FULL_STOP|190|KEY_HYPHEN|189||KEY_COMMA|188|KEY_EQUALS_SIGN|187|186|KEY_SCROLL_LOCK|145|KEY_NUM_LOCK|144|KEY_NUM_PAD_SOLIDUS|111|KEY_NUM_PAD_FULL_STOP|110|KEY_NUM_PAD_HYPHEN|109|KEY_NUM_PAD_PLUS_SIGN|107|KEY_NUM_PAD_ASTERISK|106|KEY_SELECT|KEY_WINDOWS_RIGHT|KEY_WINDOWS_LEFT|KEY_PRINT_SCREEN|KEY_SPACEBAR|KEY_ESCAPE|KEY_CAPS_LOCK|KEY_PAUSE|KEY_ALT|KEY_CTRL|KEY_SHIFT|KEY_TAB|KEY_BACKSPACE|63242|63272|63302|63233|63235|63232|63234|63273|63275|63277|63276|63289|returnValue|cancelBubble|keypress|KEY_UNKNOWN|keyup|keydown|shiftKey|metaKey||ctrlKey|altKey|toElement|srcElement|9acd32||yellowgreen||ffff00|f5f5f5|whitesmoke||ffffff|f5deb3|wheat|ee82ee|violet|40e0d0|turquoise|ff6347|tomato|d8bfd8|thistle|008080|teal|d2b48c|tan|4682b4|steelblue|00ff7f|springgreen|fffafa|snow|slategrey|slategray|6a5acd|slateblue|87ceeb|skyblue|c0c0c0|silver|a0522d|sienna|fff5ee|seashell|2e8b57|seagreen|f4a460|sandybrown|fa8072|salmon|8b4513|saddlebrown|4169e1|royalblue|bc8f8f|rosybrown|ff0000|800080|b0e0e6|powderblue|dda0dd|plum|ffc0cb|pink|cd853f||peru|ffdab9|peachpuff|ffefd5|papayawhip|db7093|palevioletred|afeeee|paleturquoise|98fb98|palegreen|eee8aa||palegoldenrod|da70d6|orchid|ff4500|orangered|ffa500|6b8e23|olivedrab|808000|olive|fdf5e6|oldlace|000080|navy|ffdead|navajowhite|ffe4b5|moccasin|ffe4e1|mistyrose|f5fffa|mintcream|191970|midnightblue|c71585|mediumvioletred|48d1cc|mediumturquoise|00fa9a|mediumspringgreen|7b68ee|mediumslateblue|3cb371|mediumseagreen|9370db|mediumpurple|ba55d3|mediumorchid|0000cd|mediumblue|66cdaa|mediumaquamarine|800000|maroon|faf0e6|linen|32cd32|limegreen|00ff00|lime|ffffe0|lightyellow|b0c4de|lightsteelblue|lightslategrey|lightslategray||87cefa|lightskyblue|20b2aa|lightseagreen|ffa07a|lightsalmon|ffb6c1|lightpink|lightgrey|90ee90|lightgreen|lightgray|fafad2|lightgoldenrodyellow|e0ffff|lightcyan|f08080|lightcoral|add8e6|lightblue|fffacd|lemonchiffon|7cfc00|lawngreen|fff0f5|lavenderblush|e6e6fa|lavender|f0e68c|khaki|fffff0|ivory|4b0082|indigo|cd5c5c|indianred|ff69b4|hotpink|f0fff0|honeydew|grey|adff2f|greenyellow|008000|daa520|goldenrod|ffd700||gold|f8f8ff|ghostwhite|dcdcdc|gainsboro|fuchsia|228b22|forestgreen|fffaf0|floralwhite|b22222|firebrick|1e90ff|dodgerblue|dimgrey|dimgray|00bfff|deepskyblue|ff1493|deeppink|9400d3|darkviolet|00ced1|darkturquoise|darkslategrey|darkslategray|483d8b|darkslateblue|8fbc8f|darkseagreen|e9967a|darksalmon|8b0000|9932cc|darkorchid|ff8c00|darkorange|556b2f|darkolivegreen|8b008b|darkmagenta|bdb76b|darkkhaki|darkgrey|006400|darkgreen|darkgray|b8860b|darkgoldenrod|008b8b|darkcyan|00008b|darkblue|dc143c|crimson|fff8dc|cornsilk|6495ed|cornflowerblue|ff7f50|coral|d2691e||chocolate|7fff00|chartreuse|5f9ea0|cadetblue|deb887|burlywood|a52a2a|8a2be2|blueviolet|0000ff|ffebcd||blanchedalmond|000000|ffe4c4|bisque|f5f5dc|beige|f0ffff|azure|7fffd4|aquamarine|aqua|faebd7|antiquewhite|f0f8ff|aliceblue|lightGray|darkGray|namedColors|blackColor|fromText|whiteColor|_510|_509|PI|rad|deg|transparentColor|_494|_493|_492|fromHSV|_491|_490|_489|asHSV|toHexString|rgba|hsla|toHSLString|isDark|lighterColorWithLevel|darkerColorWithLevel|colorWithLightness|colorWithSaturation|colorWithHue|colorWithAlpha||serif|sans|Verdana||8pt|8em|auto||Close|Clear||Load|Filter||10em||fixed|regex|emergency|line|margin|_Listener|dtd|loose|html4|w3|EN|Transitional|DTD|W3C|PUBLIC|DOCTYPE|blocking|due|debugging|able|Not|resizable|dependent|href|location|_MochiKit_LoggingPane|_429|canvas|strong|fieldset|legend|optgroup|select|form|textarea|label|img|table|tfoot|thead|tbody|htmlFor||useMap|usemap|defaultChecked|hasChildNodes|quot|amp|_405|focus|replaceChild|checkbox||radio|_win|BODY||safari|version|userAgent|navigator|innerHeight|alpha|khtml|Tried|acquire|clearTimeout|setTimeout|GET|ignore|send|abort|failed|Request|readyState|support|does|Browser|Microsoft|_288|_287|used|Deferreds|Chained|success|unfired|fr_FR|de_DE|00|abs|search|pattern|Invalid|getTimezoneOffset|getSeconds|getMinutes|getHours|UTC|3600000|initEvent|Events|debuggingBookmarklet|MESSAGES|LAST|_205|clear|ninfo|nlevel|timestamp|reverse|takes|initial|with|sequence|empty|iterable|numbers|dateLike|escape|find|forward|unregister|unescape|Object|compared|item|contains|logor|logand|cle|clt|cge|cgt|cne|ceq|zrshift|rshift|lshift|xor|mul|mod|sub|add|neg|lognot|_9|_2'.split('|'),0,{})
+
+
+/*
+ * jQuery 1.2.1 - New Wave Javascript
+ *
+ * Copyright (c) 2007 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $
+ * $Rev: 3353 $
+ */
+
+var decompressedJQuery = function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(G(){9(1m E!="W")H w=E;H E=18.15=G(a,b){I 6 7u E?6.5N(a,b):1u E(a,b)};9(1m $!="W")H D=$;18.$=E;H u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;E.1b=E.3A={5N:G(c,a){c=c||U;9(1m c=="1M"){H m=u.2S(c);9(m&&(m[1]||!a)){9(m[1])c=E.4D([m[1]],a);J{H b=U.3S(m[3]);9(b)9(b.22!=m[3])I E().1Y(c);J{6[0]=b;6.K=1;I 6}J c=[]}}J I 1u E(a).1Y(c)}J 9(E.1n(c))I 1u E(U)[E.1b.2d?"2d":"39"](c);I 6.6v(c.1c==1B&&c||(c.4c||c.K&&c!=18&&!c.1y&&c[0]!=W&&c[0].1y)&&E.2h(c)||[c])},4c:"1.2.1",7Y:G(){I 6.K},K:0,21:G(a){I a==W?E.2h(6):6[a]},2o:G(a){H b=E(a);b.4Y=6;I b},6v:G(a){6.K=0;1B.3A.1a.16(6,a);I 6},N:G(a,b){I E.N(6,a,b)},4I:G(a){H b=-1;6.N(G(i){9(6==a)b=i});I b},1x:G(f,d,e){H c=f;9(f.1c==3X)9(d==W)I 6.K&&E[e||"1x"](6[0],f)||W;J{c={};c[f]=d}I 6.N(G(a){L(H b 1i c)E.1x(e?6.R:6,b,E.1e(6,c[b],e,a,b))})},17:G(b,a){I 6.1x(b,a,"3C")},2g:G(e){9(1m e!="5i"&&e!=S)I 6.4n().3g(U.6F(e));H t="";E.N(e||6,G(){E.N(6.3j,G(){9(6.1y!=8)t+=6.1y!=1?6.6x:E.1b.2g([6])})});I t},5m:G(b){9(6[0])E(b,6[0].3H).6u().3d(6[0]).1X(G(){H a=6;1W(a.1w)a=a.1w;I a}).3g(6);I 6},8m:G(a){I 6.N(G(){E(6).6q().5m(a)})},8d:G(a){I 6.N(G(){E(6).5m(a)})},3g:G(){I 6.3z(1q,Q,1,G(a){6.58(a)})},6j:G(){I 6.3z(1q,Q,-1,G(a){6.3d(a,6.1w)})},6g:G(){I 6.3z(1q,P,1,G(a){6.12.3d(a,6)})},50:G(){I 6.3z(1q,P,-1,G(a){6.12.3d(a,6.2q)})},2D:G(){I 6.4Y||E([])},1Y:G(t){H b=E.1X(6,G(a){I E.1Y(t,a)});I 6.2o(/[^+>] [^+>]/.14(t)||t.1g("..")>-1?E.4V(b):b)},6u:G(e){H f=6.1X(G(){I 6.67?E(6.67)[0]:6.4R(Q)});H d=f.1Y("*").4O().N(G(){9(6[F]!=W)6[F]=S});9(e===Q)6.1Y("*").4O().N(G(i){H c=E.M(6,"2P");L(H a 1i c)L(H b 1i c[a])E.1j.1f(d[i],a,c[a][b],c[a][b].M)});I f},1E:G(t){I 6.2o(E.1n(t)&&E.2W(6,G(b,a){I t.16(b,[a])})||E.3m(t,6))},5V:G(t){I 6.2o(t.1c==3X&&E.3m(t,6,Q)||E.2W(6,G(a){I(t.1c==1B||t.4c)?E.2A(a,t)<0:a!=t}))},1f:G(t){I 6.2o(E.1R(6.21(),t.1c==3X?E(t).21():t.K!=W&&(!t.11||E.11(t,"2Y"))?t:[t]))},3t:G(a){I a?E.3m(a,6).K>0:P},7c:G(a){I 6.3t("."+a)},3i:G(b){9(b==W){9(6.K){H c=6[0];9(E.11(c,"24")){H e=c.4Z,a=[],Y=c.Y,2G=c.O=="24-2G";9(e<0)I S;L(H i=2G?e:0,33=2G?e+1:Y.K;i<33;i++){H d=Y[i];9(d.26){H b=E.V.1h&&!d.9V["1Q"].9L?d.2g:d.1Q;9(2G)I b;a.1a(b)}}I a}J I 6[0].1Q.1p(/\\r/g,"")}}J I 6.N(G(){9(b.1c==1B&&/4k|5j/.14(6.O))6.2Q=(E.2A(6.1Q,b)>=0||E.2A(6.2H,b)>=0);J 9(E.11(6,"24")){H a=b.1c==1B?b:[b];E("9h",6).N(G(){6.26=(E.2A(6.1Q,a)>=0||E.2A(6.2g,a)>=0)});9(!a.K)6.4Z=-1}J 6.1Q=b})},4o:G(a){I a==W?(6.K?6[0].3O:S):6.4n().3g(a)},6H:G(a){I 6.50(a).28()},6E:G(i){I 6.2J(i,i+1)},2J:G(){I 6.2o(1B.3A.2J.16(6,1q))},1X:G(b){I 6.2o(E.1X(6,G(a,i){I b.2O(a,i,a)}))},4O:G(){I 6.1f(6.4Y)},3z:G(f,d,g,e){H c=6.K>1,a;I 6.N(G(){9(!a){a=E.4D(f,6.3H);9(g<0)a.8U()}H b=6;9(d&&E.11(6,"1I")&&E.11(a[0],"4m"))b=6.4l("1K")[0]||6.58(U.5B("1K"));E.N(a,G(){H a=c?6.4R(Q):6;9(!5A(0,a))e.2O(b,a)})})}};G 5A(i,b){H a=E.11(b,"1J");9(a){9(b.3k)E.3G({1d:b.3k,3e:P,1V:"1J"});J E.5f(b.2g||b.6s||b.3O||"");9(b.12)b.12.3b(b)}J 9(b.1y==1)E("1J",b).N(5A);I a}E.1k=E.1b.1k=G(){H c=1q[0]||{},a=1,2c=1q.K,5e=P;9(c.1c==8o){5e=c;c=1q[1]||{}}9(2c==1){c=6;a=0}H b;L(;a<2c;a++)9((b=1q[a])!=S)L(H i 1i b){9(c==b[i])6r;9(5e&&1m b[i]==\'5i\'&&c[i])E.1k(c[i],b[i]);J 9(b[i]!=W)c[i]=b[i]}I c};H F="15"+(1u 3D()).3B(),6p=0,5c={};E.1k({8a:G(a){18.$=D;9(a)18.15=w;I E},1n:G(a){I!!a&&1m a!="1M"&&!a.11&&a.1c!=1B&&/G/i.14(a+"")},4a:G(a){I a.2V&&!a.1G||a.37&&a.3H&&!a.3H.1G},5f:G(a){a=E.36(a);9(a){9(18.6l)18.6l(a);J 9(E.V.1N)18.56(a,0);J 3w.2O(18,a)}},11:G(b,a){I b.11&&b.11.27()==a.27()},1L:{},M:G(c,d,b){c=c==18?5c:c;H a=c[F];9(!a)a=c[F]=++6p;9(d&&!E.1L[a])E.1L[a]={};9(b!=W)E.1L[a][d]=b;I d?E.1L[a][d]:a},30:G(c,b){c=c==18?5c:c;H a=c[F];9(b){9(E.1L[a]){2E E.1L[a][b];b="";L(b 1i E.1L[a])1T;9(!b)E.30(c)}}J{2a{2E c[F]}29(e){9(c.53)c.53(F)}2E E.1L[a]}},N:G(a,b,c){9(c){9(a.K==W)L(H i 1i a)b.16(a[i],c);J L(H i=0,48=a.K;i<48;i++)9(b.16(a[i],c)===P)1T}J{9(a.K==W)L(H i 1i a)b.2O(a[i],i,a[i]);J L(H i=0,48=a.K,3i=a[0];i<48&&b.2O(3i,i,3i)!==P;3i=a[++i]){}}I a},1e:G(c,b,d,e,a){9(E.1n(b))b=b.2O(c,[e]);H f=/z-?4I|7T-?7Q|1r|69|7P-?1H/i;I b&&b.1c==4W&&d=="3C"&&!f.14(a)?b+"2T":b},1o:{1f:G(b,c){E.N((c||"").2l(/\\s+/),G(i,a){9(!E.1o.3K(b.1o,a))b.1o+=(b.1o?" ":"")+a})},28:G(b,c){b.1o=c!=W?E.2W(b.1o.2l(/\\s+/),G(a){I!E.1o.3K(c,a)}).66(" "):""},3K:G(t,c){I E.2A(c,(t.1o||t).3s().2l(/\\s+/))>-1}},2k:G(e,o,f){L(H i 1i o){e.R["3r"+i]=e.R[i];e.R[i]=o[i]}f.16(e,[]);L(H i 1i o)e.R[i]=e.R["3r"+i]},17:G(e,p){9(p=="1H"||p=="2N"){H b={},42,41,d=["7J","7I","7G","7F"];E.N(d,G(){b["7C"+6]=0;b["7B"+6+"5Z"]=0});E.2k(e,b,G(){9(E(e).3t(\':3R\')){42=e.7A;41=e.7w}J{e=E(e.4R(Q)).1Y(":4k").5W("2Q").2D().17({4C:"1P",2X:"4F",19:"2Z",7o:"0",1S:"0"}).5R(e.12)[0];H a=E.17(e.12,"2X")||"3V";9(a=="3V")e.12.R.2X="7g";42=e.7e;41=e.7b;9(a=="3V")e.12.R.2X="3V";e.12.3b(e)}});I p=="1H"?42:41}I E.3C(e,p)},3C:G(h,j,i){H g,2w=[],2k=[];G 3n(a){9(!E.V.1N)I P;H b=U.3o.3Z(a,S);I!b||b.4y("3n")==""}9(j=="1r"&&E.V.1h){g=E.1x(h.R,"1r");I g==""?"1":g}9(j.1t(/4u/i))j=y;9(!i&&h.R[j])g=h.R[j];J 9(U.3o&&U.3o.3Z){9(j.1t(/4u/i))j="4u";j=j.1p(/([A-Z])/g,"-$1").2p();H d=U.3o.3Z(h,S);9(d&&!3n(h))g=d.4y(j);J{L(H a=h;a&&3n(a);a=a.12)2w.4w(a);L(a=0;a<2w.K;a++)9(3n(2w[a])){2k[a]=2w[a].R.19;2w[a].R.19="2Z"}g=j=="19"&&2k[2w.K-1]!=S?"2s":U.3o.3Z(h,S).4y(j)||"";L(a=0;a<2k.K;a++)9(2k[a]!=S)2w[a].R.19=2k[a]}9(j=="1r"&&g=="")g="1"}J 9(h.3Q){H f=j.1p(/\\-(\\w)/g,G(m,c){I c.27()});g=h.3Q[j]||h.3Q[f];9(!/^\\d+(2T)?$/i.14(g)&&/^\\d/.14(g)){H k=h.R.1S;H e=h.4v.1S;h.4v.1S=h.3Q.1S;h.R.1S=g||0;g=h.R.71+"2T";h.R.1S=k;h.4v.1S=e}}I g},4D:G(a,e){H r=[];e=e||U;E.N(a,G(i,d){9(!d)I;9(d.1c==4W)d=d.3s();9(1m d=="1M"){d=d.1p(/(<(\\w+)[^>]*?)\\/>/g,G(m,a,b){I b.1t(/^(70|6Z|6Y|9Q|4t|9N|9K|3a|9G|9E)$/i)?m:a+"></"+b+">"});H s=E.36(d).2p(),1s=e.5B("1s"),2x=[];H c=!s.1g("<9y")&&[1,"<24>","</24>"]||!s.1g("<9w")&&[1,"<6T>","</6T>"]||s.1t(/^<(9u|1K|9t|9r|9p)/)&&[1,"<1I>","</1I>"]||!s.1g("<4m")&&[2,"<1I><1K>","</1K></1I>"]||(!s.1g("<9m")||!s.1g("<9k"))&&[3,"<1I><1K><4m>","</4m></1K></1I>"]||!s.1g("<6Y")&&[2,"<1I><1K></1K><6L>","</6L></1I>"]||E.V.1h&&[1,"1s<1s>","</1s>"]||[0,"",""];1s.3O=c[1]+d+c[2];1W(c[0]--)1s=1s.5p;9(E.V.1h){9(!s.1g("<1I")&&s.1g("<1K")<0)2x=1s.1w&&1s.1w.3j;J 9(c[1]=="<1I>"&&s.1g("<1K")<0)2x=1s.3j;L(H n=2x.K-1;n>=0;--n)9(E.11(2x[n],"1K")&&!2x[n].3j.K)2x[n].12.3b(2x[n]);9(/^\\s/.14(d))1s.3d(e.6F(d.1t(/^\\s*/)[0]),1s.1w)}d=E.2h(1s.3j)}9(0===d.K&&(!E.11(d,"2Y")&&!E.11(d,"24")))I;9(d[0]==W||E.11(d,"2Y")||d.Y)r.1a(d);J r=E.1R(r,d)});I r},1x:G(c,d,a){H e=E.4a(c)?{}:E.5o;9(d=="26"&&E.V.1N)c.12.4Z;9(e[d]){9(a!=W)c[e[d]]=a;I c[e[d]]}J 9(E.V.1h&&d=="R")I E.1x(c.R,"9e",a);J 9(a==W&&E.V.1h&&E.11(c,"2Y")&&(d=="9d"||d=="9a"))I c.97(d).6x;J 9(c.37){9(a!=W){9(d=="O"&&E.11(c,"4t")&&c.12)6G"O 94 93\'t 92 91";c.90(d,a)}9(E.V.1h&&/6C|3k/.14(d)&&!E.4a(c))I c.4p(d,2);I c.4p(d)}J{9(d=="1r"&&E.V.1h){9(a!=W){c.69=1;c.1E=(c.1E||"").1p(/6O\\([^)]*\\)/,"")+(3I(a).3s()=="8S"?"":"6O(1r="+a*6A+")")}I c.1E?(3I(c.1E.1t(/1r=([^)]*)/)[1])/6A).3s():""}d=d.1p(/-([a-z])/8Q,G(z,b){I b.27()});9(a!=W)c[d]=a;I c[d]}},36:G(t){I(t||"").1p(/^\\s+|\\s+$/g,"")},2h:G(a){H r=[];9(1m a!="8P")L(H i=0,2c=a.K;i<2c;i++)r.1a(a[i]);J r=a.2J(0);I r},2A:G(b,a){L(H i=0,2c=a.K;i<2c;i++)9(a[i]==b)I i;I-1},1R:G(a,b){9(E.V.1h){L(H i=0;b[i];i++)9(b[i].1y!=8)a.1a(b[i])}J L(H i=0;b[i];i++)a.1a(b[i]);I a},4V:G(b){H r=[],2f={};2a{L(H i=0,6y=b.K;i<6y;i++){H a=E.M(b[i]);9(!2f[a]){2f[a]=Q;r.1a(b[i])}}}29(e){r=b}I r},2W:G(b,a,c){9(1m a=="1M")a=3w("P||G(a,i){I "+a+"}");H d=[];L(H i=0,4g=b.K;i<4g;i++)9(!c&&a(b[i],i)||c&&!a(b[i],i))d.1a(b[i]);I d},1X:G(c,b){9(1m b=="1M")b=3w("P||G(a){I "+b+"}");H d=[];L(H i=0,4g=c.K;i<4g;i++){H a=b(c[i],i);9(a!==S&&a!=W){9(a.1c!=1B)a=[a];d=d.8M(a)}}I d}});H v=8K.8I.2p();E.V={4s:(v.1t(/.+(?:8F|8E|8C|8B)[\\/: ]([\\d.]+)/)||[])[1],1N:/6w/.14(v),34:/34/.14(v),1h:/1h/.14(v)&&!/34/.14(v),35:/35/.14(v)&&!/(8z|6w)/.14(v)};H y=E.V.1h?"4h":"5h";E.1k({5g:!E.V.1h||U.8y=="8x",4h:E.V.1h?"4h":"5h",5o:{"L":"8w","8v":"1o","4u":y,5h:y,4h:y,3O:"3O",1o:"1o",1Q:"1Q",3c:"3c",2Q:"2Q",8u:"8t",26:"26",8s:"8r"}});E.N({1D:"a.12",8q:"15.4e(a,\'12\')",8p:"15.2I(a,2,\'2q\')",8n:"15.2I(a,2,\'4d\')",8l:"15.4e(a,\'2q\')",8k:"15.4e(a,\'4d\')",8j:"15.5d(a.12.1w,a)",8i:"15.5d(a.1w)",6q:"15.11(a,\'8h\')?a.8f||a.8e.U:15.2h(a.3j)"},G(i,n){E.1b[i]=G(a){H b=E.1X(6,n);9(a&&1m a=="1M")b=E.3m(a,b);I 6.2o(E.4V(b))}});E.N({5R:"3g",8c:"6j",3d:"6g",8b:"50",89:"6H"},G(i,n){E.1b[i]=G(){H a=1q;I 6.N(G(){L(H j=0,2c=a.K;j<2c;j++)E(a[j])[n](6)})}});E.N({5W:G(a){E.1x(6,a,"");6.53(a)},88:G(c){E.1o.1f(6,c)},87:G(c){E.1o.28(6,c)},86:G(c){E.1o[E.1o.3K(6,c)?"28":"1f"](6,c)},28:G(a){9(!a||E.1E(a,[6]).r.K){E.30(6);6.12.3b(6)}},4n:G(){E("*",6).N(G(){E.30(6)});1W(6.1w)6.3b(6.1w)}},G(i,n){E.1b[i]=G(){I 6.N(n,1q)}});E.N(["85","5Z"],G(i,a){H n=a.2p();E.1b[n]=G(h){I 6[0]==18?E.V.1N&&3y["84"+a]||E.5g&&38.33(U.2V["5a"+a],U.1G["5a"+a])||U.1G["5a"+a]:6[0]==U?38.33(U.1G["6n"+a],U.1G["6m"+a]):h==W?(6.K?E.17(6[0],n):S):6.17(n,h.1c==3X?h:h+"2T")}});H C=E.V.1N&&3x(E.V.4s)<83?"(?:[\\\\w*57-]|\\\\\\\\.)":"(?:[\\\\w\\82-\\81*57-]|\\\\\\\\.)",6k=1u 47("^>\\\\s*("+C+"+)"),6i=1u 47("^("+C+"+)(#)("+C+"+)"),6h=1u 47("^([#.]?)("+C+"*)");E.1k({55:{"":"m[2]==\'*\'||15.11(a,m[2])","#":"a.4p(\'22\')==m[2]",":":{80:"i<m[3]-0",7Z:"i>m[3]-0",2I:"m[3]-0==i",6E:"m[3]-0==i",3v:"i==0",3u:"i==r.K-1",6f:"i%2==0",6e:"i%2","3v-46":"a.12.4l(\'*\')[0]==a","3u-46":"15.2I(a.12.5p,1,\'4d\')==a","7X-46":"!15.2I(a.12.5p,2,\'4d\')",1D:"a.1w",4n:"!a.1w",7W:"(a.6s||a.7V||15(a).2g()||\'\').1g(m[3])>=0",3R:\'"1P"!=a.O&&15.17(a,"19")!="2s"&&15.17(a,"4C")!="1P"\',1P:\'"1P"==a.O||15.17(a,"19")=="2s"||15.17(a,"4C")=="1P"\',7U:"!a.3c",3c:"a.3c",2Q:"a.2Q",26:"a.26||15.1x(a,\'26\')",2g:"\'2g\'==a.O",4k:"\'4k\'==a.O",5j:"\'5j\'==a.O",54:"\'54\'==a.O",52:"\'52\'==a.O",51:"\'51\'==a.O",6d:"\'6d\'==a.O",6c:"\'6c\'==a.O",2r:\'"2r"==a.O||15.11(a,"2r")\',4t:"/4t|24|6b|2r/i.14(a.11)",3K:"15.1Y(m[3],a).K",7S:"/h\\\\d/i.14(a.11)",7R:"15.2W(15.32,G(1b){I a==1b.T;}).K"}},6a:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1u 47("^([:.#]*)("+C+"+)")],3m:G(a,c,b){H d,2b=[];1W(a&&a!=d){d=a;H f=E.1E(a,c,b);a=f.t.1p(/^\\s*,\\s*/,"");2b=b?c=f.r:E.1R(2b,f.r)}I 2b},1Y:G(t,o){9(1m t!="1M")I[t];9(o&&!o.1y)o=S;o=o||U;H d=[o],2f=[],3u;1W(t&&3u!=t){H r=[];3u=t;t=E.36(t);H l=P;H g=6k;H m=g.2S(t);9(m){H p=m[1].27();L(H i=0;d[i];i++)L(H c=d[i].1w;c;c=c.2q)9(c.1y==1&&(p=="*"||c.11.27()==p.27()))r.1a(c);d=r;t=t.1p(g,"");9(t.1g(" ")==0)6r;l=Q}J{g=/^([>+~])\\s*(\\w*)/i;9((m=g.2S(t))!=S){r=[];H p=m[2],1R={};m=m[1];L(H j=0,31=d.K;j<31;j++){H n=m=="~"||m=="+"?d[j].2q:d[j].1w;L(;n;n=n.2q)9(n.1y==1){H h=E.M(n);9(m=="~"&&1R[h])1T;9(!p||n.11.27()==p.27()){9(m=="~")1R[h]=Q;r.1a(n)}9(m=="+")1T}}d=r;t=E.36(t.1p(g,""));l=Q}}9(t&&!l){9(!t.1g(",")){9(o==d[0])d.44();2f=E.1R(2f,d);r=d=[o];t=" "+t.68(1,t.K)}J{H k=6i;H m=k.2S(t);9(m){m=[0,m[2],m[3],m[1]]}J{k=6h;m=k.2S(t)}m[2]=m[2].1p(/\\\\/g,"");H f=d[d.K-1];9(m[1]=="#"&&f&&f.3S&&!E.4a(f)){H q=f.3S(m[2]);9((E.V.1h||E.V.34)&&q&&1m q.22=="1M"&&q.22!=m[2])q=E(\'[@22="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.11(q,m[3]))?[q]:[]}J{L(H i=0;d[i];i++){H a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];9(a=="*"&&d[i].11.2p()=="5i")a="3a";r=E.1R(r,d[i].4l(a))}9(m[1]==".")r=E.4X(r,m[2]);9(m[1]=="#"){H e=[];L(H i=0;r[i];i++)9(r[i].4p("22")==m[2]){e=[r[i]];1T}r=e}d=r}t=t.1p(k,"")}}9(t){H b=E.1E(t,r);d=r=b.r;t=E.36(b.t)}}9(t)d=[];9(d&&o==d[0])d.44();2f=E.1R(2f,d);I 2f},4X:G(r,m,a){m=" "+m+" ";H c=[];L(H i=0;r[i];i++){H b=(" "+r[i].1o+" ").1g(m)>=0;9(!a&&b||a&&!b)c.1a(r[i])}I c},1E:G(t,r,h){H d;1W(t&&t!=d){d=t;H p=E.6a,m;L(H i=0;p[i];i++){m=p[i].2S(t);9(m){t=t.7O(m[0].K);m[2]=m[2].1p(/\\\\/g,"");1T}}9(!m)1T;9(m[1]==":"&&m[2]=="5V")r=E.1E(m[3],r,Q).r;J 9(m[1]==".")r=E.4X(r,m[2],h);J 9(m[1]=="["){H g=[],O=m[3];L(H i=0,31=r.K;i<31;i++){H a=r[i],z=a[E.5o[m[2]]||m[2]];9(z==S||/6C|3k|26/.14(m[2]))z=E.1x(a,m[2])||\'\';9((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1g(m[5])||O=="$="&&z.68(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1g(m[5])>=0)^h)g.1a(a)}r=g}J 9(m[1]==":"&&m[2]=="2I-46"){H e={},g=[],14=/(\\d*)n\\+?(\\d*)/.2S(m[3]=="6f"&&"2n"||m[3]=="6e"&&"2n+1"||!/\\D/.14(m[3])&&"n+"+m[3]||m[3]),3v=(14[1]||1)-0,d=14[2]-0;L(H i=0,31=r.K;i<31;i++){H j=r[i],12=j.12,22=E.M(12);9(!e[22]){H c=1;L(H n=12.1w;n;n=n.2q)9(n.1y==1)n.4U=c++;e[22]=Q}H b=P;9(3v==1){9(d==0||j.4U==d)b=Q}J 9((j.4U+d)%3v==0)b=Q;9(b^h)g.1a(j)}r=g}J{H f=E.55[m[1]];9(1m f!="1M")f=E.55[m[1]][m[2]];f=3w("P||G(a,i){I "+f+"}");r=E.2W(r,f,h)}}I{r:r,t:t}},4e:G(b,c){H d=[];H a=b[c];1W(a&&a!=U){9(a.1y==1)d.1a(a);a=a[c]}I d},2I:G(a,e,c,b){e=e||1;H d=0;L(;a;a=a[c])9(a.1y==1&&++d==e)1T;I a},5d:G(n,a){H r=[];L(;n;n=n.2q){9(n.1y==1&&(!a||n!=a))r.1a(n)}I r}});E.1j={1f:G(g,e,c,h){9(E.V.1h&&g.4j!=W)g=18;9(!c.2u)c.2u=6.2u++;9(h!=W){H d=c;c=G(){I d.16(6,1q)};c.M=h;c.2u=d.2u}H i=e.2l(".");e=i[0];c.O=i[1];H b=E.M(g,"2P")||E.M(g,"2P",{});H f=E.M(g,"2t",G(){H a;9(1m E=="W"||E.1j.4T)I a;a=E.1j.2t.16(g,1q);I a});H j=b[e];9(!j){j=b[e]={};9(g.4S)g.4S(e,f,P);J g.7N("43"+e,f)}j[c.2u]=c;6.1Z[e]=Q},2u:1,1Z:{},28:G(d,c,b){H e=E.M(d,"2P"),2L,4I;9(1m c=="1M"){H a=c.2l(".");c=a[0]}9(e){9(c&&c.O){b=c.4Q;c=c.O}9(!c){L(c 1i e)6.28(d,c)}J 9(e[c]){9(b)2E e[c][b.2u];J L(b 1i e[c])9(!a[1]||e[c][b].O==a[1])2E e[c][b];L(2L 1i e[c])1T;9(!2L){9(d.4P)d.4P(c,E.M(d,"2t"),P);J d.7M("43"+c,E.M(d,"2t"));2L=S;2E e[c]}}L(2L 1i e)1T;9(!2L){E.30(d,"2P");E.30(d,"2t")}}},1F:G(d,b,e,c,f){b=E.2h(b||[]);9(!e){9(6.1Z[d])E("*").1f([18,U]).1F(d,b)}J{H a,2L,1b=E.1n(e[d]||S),4N=!b[0]||!b[0].2M;9(4N)b.4w(6.4M({O:d,2m:e}));b[0].O=d;9(E.1n(E.M(e,"2t")))a=E.M(e,"2t").16(e,b);9(!1b&&e["43"+d]&&e["43"+d].16(e,b)===P)a=P;9(4N)b.44();9(f&&f.16(e,b)===P)a=P;9(1b&&c!==P&&a!==P&&!(E.11(e,\'a\')&&d=="4L")){6.4T=Q;e[d]()}6.4T=P}I a},2t:G(d){H a;d=E.1j.4M(d||18.1j||{});H b=d.O.2l(".");d.O=b[0];H c=E.M(6,"2P")&&E.M(6,"2P")[d.O],3q=1B.3A.2J.2O(1q,1);3q.4w(d);L(H j 1i c){3q[0].4Q=c[j];3q[0].M=c[j].M;9(!b[1]||c[j].O==b[1]){H e=c[j].16(6,3q);9(a!==P)a=e;9(e===P){d.2M();d.3p()}}}9(E.V.1h)d.2m=d.2M=d.3p=d.4Q=d.M=S;I a},4M:G(c){H a=c;c=E.1k({},a);c.2M=G(){9(a.2M)a.2M();a.7L=P};c.3p=G(){9(a.3p)a.3p();a.7K=Q};9(!c.2m&&c.65)c.2m=c.65;9(E.V.1N&&c.2m.1y==3)c.2m=a.2m.12;9(!c.4K&&c.4J)c.4K=c.4J==c.2m?c.7H:c.4J;9(c.64==S&&c.63!=S){H e=U.2V,b=U.1G;c.64=c.63+(e&&e.2R||b.2R||0);c.7E=c.7D+(e&&e.2B||b.2B||0)}9(!c.3Y&&(c.61||c.60))c.3Y=c.61||c.60;9(!c.5F&&c.5D)c.5F=c.5D;9(!c.3Y&&c.2r)c.3Y=(c.2r&1?1:(c.2r&2?3:(c.2r&4?2:0)));I c}};E.1b.1k({3W:G(c,a,b){I c=="5Y"?6.2G(c,a,b):6.N(G(){E.1j.1f(6,c,b||a,b&&a)})},2G:G(d,b,c){I 6.N(G(){E.1j.1f(6,d,G(a){E(6).5X(a);I(c||b).16(6,1q)},c&&b)})},5X:G(a,b){I 6.N(G(){E.1j.28(6,a,b)})},1F:G(c,a,b){I 6.N(G(){E.1j.1F(c,a,6,Q,b)})},7x:G(c,a,b){9(6[0])I E.1j.1F(c,a,6[0],P,b)},25:G(){H a=1q;I 6.4L(G(e){6.4H=0==6.4H?1:0;e.2M();I a[6.4H].16(6,[e])||P})},7v:G(f,g){G 4G(e){H p=e.4K;1W(p&&p!=6)2a{p=p.12}29(e){p=6};9(p==6)I P;I(e.O=="4x"?f:g).16(6,[e])}I 6.4x(4G).5U(4G)},2d:G(f){5T();9(E.3T)f.16(U,[E]);J E.3l.1a(G(){I f.16(6,[E])});I 6}});E.1k({3T:P,3l:[],2d:G(){9(!E.3T){E.3T=Q;9(E.3l){E.N(E.3l,G(){6.16(U)});E.3l=S}9(E.V.35||E.V.34)U.4P("5S",E.2d,P);9(!18.7t.K)E(18).39(G(){E("#4E").28()})}}});E.N(("7s,7r,39,7q,6n,5Y,4L,7p,"+"7n,7m,7l,4x,5U,7k,24,"+"51,7j,7i,7h,3U").2l(","),G(i,o){E.1b[o]=G(f){I f?6.3W(o,f):6.1F(o)}});H x=P;G 5T(){9(x)I;x=Q;9(E.V.35||E.V.34)U.4S("5S",E.2d,P);J 9(E.V.1h){U.7f("<7d"+"7y 22=4E 7z=Q "+"3k=//:><\\/1J>");H a=U.3S("4E");9(a)a.62=G(){9(6.2C!="1l")I;E.2d()};a=S}J 9(E.V.1N)E.4B=4j(G(){9(U.2C=="5Q"||U.2C=="1l"){4A(E.4B);E.4B=S;E.2d()}},10);E.1j.1f(18,"39",E.2d)}E.1b.1k({39:G(g,d,c){9(E.1n(g))I 6.3W("39",g);H e=g.1g(" ");9(e>=0){H i=g.2J(e,g.K);g=g.2J(0,e)}c=c||G(){};H f="4z";9(d)9(E.1n(d)){c=d;d=S}J{d=E.3a(d);f="5P"}H h=6;E.3G({1d:g,O:f,M:d,1l:G(a,b){9(b=="1C"||b=="5O")h.4o(i?E("<1s/>").3g(a.40.1p(/<1J(.|\\s)*?\\/1J>/g,"")).1Y(i):a.40);56(G(){h.N(c,[a.40,b,a])},13)}});I 6},7a:G(){I E.3a(6.5M())},5M:G(){I 6.1X(G(){I E.11(6,"2Y")?E.2h(6.79):6}).1E(G(){I 6.2H&&!6.3c&&(6.2Q||/24|6b/i.14(6.11)||/2g|1P|52/i.14(6.O))}).1X(G(i,c){H b=E(6).3i();I b==S?S:b.1c==1B?E.1X(b,G(a,i){I{2H:c.2H,1Q:a}}):{2H:c.2H,1Q:b}}).21()}});E.N("5L,5K,6t,5J,5I,5H".2l(","),G(i,o){E.1b[o]=G(f){I 6.3W(o,f)}});H B=(1u 3D).3B();E.1k({21:G(d,b,a,c){9(E.1n(b)){a=b;b=S}I E.3G({O:"4z",1d:d,M:b,1C:a,1V:c})},78:G(b,a){I E.21(b,S,a,"1J")},77:G(c,b,a){I E.21(c,b,a,"45")},76:G(d,b,a,c){9(E.1n(b)){a=b;b={}}I E.3G({O:"5P",1d:d,M:b,1C:a,1V:c})},75:G(a){E.1k(E.59,a)},59:{1Z:Q,O:"4z",2z:0,5G:"74/x-73-2Y-72",6o:Q,3e:Q,M:S},49:{},3G:G(s){H f,2y=/=(\\?|%3F)/g,1v,M;s=E.1k(Q,s,E.1k(Q,{},E.59,s));9(s.M&&s.6o&&1m s.M!="1M")s.M=E.3a(s.M);9(s.1V=="4b"){9(s.O.2p()=="21"){9(!s.1d.1t(2y))s.1d+=(s.1d.1t(/\\?/)?"&":"?")+(s.4b||"5E")+"=?"}J 9(!s.M||!s.M.1t(2y))s.M=(s.M?s.M+"&":"")+(s.4b||"5E")+"=?";s.1V="45"}9(s.1V=="45"&&(s.M&&s.M.1t(2y)||s.1d.1t(2y))){f="4b"+B++;9(s.M)s.M=s.M.1p(2y,"="+f);s.1d=s.1d.1p(2y,"="+f);s.1V="1J";18[f]=G(a){M=a;1C();1l();18[f]=W;2a{2E 18[f]}29(e){}}}9(s.1V=="1J"&&s.1L==S)s.1L=P;9(s.1L===P&&s.O.2p()=="21")s.1d+=(s.1d.1t(/\\?/)?"&":"?")+"57="+(1u 3D()).3B();9(s.M&&s.O.2p()=="21"){s.1d+=(s.1d.1t(/\\?/)?"&":"?")+s.M;s.M=S}9(s.1Z&&!E.5b++)E.1j.1F("5L");9(!s.1d.1g("8g")&&s.1V=="1J"){H h=U.4l("9U")[0];H g=U.5B("1J");g.3k=s.1d;9(!f&&(s.1C||s.1l)){H j=P;g.9R=g.62=G(){9(!j&&(!6.2C||6.2C=="5Q"||6.2C=="1l")){j=Q;1C();1l();h.3b(g)}}}h.58(g);I}H k=P;H i=18.6X?1u 6X("9P.9O"):1u 6W();i.9M(s.O,s.1d,s.3e);9(s.M)i.5C("9J-9I",s.5G);9(s.5y)i.5C("9H-5x-9F",E.49[s.1d]||"9D, 9C 9B 9A 5v:5v:5v 9z");i.5C("X-9x-9v","6W");9(s.6U)s.6U(i);9(s.1Z)E.1j.1F("5H",[i,s]);H c=G(a){9(!k&&i&&(i.2C==4||a=="2z")){k=Q;9(d){4A(d);d=S}1v=a=="2z"&&"2z"||!E.6S(i)&&"3U"||s.5y&&E.6R(i,s.1d)&&"5O"||"1C";9(1v=="1C"){2a{M=E.6Q(i,s.1V)}29(e){1v="5k"}}9(1v=="1C"){H b;2a{b=i.5s("6P-5x")}29(e){}9(s.5y&&b)E.49[s.1d]=b;9(!f)1C()}J E.5r(s,i,1v);1l();9(s.3e)i=S}};9(s.3e){H d=4j(c,13);9(s.2z>0)56(G(){9(i){i.9q();9(!k)c("2z")}},s.2z)}2a{i.9o(s.M)}29(e){E.5r(s,i,S,e)}9(!s.3e)c();I i;G 1C(){9(s.1C)s.1C(M,1v);9(s.1Z)E.1j.1F("5I",[i,s])}G 1l(){9(s.1l)s.1l(i,1v);9(s.1Z)E.1j.1F("6t",[i,s]);9(s.1Z&&!--E.5b)E.1j.1F("5K")}},5r:G(s,a,b,e){9(s.3U)s.3U(a,b,e);9(s.1Z)E.1j.1F("5J",[a,s,e])},5b:0,6S:G(r){2a{I!r.1v&&9n.9l=="54:"||(r.1v>=6N&&r.1v<9j)||r.1v==6M||E.V.1N&&r.1v==W}29(e){}I P},6R:G(a,c){2a{H b=a.5s("6P-5x");I a.1v==6M||b==E.49[c]||E.V.1N&&a.1v==W}29(e){}I P},6Q:G(r,b){H c=r.5s("9i-O");H d=b=="6K"||!b&&c&&c.1g("6K")>=0;H a=d?r.9g:r.40;9(d&&a.2V.37=="5k")6G"5k";9(b=="1J")E.5f(a);9(b=="45")a=3w("("+a+")");I a},3a:G(a){H s=[];9(a.1c==1B||a.4c)E.N(a,G(){s.1a(3f(6.2H)+"="+3f(6.1Q))});J L(H j 1i a)9(a[j]&&a[j].1c==1B)E.N(a[j],G(){s.1a(3f(j)+"="+3f(6))});J s.1a(3f(j)+"="+3f(a[j]));I s.66("&").1p(/%20/g,"+")}});E.1b.1k({1A:G(b,a){I b?6.1U({1H:"1A",2N:"1A",1r:"1A"},b,a):6.1E(":1P").N(G(){6.R.19=6.3h?6.3h:"";9(E.17(6,"19")=="2s")6.R.19="2Z"}).2D()},1z:G(b,a){I b?6.1U({1H:"1z",2N:"1z",1r:"1z"},b,a):6.1E(":3R").N(G(){6.3h=6.3h||E.17(6,"19");9(6.3h=="2s")6.3h="2Z";6.R.19="2s"}).2D()},6J:E.1b.25,25:G(a,b){I E.1n(a)&&E.1n(b)?6.6J(a,b):a?6.1U({1H:"25",2N:"25",1r:"25"},a,b):6.N(G(){E(6)[E(6).3t(":1P")?"1A":"1z"]()})},9c:G(b,a){I 6.1U({1H:"1A"},b,a)},9b:G(b,a){I 6.1U({1H:"1z"},b,a)},99:G(b,a){I 6.1U({1H:"25"},b,a)},98:G(b,a){I 6.1U({1r:"1A"},b,a)},96:G(b,a){I 6.1U({1r:"1z"},b,a)},95:G(c,a,b){I 6.1U({1r:a},c,b)},1U:G(k,i,h,g){H j=E.6D(i,h,g);I 6[j.3L===P?"N":"3L"](G(){j=E.1k({},j);H f=E(6).3t(":1P"),3y=6;L(H p 1i k){9(k[p]=="1z"&&f||k[p]=="1A"&&!f)I E.1n(j.1l)&&j.1l.16(6);9(p=="1H"||p=="2N"){j.19=E.17(6,"19");j.2U=6.R.2U}}9(j.2U!=S)6.R.2U="1P";j.3M=E.1k({},k);E.N(k,G(c,a){H e=1u E.2j(3y,j,c);9(/25|1A|1z/.14(a))e[a=="25"?f?"1A":"1z":a](k);J{H b=a.3s().1t(/^([+-]=)?([\\d+-.]+)(.*)$/),1O=e.2b(Q)||0;9(b){H d=3I(b[2]),2i=b[3]||"2T";9(2i!="2T"){3y.R[c]=(d||1)+2i;1O=((d||1)/e.2b(Q))*1O;3y.R[c]=1O+2i}9(b[1])d=((b[1]=="-="?-1:1)*d)+1O;e.3N(1O,d,2i)}J e.3N(1O,a,"")}});I Q})},3L:G(a,b){9(E.1n(a)){b=a;a="2j"}9(!a||(1m a=="1M"&&!b))I A(6[0],a);I 6.N(G(){9(b.1c==1B)A(6,a,b);J{A(6,a).1a(b);9(A(6,a).K==1)b.16(6)}})},9f:G(){H a=E.32;I 6.N(G(){L(H i=0;i<a.K;i++)9(a[i].T==6)a.6I(i--,1)}).5n()}});H A=G(b,c,a){9(!b)I;H q=E.M(b,c+"3L");9(!q||a)q=E.M(b,c+"3L",a?E.2h(a):[]);I q};E.1b.5n=G(a){a=a||"2j";I 6.N(G(){H q=A(6,a);q.44();9(q.K)q[0].16(6)})};E.1k({6D:G(b,a,c){H d=b&&b.1c==8Z?b:{1l:c||!c&&a||E.1n(b)&&b,2e:b,3J:c&&a||a&&a.1c!=8Y&&a};d.2e=(d.2e&&d.2e.1c==4W?d.2e:{8X:8W,8V:6N}[d.2e])||8T;d.3r=d.1l;d.1l=G(){E(6).5n();9(E.1n(d.3r))d.3r.16(6)};I d},3J:{6B:G(p,n,b,a){I b+a*p},5q:G(p,n,b,a){I((-38.9s(p*38.8R)/2)+0.5)*a+b}},32:[],2j:G(b,c,a){6.Y=c;6.T=b;6.1e=a;9(!c.3P)c.3P={}}});E.2j.3A={4r:G(){9(6.Y.2F)6.Y.2F.16(6.T,[6.2v,6]);(E.2j.2F[6.1e]||E.2j.2F.6z)(6);9(6.1e=="1H"||6.1e=="2N")6.T.R.19="2Z"},2b:G(a){9(6.T[6.1e]!=S&&6.T.R[6.1e]==S)I 6.T[6.1e];H r=3I(E.3C(6.T,6.1e,a));I r&&r>-8O?r:3I(E.17(6.T,6.1e))||0},3N:G(c,b,e){6.5u=(1u 3D()).3B();6.1O=c;6.2D=b;6.2i=e||6.2i||"2T";6.2v=6.1O;6.4q=6.4i=0;6.4r();H f=6;G t(){I f.2F()}t.T=6.T;E.32.1a(t);9(E.32.K==1){H d=4j(G(){H a=E.32;L(H i=0;i<a.K;i++)9(!a[i]())a.6I(i--,1);9(!a.K)4A(d)},13)}},1A:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1A=Q;6.3N(0,6.2b());9(6.1e=="2N"||6.1e=="1H")6.T.R[6.1e]="8N";E(6.T).1A()},1z:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1z=Q;6.3N(6.2b(),0)},2F:G(){H t=(1u 3D()).3B();9(t>6.Y.2e+6.5u){6.2v=6.2D;6.4q=6.4i=1;6.4r();6.Y.3M[6.1e]=Q;H a=Q;L(H i 1i 6.Y.3M)9(6.Y.3M[i]!==Q)a=P;9(a){9(6.Y.19!=S){6.T.R.2U=6.Y.2U;6.T.R.19=6.Y.19;9(E.17(6.T,"19")=="2s")6.T.R.19="2Z"}9(6.Y.1z)6.T.R.19="2s";9(6.Y.1z||6.Y.1A)L(H p 1i 6.Y.3M)E.1x(6.T.R,p,6.Y.3P[p])}9(a&&E.1n(6.Y.1l))6.Y.1l.16(6.T);I P}J{H n=t-6.5u;6.4i=n/6.Y.2e;6.4q=E.3J[6.Y.3J||(E.3J.5q?"5q":"6B")](6.4i,n,0,1,6.Y.2e);6.2v=6.1O+((6.2D-6.1O)*6.4q);6.4r()}I Q}};E.2j.2F={2R:G(a){a.T.2R=a.2v},2B:G(a){a.T.2B=a.2v},1r:G(a){E.1x(a.T.R,"1r",a.2v)},6z:G(a){a.T.R[a.1e]=a.2v+a.2i}};E.1b.6m=G(){H c=0,3E=0,T=6[0],5t;9(T)8L(E.V){H b=E.17(T,"2X")=="4F",1D=T.12,23=T.23,2K=T.3H,4f=1N&&3x(4s)<8J;9(T.6V){5w=T.6V();1f(5w.1S+38.33(2K.2V.2R,2K.1G.2R),5w.3E+38.33(2K.2V.2B,2K.1G.2B));9(1h){H d=E("4o").17("8H");d=(d=="8G"||E.5g&&3x(4s)>=7)&&2||d;1f(-d,-d)}}J{1f(T.5l,T.5z);1W(23){1f(23.5l,23.5z);9(35&&/^t[d|h]$/i.14(1D.37)||!4f)d(23);9(4f&&!b&&E.17(23,"2X")=="4F")b=Q;23=23.23}1W(1D.37&&!/^1G|4o$/i.14(1D.37)){9(!/^8D|1I-9S.*$/i.14(E.17(1D,"19")))1f(-1D.2R,-1D.2B);9(35&&E.17(1D,"2U")!="3R")d(1D);1D=1D.12}9(4f&&b)1f(-2K.1G.5l,-2K.1G.5z)}5t={3E:3E,1S:c}}I 5t;G d(a){1f(E.17(a,"9T"),E.17(a,"8A"))}G 1f(l,t){c+=3x(l)||0;3E+=3x(t)||0}}})();',62,616,'||||||this|||if|||||||||||||||||||||||||||||||||function|var|return|else|length|for|data|each|type|false|true|style|null|elem|document|browser|undefined||options|||nodeName|parentNode||test|jQuery|apply|css|window|display|push|fn|constructor|url|prop|add|indexOf|msie|in|event|extend|complete|typeof|isFunction|className|replace|arguments|opacity|div|match|new|status|firstChild|attr|nodeType|hide|show|Array|success|parent|filter|trigger|body|height|table|script|tbody|cache|string|safari|start|hidden|value|merge|left|break|animate|dataType|while|map|find|global||get|id|offsetParent|select|toggle|selected|toUpperCase|remove|catch|try|cur|al|ready|duration|done|text|makeArray|unit|fx|swap|split|target||pushStack|toLowerCase|nextSibling|button|none|handle|guid|now|stack|tb|jsre|timeout|inArray|scrollTop|readyState|end|delete|step|one|name|nth|slice|doc|ret|preventDefault|width|call|events|checked|scrollLeft|exec|px|overflow|documentElement|grep|position|form|block|removeData|rl|timers|max|opera|mozilla|trim|tagName|Math|load|param|removeChild|disabled|insertBefore|async|encodeURIComponent|append|oldblock|val|childNodes|src|readyList|multiFilter|color|defaultView|stopPropagation|args|old|toString|is|last|first|eval|parseInt|self|domManip|prototype|getTime|curCSS|Date|top||ajax|ownerDocument|parseFloat|easing|has|queue|curAnim|custom|innerHTML|orig|currentStyle|visible|getElementById|isReady|error|static|bind|String|which|getComputedStyle|responseText|oWidth|oHeight|on|shift|json|child|RegExp|ol|lastModified|isXMLDoc|jsonp|jquery|previousSibling|dir|safari2|el|styleFloat|state|setInterval|radio|getElementsByTagName|tr|empty|html|getAttribute|pos|update|version|input|float|runtimeStyle|unshift|mouseover|getPropertyValue|GET|clearInterval|safariTimer|visibility|clean|__ie_init|absolute|handleHover|lastToggle|index|fromElement|relatedTarget|click|fix|evt|andSelf|removeEventListener|handler|cloneNode|addEventListener|triggered|nodeIndex|unique|Number|classFilter|prevObject|selectedIndex|after|submit|password|removeAttribute|file|expr|setTimeout|_|appendChild|ajaxSettings|client|active|win|sibling|deep|globalEval|boxModel|cssFloat|object|checkbox|parsererror|offsetLeft|wrapAll|dequeue|props|lastChild|swing|handleError|getResponseHeader|results|startTime|00|box|Modified|ifModified|offsetTop|evalScript|createElement|setRequestHeader|ctrlKey|callback|metaKey|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxStop|ajaxStart|serializeArray|init|notmodified|POST|loaded|appendTo|DOMContentLoaded|bindReady|mouseout|not|removeAttr|unbind|unload|Width|keyCode|charCode|onreadystatechange|clientX|pageX|srcElement|join|outerHTML|substr|zoom|parse|textarea|reset|image|odd|even|before|quickClass|quickID|prepend|quickChild|execScript|offset|scroll|processData|uuid|contents|continue|textContent|ajaxComplete|clone|setArray|webkit|nodeValue|fl|_default|100|linear|href|speed|eq|createTextNode|throw|replaceWith|splice|_toggle|xml|colgroup|304|200|alpha|Last|httpData|httpNotModified|httpSuccess|fieldset|beforeSend|getBoundingClientRect|XMLHttpRequest|ActiveXObject|col|br|abbr|pixelLeft|urlencoded|www|application|ajaxSetup|post|getJSON|getScript|elements|serialize|clientWidth|hasClass|scr|clientHeight|write|relative|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|right|dblclick|resize|focus|blur|frames|instanceof|hover|offsetWidth|triggerHandler|ipt|defer|offsetHeight|border|padding|clientY|pageY|Left|Right|toElement|Bottom|Top|cancelBubble|returnValue|detachEvent|attachEvent|substring|line|weight|animated|header|font|enabled|innerText|contains|only|size|gt|lt|uFFFF|u0128|417|inner|Height|toggleClass|removeClass|addClass|replaceAll|noConflict|insertAfter|prependTo|wrap|contentWindow|contentDocument|http|iframe|children|siblings|prevAll|nextAll|wrapInner|prev|Boolean|next|parents|maxLength|maxlength|readOnly|readonly|class|htmlFor|CSS1Compat|compatMode|compatible|borderTopWidth|ie|ra|inline|it|rv|medium|borderWidth|userAgent|522|navigator|with|concat|1px|10000|array|ig|PI|NaN|400|reverse|fast|600|slow|Function|Object|setAttribute|changed|be|can|property|fadeTo|fadeOut|getAttributeNode|fadeIn|slideToggle|method|slideUp|slideDown|action|cssText|stop|responseXML|option|content|300|th|protocol|td|location|send|cap|abort|colg|cos|tfoot|thead|With|leg|Requested|opt|GMT|1970|Jan|01|Thu|area|Since|hr|If|Type|Content|meta|specified|open|link|XMLHTTP|Microsoft|img|onload|row|borderLeftWidth|head|attributes'.split('|'),0,{});
+
+/*
+ Copyright (c) 2004-2007, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+/*
+ This is a compiled version of Dojo, built for deployment and not for
+ development. To get an editable version, please visit:
+
+ http://dojotoolkit.org
+
+ for documentation and information on getting the source.
+*/
+
+var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1f(j3);if(m){if(!1o["51"]){1o["51"]=4X.21(0,m.hK)}A cD=8j[i].5t("1o");if(cD){A cC=3u("({ "+cD+" })");R(A x in cC){1o[x]=cC[x]}}3f}}}d.51=1o["51"];A n=cq;A 8i=n.iL;A 4Z=n.qr;A 6r=2k(4Z);d.2M=(8i.T("qq")>=0)?6r:0;d.6B=(4Z.T("qo")>=0)||(4Z.T("j2")>=0)?6r:0;d.3o=(4Z.T("j2")>=0)?6r:0;A j1=8i.T("qn");d.gu=d.7B=((j1>=0)&&(!d.6B))?6r:0;d.j0=0;d.1l=0;d.iV=0;1u{if(d.7B){d.j0=2k(8i.1A("qm/")[1].1A(" ")[0])}if((1q.gx)&&(!d.2M)){d.1l=2k(4Z.1A("qk ")[1].1A(";")[0])}}1y(e){}if(z.1l&&(26.8f.cu==="9q:")){1o.iT=K}d.iX=B(){A 2A;A qj;A cB=d.6q("cz.cy");if(cB){C cB}if(V iZ!="1k"){2A=S iZ()}I{if(d.1l){1u{2A=S 9j("qi.qh")}1y(e){}}I{if(cq.qg["8Z/x-iY"]){2A=1q.a9("8b");2A.cA("Z","8Z/x-iY");2A.cA("3n",0);2A.cA("58",0);2A.1c.gq="7C";1q.5K.4c(2A)}}}if(!2A){C L}z.88("cz.cy.qf",2A);C z.6q("cz.cy")};A iW=d.iX();if(iW){d.iV=K}A cm=1q["aX"];d.qe=(cm=="aW")||(cm=="gr")||(d.1l<6);d.8h=1o.8h||(d.1l?n.qd:n.qc).1M();d.qb=1z.1K;d.cx=["iU.8g","em.8g","iU.8g.4.0"];d.9b=B(){A 4s=L;A cv=L;if(!z.1l||!1o.iT){1u{4s=S qa()}1y(e){}}if(!4s){R(A i=0;i<3;++i){A cw=z.cx[i];1u{4s=S 9j(cw)}1y(e){cv=e}if(4s){z.cx=[cw];3f}}}if(!4s){2m S 1O("8g 3O q9: "+cv)}C 4s};d.8Y=B(iS){A 4Y=iS.3N||0;C((4Y>=q8)&&(4Y<q7))||(4Y==q6)||(4Y==q5)||(!4Y&&(8f.cu=="9q:"||8f.cu=="q4:"))};A cs=1q.4I("q3");A iQ=(cs&&cs.G>0);d.iR=B(1g,iP){A 3K=D.9b();if(!iQ&&z.4r){1g=(S z.4r(26.8f,1g)).2i()}3K.dL("dD",1g,U);1u{3K.dI(L);if(!d.8Y(3K)){A 1G=1O("q2 4F 4E "+1g+" 3N:"+3K.3N);1G.3N=3K.3N;1G.2G=3K.2G;2m 1G}}1y(e){if(iP){C L}2m e}C 3K.2G}})();z.iO=U;z.6o=B(e){z.iO=K;A cr=(e&&e.Z)?e.Z.1M():"4E";if(P.2O.iN||(cr!="q1"&&cr!="4E")){C}P.2O.iN=K;if(V z["8e"]!="1k"){dX(z.8e);63 z.8e}if(z.6p==0){z.iM()}};if(1q.66){if(z.2M||(z.7B&&(1o["q0"]===K))){1q.66("pZ",z.6o,L)}26.66("4E",z.6o,L)}if(/(pY|pX)/i.6Z(cq.iL)){z.8e=dN(B(){if(/6m|iJ/.6Z(1q.6F)){z.6o()}},10)}(B(){A 3g=26;A 8d=B(cp,fp){A iK=3g[cp]||B(){};3g[cp]=B(){fp.14(3g,P);iK.14(3g,P)}};if(z.1l){1q.fJ("<iI"+"iH pW 4X=\\"//:\\" "+"pV=\\"if(D.6F==\'iJ\'){z.6o();}\\">"+"</iI"+"iH>");A co=K;8d("iG",B(){3g.5c(B(){co=U},0)});8d("pU",B(){if(co){z.ck()}});1u{1q.pT.2P("v","pS:pR-pQ-pP:pO");1q.pN().pM("v\\\\:*","pL:2E(#aY#pK)")}1y(e){}}I{8d("iG",B(){z.ck()})}})();z.pJ=B(){};z.1e=26["1q"]||L;z.3E=B(){C z.1e.3E||z.1e.4I("3E")[0]};z.ch=B(iF,iE){z.1W=iF;z.1e=iE};z.cf=B(4q,6n,iD){if((6n)&&((V 4q=="3c")||(4q 1N 67))){4q=6n[4q]}C(6n?4q.14(6n,iD||[]):4q())};z.pI=B(cj,iC,iB,iA){A cg;A iz=z.1W;A iy=z.1e;1u{z.ch(cj,cj.1q);cg=z.cf(iC,iB,iA)}ir{z.ch(iz,iy)}C cg};z.pH=B(ix,iw,iv,iu){A ce;A ip=z.1e;1u{z.1e=ix;ce=z.cf(iw,iv,iu)}ir{z.1e=ip}C ce};if(1o["cd"]){R(A cc in 1o["cd"]){z.io(cc,1o["cd"][cc])}}}if(1o.im){if(!1z.ca){z.8c("z.pG.ca")}}}if(!z.1h["z.X.c9"]){z.1h["z.X.c9"]=K;z.1Q("z.X.c9");z.1R=B(it){C(V it=="3c"||it 1N 67)};z.2l=B(it){C(it&&it 1N 4e||V it=="6a"||((V z["1H"]!="1k")&&(it 1N z.1H)))};if(z.c8&&z.3o){z.1Y=B(it){if((V(it)=="B")&&(it=="[8b 1H]")){C U}C(V it=="B"||it 1N bI)}}I{z.1Y=B(it){C(V it=="B"||it 1N bI)}}z.ib=B(it){if(V it=="1k"){C U}C(it===L||V it=="8b"||z.2l(it)||z.1Y(it))};z.pF=B(it){A d=z;if((!it)||(V it=="1k")){C U}if(d.1R(it)){C U}if(d.1Y(it)){C U}if(d.2l(it)){C K}if((it.5w)&&(it.5w.1M()=="3R")){C U}if(pE(it.G)){C K}C U};z.pD=B(it){if(!it){C U}C!z.1Y(it)&&/\\{\\s*\\[il 5h\\]\\s*\\}/.6Z(67(it))};z.c7=B(M,4W){A 8a={};R(A x in 4W){if((V 8a[x]=="1k")||(8a[x]!=4W[x])){M[x]=4W[x]}}if(z.1l){A p=4W.2i;if((V(p)=="B")&&(p!=M.2i)&&(p!=8a.2i)&&(p!="\\pC 2i() {\\n [il 5h]\\n}\\n")){M.2i=4W.2i}}C M};z.1x=B(M,pB){R(A i=1,l=P.G;i<l;i++){z.c7(M,P[i])}C M};z.4M=B(c6,pA){R(A i=1,l=P.G;i<l;i++){z.c7(c6.1C,P[i])}C c6};z.ig=B(c5,89){A ij=z.4d(P,2);A ik=z.1R(89);C B(){A ih=z.4d(P);A f=(ik?(c5||z.1W)[89]:89);C(f)&&(f.14(c5||D,ij.3U(ih)))}};z.2p=B(2z,3k){if(P.G>2){C z.ig.14(z,P)}if(!3k){3k=2z;2z=L}if(z.1R(3k)){2z=2z||z.1W;if(!2z[3k]){2m(["z.2p: ie[\\"",3k,"\\"] is L (ie=\\"",2z,"\\")"].22(""))}C B(){C 2z[3k].14(2z,P||[])}}I{C(!2z?3k:B(){C 3k.14(2z,P||[])})}};z.6j=B(M,c3){B c4(){};c4.1C=M;A c2=S c4();if(c3){z.1x(c2,c3)}C c2};z.7X=B(pz){A Q=[L];C z.2p.14(z,Q.3U(z.4d(P)))};z.4d=B(M,ic){A Q=[];R(A x=ic||0;x<M.G;x++){Q.Y(M[x])}C Q};z.c1=B(o){if(!o){C o}if(z.2l(o)){A r=[];R(A i=0;i<o.G;++i){r.Y(z.c1(o[i]))}C r}I{if(z.ib(o)){if(o.2t&&o.a7){C o.a7(K)}I{A r=S o.1P();R(A i in o){if(!(i in r)||r[i]!=o[i]){r[i]=z.c1(o[i])}}C r}}}C o};z.7g=B(2H){C 2H.2f(/^\\s\\s*/,"").2f(/\\s\\s*$/,"")}}if(!z.1h["z.X.2r"]){z.1h["z.X.2r"]=K;z.1Q("z.X.2r");z.2r=B(6l,4p,3j){if(z.1Y(3j)||(P.G>3)){z.ia("z.2r: R 9P \'"+6l+"\' py pw B as \'1P\' pv pu of as a pt i3.","","1.0");A c=3j;3j=P[3]||{};3j.1P=c}A dd=P.2O,4V=L;if(z.2l(4p)){4V=4p;4p=4V.3a()}if(4V){R(A i=0,m;i<4V.G;i++){m=4V[i];if(!m){2m("ps #"+i+" 4F pr of "+6l+" is L. pq\'s pp a po pl is 3O 6m.")}4p=dd.6j(4p,m)}}A i9=(3j||0).1P,6k=dd.6j(4p),fn;R(A i in 3j){if(z.1Y(fn=3j[i])&&(!0[i])){fn.i4=i}}z.4M(6k,{4o:6l,bY:i9,bZ:L},3j||0);6k.1C.1P=6k;C z.88(6l,6k)};z.1x(z.2r,{6j:B(c0,i8){A bp=(c0||0).1C,mp=(i8||0).1C;A 2S=z.2r.i7();z.1x(2S,{84:bp,1x:mp});if(c0){2S.1C=z.6j(bp)}z.4M(2S,z.2r.i6,mp||0,{bY:L});2S.1C.1P=2S;2S.1C.4o=(bp||0).4o+"pk"+(mp||0).4o;z.88(2S.1C.4o,2S);C 2S},i7:B(){C B(){D.i5(P)}},i6:{i5:B(86){A c=86.2O,s=c.84,ct=s&&s.1P,m=c.1x,87=m&&m.1P,a=86,ii,fn;if(a[0]){if((fn=a[0]["bZ"])){a=fn.14(D,a)||a}}if(fn=c.1C.bZ){a=fn.14(D,a)||a}if(ct&&ct.14){ct.14(D,a)}if(87&&87.14){87.14(D,a)}if(ii=c.1C.bY){ii.14(D,86)}},bX:B(85){A c=D.1P,p,m;1s(c){p=c.84;m=c.1x;if(m==85||(m 1N 85.1P)){C p}if(m&&(m=m.bX(85))){C m}c=p&&p.1P}},6h:B(83,82,bW,6i){A p=bW,c,m,f;do{c=p.1P;m=c.1x;if(m&&(m=D.6h(83,82,m,6i))){C m}if((f=p[83])&&(6i==(f==82))){C p}p=c.84}1s(p);C!6i&&(p=D.bX(bW))&&D.6h(83,82,p,6i)},bU:B(2R,4U,bV){A a=P;if(!z.1R(a[0])){bV=4U;4U=2R;2R=4U.2O.i4}A c=4U.2O,p=D.1P.1C,a=bV||4U,fn,mp;if(D[2R]!=c||p[2R]==c){mp=D.6h(2R,c,p,K);if(!mp){2m(D.4o+": 1p i3 (\\""+2R+"\\") 4F bU pj 1f 2O (2r.js)")}p=D.6h(2R,c,mp,U)}fn=p&&p[2R];if(!fn){1z.1K(mp.4o+": no bU \\""+2R+"\\" ph pg (2r.js)");C}C fn.14(D,a)}}})}if(!z.1h["z.X.2c"]){z.1h["z.X.2c"]=K;z.1Q("z.X.2c");z.3i={i2:B(){C B(){A ap=4e.1C,c=P.2O,ls=c.2b,t=c.5V;A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){ls[i].14(D,P)}}C r}},2P:B(6g,bT,i1){6g=6g||z.1W;A f=6g[bT];if(!f||!f.2b){A d=z.3i.i2();d.5V=f;d.2b=[];f=6g[bT]=d}C f.2b.Y(i1)},3J:B(i0,hZ,bS){A f=(i0||z.1W)[hZ];if(f&&f.2b&&bS--){63 f.2b[bS]}}};z.2c=B(M,pd,pc,pa,p9){A a=P,F=[],i=0;F.Y(z.1R(a[0])?L:a[i++],a[i++]);A a1=a[i+1];F.Y(z.1R(a1)||z.1Y(a1)?a[i++]:L,a[i++]);R(A l=a.G;i<l;i++){F.Y(a[i])}C z.by.14(D,F)};z.by=B(M,bR,hY,hX){A l=z.3i,h=l.2P(M,bR,z.2p(hY,hX));C[M,bR,h,l]};z.p8=B(6f){if(6f&&6f[0]!==1k){z.bv.14(D,6f);63 6f[0]}};z.bv=B(M,hV,hU,hW){hW.3J(M,hV,hU)};z.80={};z.p7=B(bQ,hT,hS){C[bQ,z.3i.2P(z.80,bQ,z.2p(hT,hS))]};z.p6=B(81){if(81){z.3i.3J(z.80,81[0],81[1])}};z.hQ=B(hR,F){A f=z.80[hR];(f)&&(f.14(D,F||[]))};z.p5=B(hP,M,bP){A pf=B(){z.hQ(hP,P)};C(bP)?z.2c(M,bP,pf):z.2c(M,pf)}}if(!z.1h["z.X.30"]){z.1h["z.X.30"]=K;z.1Q("z.X.30");z.30=B(hO){D.bM=[];D.id=D.hN();D.2y=-1;D.3M=0;D.4R=[L,L];D.bO=hO;D.7Z=U};z.4M(z.30,{hN:(B(){A n=1;C B(){C n++}})(),4C:B(){if(D.2y==-1){if(D.bO){D.bO(D)}I{D.7Z=K}if(D.2y==-1){A 1G=S 1O("30 p4");1G.dY="4C";D.5i(1G)}}I{if((D.2y==0)&&(D.4R[0]1N z.30)){D.4R[0].4C()}}},7V:B(1v){D.2y=((1v 1N 1O)?1:0);D.4R[D.2y]=1v;D.7U()},bN:B(){if(D.2y!=-1){if(!D.7Z){2m S 1O("p3 p2!")}D.7Z=U;C}},dM:B(1v){D.bN();D.7V(1v)},5i:B(1v){D.bN();if(!(1v 1N 1O)){1v=S 1O(1v)}D.7V(1v)},9e:B(cb,4T){A 6e=z.2p(cb,4T);if(P.G>2){6e=z.7X(6e,P,2)}C D.5k(6e,6e)},ef:B(cb,4T){A 7Y=z.2p(cb,4T);if(P.G>2){7Y=z.7X(7Y,P,2)}C D.5k(7Y,L)},ed:B(cb,4T){A 7W=z.2p(cb,4T);if(P.G>2){7W=z.7X(7W,P,2)}C D.5k(L,7W)},5k:B(cb,eb){D.bM.Y([cb,eb]);if(D.2y>=0){D.7U()}C D},7U:B(){A bL=D.bM;A 4n=D.2y;A 1v=D.4R[4n];A 4S=D;A cb=L;1s((bL.G>0)&&(D.3M==0)){A f=bL.3a()[4n];if(!f){6c}1u{1v=f(1v);4n=((1v 1N 1O)?1:0);if(1v 1N z.30){cb=B(1v){4S.7V(1v);4S.3M--;if((4S.3M==0)&&(4S.2y>=0)){4S.7U()}};D.3M++}}1y(1G){1z.1K(1G);4n=1;1v=1G}}D.2y=4n;D.4R[4n]=1v;if((cb)&&(D.3M)){1v.9e(cb)}}})}if(!z.1h["z.X.2e"]){z.1h["z.X.2e"]=K;z.1Q("z.X.2e");z.5m=B(2e){1u{C 3u("("+2e+")")}1y(e){1z.1K(e);C 2e}};z.bK=B(2H){C("\\""+2H.2f(/(["\\\\])/g,"\\\\$1")+"\\"").2f(/[\\f]/g,"\\\\f").2f(/[\\b]/g,"\\\\b").2f(/[\\n]/g,"\\\\n").2f(/[\\t]/g,"\\\\t").2f(/[\\r]/g,"\\\\r")};z.hM="\\t";z.eq=B(it,4l,4P){4P=4P||"";A 4k=(4l?4P+z.hM:"");A 6b=(4l?"\\n":"");A 4Q=V(it);if(4Q=="1k"){C"1k"}I{if((4Q=="4J")||(4Q=="p1")){C it+""}I{if(it===L){C"L"}}}if(4Q=="3c"){C z.bK(it)}A 6d=P.2O;A 4m;if(V it.hL=="B"){4m=it.hL();if(it!==4m){C 6d(4m,4l,4k)}}if(V it.2e=="B"){4m=it.2e();if(it!==4m){C 6d(4m,4l,4k)}}if(z.2l(it)){A 1v=[];R(A i=0;i<it.G;i++){A 1U=6d(it[i],4l,4k);if(V(1U)!="3c"){1U="1k"}1v.Y(6b+4k+1U)}C"["+1v.22(", ")+6b+4P+"]"}if(4Q=="B"){C L}A bJ=[];R(A 1i in it){A 7T;if(V(1i)=="4J"){7T="\\""+1i+"\\""}I{if(V(1i)=="3c"){7T=z.bK(1i)}I{6c}}1U=6d(it[1i],4l,4k);if(V(1U)!="3c"){6c}bJ.Y(6b+4k+7T+": "+1U)}C"{"+bJ.22(", ")+6b+4P+"}"}}if(!z.1h["z.X.6a"]){z.1h["z.X.6a"]=K;z.1Q("z.X.6a");(B(){A 69=B(Q,M,cb){C[(z.1R(Q)?Q.1A(""):Q),(M||z.1W),(z.1R(cb)?(S bI("1m","hK","6a",cb)):cb)]};z.1x(z,{T:B(bH,hH,hI,hJ){A i=0,2q=1,1d=bH.G;if(hJ){i=1d-1;2q=1d=-1}R(i=hI||i;i!=1d;i+=2q){if(bH[i]==hH){C i}}C-1},31:B(hG,hF,hE){C z.T(hG,hF,hE,K)},1n:B(Q,hD,M){if(!Q||!Q.G){C}A 1I=69(Q,M,hD);Q=1I[0];R(A i=0,l=1I[0].G;i<l;i++){1I[2].2d(1I[1],Q[i],i,Q)}},bE:B(bF,Q,hC,M){A 1I=69(Q,M,hC);Q=1I[0];R(A i=0,l=Q.G;i<l;i++){A bG=!!1I[2].2d(1I[1],Q[i],i,Q);if(bF^bG){C bG}}C bF},ah:B(Q,hB,hA){C D.bE(K,Q,hB,hA)},ag:B(Q,hz,hy){C D.bE(U,Q,hz,hy)},23:B(Q,7t,M){A 1I=69(Q,M,7t);Q=1I[0];A bD=((P[3])?(S P[3]()):[]);R(A i=0;i<Q.G;++i){bD.Y(1I[2].2d(1I[1],Q[i],i,Q))}C bD},3T:B(Q,hx,M){A 1I=69(Q,M,hx);Q=1I[0];A bC=[];R(A i=0;i<Q.G;i++){if(1I[2].2d(1I[1],Q[i],i,Q)){bC.Y(Q[i])}}C bC}})})()}if(!z.1h["z.X.1J"]){z.1h["z.X.1J"]=K;z.1Q("z.X.1J");z.1J=B(bB){if(bB){D.hw(bB)}};z.1J.hp={p0:[0,0,0],oZ:[60,60,60],oY:[2j,2j,2j],oX:[1T,1T,1T],oW:[2j,0,0],oV:[1T,0,0],oU:[2j,0,2j],oT:[1T,0,1T],oS:[0,2j,0],oR:[0,1T,0],oQ:[2j,2j,0],oP:[1T,1T,0],oO:[0,0,2j],oN:[0,0,1T],oM:[0,2j,2j],oL:[0,1T,1T]};z.4M(z.1J,{r:1T,g:1T,b:1T,a:1,bz:B(r,g,b,a){A t=D;t.r=r;t.g=g;t.b=b;t.a=a},hw:B(2Q){A d=z;if(d.1R(2Q)){d.hq(2Q,D)}I{if(d.2l(2Q)){d.7P(2Q,D)}I{D.bz(2Q.r,2Q.g,2Q.b,2Q.a);if(!(2Q 1N d.1J)){D.7Q()}}}C D},7Q:B(){C D},oK:B(){A t=D;C[t.r,t.g,t.b]},oJ:B(){A t=D;C[t.r,t.g,t.b,t.a]},oI:B(){A Q=z.23(["r","g","b"],B(x){A s=D[x].2i(16);C s.G<2?"0"+s:s},D);C"#"+Q.22("")},8F:B(hv){A t=D,7S=t.r+", "+t.g+", "+t.b;C(hv?"hs("+7S+", "+t.a:"7S("+7S)+")"},2i:B(){C D.8F(K)}});z.d8=B(bA,1d,hu,M){A d=z,t=M||S z.1J();d.1n(["r","g","b","a"],B(x){t[x]=bA[x]+(1d[x]-bA[x])*hu;if(x!="a"){t[x]=2Y.oH(t[x])}});C t.7Q()};z.ho=B(ht,M){A m=ht.1M().1f(/^hs?\\(([\\s\\.,0-9]+)\\)/);C m&&z.7P(m[1].1A(/\\s*,\\s*/),M)};z.hn=B(4j,M){A d=z,t=M||S d.1J(),7R=(4j.G==4)?4:8,hr=(1<<7R)-1;4j=2V("oG"+4j.3b(1));if(2L(4j)){C L}d.1n(["b","g","r"],B(x){A c=4j&hr;4j>>=7R;t[x]=7R==4?17*c:c});t.a=1;C t};z.7P=B(a,M){A t=M||S z.1J();t.bz(2V(a[0]),2V(a[1]),2V(a[2]),2V(a[3]));if(2L(t.a)){t.a=1}C t.7Q()};z.hq=B(2H,M){A a=z.1J.hp[2H];C a&&z.7P(a,M)||z.ho(2H,M)||z.hn(2H,M)}}if(!z.1h["z.X"]){z.1h["z.X"]=K;z.1Q("z.X")}if(!z.1h["z.X.5Z"]){z.1h["z.X.5Z"]=K;z.1Q("z.X.5Z");(B(){A 1j=z.b2={2P:B(E,68,fp){if(!E){C}68=1j.4O(68);fp=1j.7G(68,fp);E.66(68,fp,U);C fp},3J:B(E,hm,hl){(E)&&(E.oF(1j.4O(hm),hl,U))},4O:B(1p){C(1p.2w(0,2)=="on"?1p.2w(2):1p)},7G:B(1p,fp){C(1p!="4b"?fp:B(e){C fp.2d(D,1j.4i(e,D))})},4i:B(H,oE){4w(H.Z){2X"4b":1j.7K(H);3f}C H},7K:B(H){H.oD=(H.3h?67.oC(H.3h):"")}};z.oB=B(H,hk){C 1j.4i(H,hk)};z.gY=B(H){H.7J();H.7I()};A 7O=z.3i;z.by=B(M,bx,hh,hg,hi){A hj=M&&(M.2t||M.oA||M.66);A bw=!hj?0:(!hi?1:2),l=[z.3i,1j,7O][bw];A h=l.2P(M,bx,z.2p(hh,hg));C[M,bx,h,bw]};z.bv=B(M,he,hd,hf){([z.3i,1j,7O][hf]).3J(M,he,hd)};z.5W={oz:8,gV:9,oy:12,ox:13,ow:16,ov:17,ou:18,gG:19,ot:20,os:27,or:32,b5:33,b4:34,gE:35,gF:36,b7:37,b9:38,b6:39,b8:40,gD:45,8S:46,oq:47,oo:91,om:92,ol:93,oj:96,oi:97,oh:98,og:99,oe:6D,od:oc,ob:oa,o9:o8,o7:o6,o5:o4,o3:bi,o2:o1,o0:nZ,nY:nX,nW:nV,nU:bk,gS:nT,gR:nS,gQ:nR,gP:nQ,gO:nP,gN:nO,gM:nN,gL:nM,gK:nL,gJ:nK,gI:nJ,gH:nI,nH:nG,nF:nE,nD:nC,gB:nB,gC:nA};if(z.1l){bf=B(e,5h){1u{C(e.3I=5h)}1y(e){C 0}};A 61=z.3i;if(!1o.nz){7O=61=z.gy={b3:[],2P:B(64,bu,hc){64=64||z.1W;A f=64[bu];if(!f||!f.2b){A d=z.gz();d.5V=f&&(7M.Y(f)-1);d.2b=[];f=64[bu]=d}C f.2b.Y(7M.Y(hc)-1)},3J:B(hb,ha,7N){A f=(hb||z.1W)[ha],l=f&&f.2b;if(f&&l&&7N--){63 7M[l[7N]];63 l[7N]}}};A 7M=61.b3}z.1x(1j,{2P:B(E,62,fp){if(!E){C}62=1j.4O(62);if(62=="h3"){A kd=E.bs;if(!kd||!kd.2b||!kd.h9){1j.2P(E,"bs",1j.h4);E.bs.h9=K}}C 61.2P(E,62,1j.7G(fp))},3J:B(E,h8,h7){61.3J(E,1j.4O(h8),h7)},4O:B(7L){C(7L.2w(0,2)!="on"?"on"+7L:7L)},ny:B(){},4i:B(H,4N){if(!H){A w=(4N)&&((4N.aD||4N.1q||4N).nx)||26;H=w.5Z}if(!H){C(H)}H.5V=H.br;H.bh=(4N||H.br);H.nw=H.nv;H.nu=H.nr;A bq=H.br,1e=(bq&&bq.aD)||1q;A bn=((z.1l<6)||(1e["aX"]=="aW"))?1e.3E:1e.5K;A bm=z.aB();H.nq=H.np+z.aH(bn.5I||0)-bm.x;H.nn=H.nm+(bn.5G||0)-bm.y;if(H.Z=="fk"){H.h6=H.nl}if(H.Z=="fj"){H.h6=H.nk}H.7I=1j.bc;H.7J=1j.ba;C 1j.h5(H)},h5:B(H){4w(H.Z){2X"4b":A c=("3h"in H?H.3h:H.3I);if(c==10){c=0;H.3I=13}I{if(c==13||c==27){c=0}I{if(c==3){c=99}}}H.3h=c;1j.7K(H);3f}C H},gZ:{bi:42,bk:47,h2:59,nj:43,ni:44,nh:45,ng:46,nf:47,60:96,h1:91,nb:92,na:93,h0:39},h4:B(H){A kp=H.bh.h3;if(!kp||!kp.2b){C}A k=H.3I;A bj=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>bk)&&(k<h2||k>60)&&(k<h1||k>h0);if(bj||H.5Y){A c=(bj?0:k);if(H.5Y){if(k==3||k==13){C}I{if(c>95&&c<bi){c-=48}I{if((!H.5X)&&(c>=65&&c<=90)){c+=32}I{c=1j.gZ[c]||c}}}}A 2x=1j.7H(H,{Z:"4b",2x:K,3h:c});kp.2d(H.bh,2x);H.bg=2x.bg;H.bd=2x.bd;bf(H,2x.3I)}},bc:B(){D.bg=K},ba:B(){D.n9=D.3I;if(D.5Y){bf(D,0)}D.bd=U}});z.gY=B(H){H=H||26.5Z;1j.bc.2d(H);1j.ba.2d(H)}}1j.7H=B(H,gX){A 2x=z.1x({},H,gX);1j.7K(2x);2x.7J=B(){H.7J()};2x.7I=B(){H.7I()};C 2x};if(z.2M){z.1x(1j,{4i:B(H,n8){4w(H.Z){2X"4b":A c=H.n7;if(c==3){c=99}c=((c<41)&&(!H.5X)?0:c);if((H.5Y)&&(!H.5X)&&(c>=65)&&(c<=90)){c+=32}C 1j.7H(H,{3h:c})}C H}})}if(z.3o){z.1x(1j,{4i:B(H,n6){4w(H.Z){2X"4b":A c=H.3h,s=H.5X,k=H.3I;k=k||gA[H.gW]||0;if(H.gW=="n5"){c=0}I{if((H.5Y)&&(c>0)&&(c<27)){c+=96}I{if(c==z.5W.gU){c=z.5W.gV;s=K}I{c=(c>=32&&c<gT?c:0)}}}C 1j.7H(H,{3h:c,5X:s,3I:k})}C H}});z.1x(z.5W,{gU:25,b9:gT,b8:n4,b7:n3,b6:n2,gS:n1,gR:n0,gQ:mZ,gP:mY,gO:mX,gN:mW,gM:mV,gL:mU,gK:mT,gJ:mS,gI:mR,gH:mQ,gG:mP,8S:mO,gF:mN,gE:mM,b5:mL,b4:mK,gD:mJ,mI:mH,gC:mG,gB:mF});A dk=z.5W,gA={"mE":dk.b9,"mD":dk.b8,"mC":dk.b7,"mB":dk.b6,"mA":dk.b5,"mz":dk.b4}}})();if(z.1l){z.gz=B(){C B(){A ap=4e.1C,h=z.gy.b3,c=P.2O,ls=c.2b,t=h[c.5V];A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){h[ls[i]].14(D,P)}}C r}};z.b2.7G=B(fp){A f=z.b2.4i;C B(e){C fp.2d(D,f(e,D))}}}}if(!z.1h["z.X.b1"]){z.1h["z.X.b1"]=K;z.1Q("z.X.b1");1u{1q.my("mx",U,K)}1y(e){}if(z.1l||z.2M){z.1D=B(id,1e){if(z.1R(id)){A b0=(1e||z.1e);A 11=b0.gv(id);if((11)&&(11.gw.id.1Z==id)){C 11}I{A 5U=b0.gx[id];if(!5U){C}if(!5U.G){C 5U}A i=0;1s(11=5U[i++]){if(11.gw.id.1Z==id){C 11}}}}I{C id}}}I{z.1D=B(id,1e){if(z.1R(id)){C(1e||z.1e).gv(id)}I{C id}}}(B(){A 5T=L;z.mw=B(E){E=z.1D(E);1u{if(!5T){5T=1q.a9("mv")}5T.4c(E.1L?E.1L.fs(E):E);5T.9L=""}1y(e){}};z.mu=B(E,7F){1u{E=z.1D(E);7F=z.1D(7F);1s(E){if(E===7F){C K}E=E.1L}}1y(e){}C U};z.mt=B(E,5S){E=z.1D(E);if(z.gu){E.1c.ms=(5S)?"dg":"7C"}I{if(z.6B){E.1c.mr=(5S)?"8K":"7C"}I{if(z.1l){E.gs=(5S)?"":"on";z.1r("*",E).1n(B(gt){gt.gs=(5S)?"":"on"})}}}};A 5R=B(E,4h){4h.1L.mq(E,4h);C K};A aZ=B(E,4h){A pn=4h.1L;if(4h==pn.fm){pn.4c(E)}I{C 5R(E,4h.71)}C K};z.5E=B(E,2a,3H){if((!E)||(!2a)||(V 3H=="1k")){C U}E=z.1D(E);2a=z.1D(2a);if(V 3H=="4J"){A cn=2a.3W;if(((3H==0)&&(cn.G==0))||(cn.G==3H)){2a.4c(E);C K}if(3H==0){C 5R(E,2a.5A)}C aZ(E,cn[3H-1])}4w(3H.1M()){2X"mo":C 5R(E,2a);2X"a8":C aZ(E,2a);2X"9M":if(2a.5A){C 5R(E,2a.5A)}I{2a.4c(E);C K}3f;aY:2a.4c(E);C K}};z.aP="5g-3G";if(z.1l){A aV=1q.aX;z.aP=(aV=="aW")||(aV=="gr")||(z.1l<6)?"g5-3G":"5g-3G"}A 1E,dv=1q.mn;if(z.3o){1E=B(E){A s=dv.3F(E,L);if(!s&&E.1c){E.1c.gq="";s=dv.3F(E,L)}C s||{}}}I{if(z.1l){1E=B(E){C E.gn}}I{1E=B(E){C dv.3F(E,L)}}}z.3F=1E;if(!z.1l){z.4g=B(mm,gp){C 2k(gp)||0}}I{z.4g=B(go,2N){if(!2N){C 0}if(2N=="ml"){C 4}if(2N.2w&&(2N.2w(-2)=="px")){C 2k(2N)}4G(go){A gm=1c.2g;A gl=aU.2g;aU.2g=gn.2g;1u{1c.2g=2N;2N=1c.mk}1y(e){2N=0}1c.2g=gm;aU.2g=gl}C 2N}}z.ge=(z.1l?B(E){1u{C(E.mj.mi.2W/6D)}1y(e){C 1}}:B(E){C z.3F(E).2W});z.gf=(z.1l?B(E,7D){if(7D==1){E.1c.7E=E.1c.7E.2f(/gk:[^;]*;/i,"");if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.7E=i.1c.7E.2f(/gk:[^;]*;/i,"")})}}I{A o="mh(mg="+(7D*6D)+")";E.1c.3T=o}if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.3T=o})}C 7D}:B(E,gg){C E.1c.2W=gg});A 5Q={3n:K,58:K,2g:K,5J:K};A gd=B(E,Z,5P){Z=Z.1M();if(5Q[Z]===K){C z.4g(E,5P)}I{if(5Q[Z]===U){C 5P}I{if((Z.T("mf")>=0)||(Z.T("md")>=0)||(Z.T("3n")>=0)||(Z.T("58")>=0)||(Z.T("5q")>=0)||(Z.T("mc")>=0)||(Z.T("ma")>=0)){5Q[Z]=K;C z.4g(E,5P)}I{5Q[Z]=U;C 5P}}}};z.1c=B(E,5O,aT){A n=z.1D(E),F=P.G,op=(5O=="2W");if(F==3){C op?z.gf(n,aT):n.1c[5O]=aT}if(F==2&&op){C z.ge(n)}A s=z.3F(n);C(F==1)?s:gd(n,5O,s[5O])};z.7A=B(n,gc){A s=gc||1E(n),px=z.4g,l=px(n,s.m9),t=px(n,s.m8);C{l:l,t:t,w:l+px(n,s.m7),h:t+px(n,s.m6)}};z.5N=B(n,gb){A ne="7C",px=z.4g,s=gb||1E(n),bl=(s.m5!=ne?px(n,s.m4):0),bt=(s.m3!=ne?px(n,s.m2):0);C{l:bl,t:bt,w:bl+(s.m1!=ne?px(n,s.m0):0),h:bt+(s.lZ!=ne?px(n,s.lY):0)}};z.aN=B(n,ga){A s=ga||1E(n),p=z.7A(n,s),b=z.5N(n,s);C{l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h}};z.aM=B(n,g9){A s=g9||1E(n),px=z.4g,l=px(n,s.lX),t=px(n,s.lW),r=px(n,s.lV),b=px(n,s.lU);if(z.3o&&(s.ax!="fU")){r=l}C{l:l,t:t,w:l+r,h:t+b}};z.au=B(E,g8){A s=g8||1E(E),me=z.aM(E,s);A l=E.fT-me.l,t=E.fS-me.t;if(z.7B){A aS=2k(s.2g),aR=2k(s.5J);if(!2L(aS)&&!2L(aR)){l=aS,t=aR}I{A p=E.1L;if(p&&p.1c){A aQ=1E(p);if(aQ.lT!="lS"){A be=z.5N(p,aQ);l+=be.l,t+=be.t}}}}I{if(z.2M){A p=E.1L;if(p){A be=z.5N(p);l-=be.l,t-=be.t}}}C{l:l,t:t,w:E.6v+me.w,h:E.8D+me.h}};z.aK=B(E,g7){A s=g7||1E(E),pe=z.7A(E,s),be=z.5N(E,s),w=E.aF,h;if(!w){w=E.6v,h=E.8D}I{h=E.lR,be.w=be.h=0}if(z.2M){pe.l+=be.l;pe.t+=be.t}C{l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h}};z.lQ=B(E,g6){A s=g6||1E(E),pe=z.7A(E,s),cb=z.aK(E,s);C{l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h}};z.aL=B(E,l,t,w,h,u){u=u||"px";4G(E.1c){if(!2L(l)){2g=l+u}if(!2L(t)){5J=t+u}if(w>=0){3n=w+u}if(h>=0){58=h+u}}};z.aO=B(E){A n=E.5w;C(z.aP=="g5-3G")||(n=="lP")||(n=="lO")};z.fX=B(E,7z,7y,g4){A bb=z.aO(E);if(bb){A pb=z.aN(E,g4);if(7z>=0){7z+=pb.w}if(7y>=0){7y+=pb.h}}z.aL(E,g3,g3,7z,7y)};z.fY=B(E,g1,g0,5M,5L,g2){A s=g2||z.3F(E);A bb=z.aO(E),pb=bb?fZ:z.aN(E,s),mb=z.aM(E,s);if(5M>=0){5M=2Y.5q(5M-pb.w-mb.w,0)}if(5L>=0){5L=2Y.5q(5L-pb.h-mb.h,0)}z.aL(E,g1,g0,5M,5L)};A fZ={l:0,t:0,w:0,h:0};z.lN=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.au(n,s):z.fY(n,b.l,b.t,b.w,b.h,s)};z.lM=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.aK(n,s):z.fX(n,b.w,b.h,s)};A 5H=B(E,1a){if(!(E=(E||0).1L)){C 0}A 1U,aJ=0,2h=z.3E();1s(E&&E.1c){if(1E(E).ax=="lL"){C 0}1U=E[1a];if(1U){aJ+=1U-0;if(E==2h){3f}}E=E.1L}C aJ};z.fQ=B(){A 2h=z.3E();A 3g=z.1W;A de=z.1e.5K;C{y:(3g.lK||de.5G||2h.5G||0),x:(3g.lJ||z.aH(de.5I)||2h.5I||0)}};z.aG=B(){C V z.aI=="1k"?(z.aI=z.3F(z.3E()).lI=="lH"):z.aI};z.aB=B(){A de=z.1e.5K;if(z.1l>=7){C{x:de.aC().2g,y:de.aC().5J}}I{C{x:z.aG()||26.am==26?de.fW:de.6v-de.aF-de.fW,y:de.lG}}};z.aH=B(aE){if(z.1l&&!z.aG()){A de=z.1e.5K;C aE+de.aF-de.lF}C aE};z.fP=B(E,aw){A ay=E.aD;A J={x:0,y:0};A 7w=U;A db=z.3E();if(z.1l){A aA=E.aC();A az=z.aB();J.x=aA.2g-az.x;J.y=aA.5J-az.y}I{if(ay["fV"]){A bo=ay.fV(E);J.x=bo.x-5H(E,"5I");J.y=bo.y-5H(E,"5G")}I{if(E["fR"]){7w=K;A 7x;if(z.3o&&(1E(E).ax=="fU")&&(E.1L==db)){7x=db}I{7x=db.1L}if(E.1L!=db){A nd=E;if(z.2M){nd=db}J.x-=5H(nd,"5I");J.y-=5H(nd,"5G")}A 4f=E;do{A n=4f["fT"];if(!z.2M||n>0){J.x+=2L(n)?0:n}A m=4f["fS"];J.y+=2L(m)?0:m;4f=4f.fR}1s((4f!=7x)&&4f)}I{if(E["x"]&&E["y"]){J.x+=2L(E.x)?0:E.x;J.y+=2L(E.y)?0:E.y}}}}if(7w||aw){A av=z.fQ();A m=7w?(!aw?-1:0):1;J.y+=m*av.y;J.x+=m*av.x}C J};z.af=B(E,fO){A n=z.1D(E),s=1E(n),mb=z.au(n,s);A at=z.fP(n,fO);mb.x=at.x;mb.y=at.y;C mb}})();z.fL=B(E,fN){C((" "+E.3A+" ").T(" "+fN+" ")>=0)};z.7s=B(E,ar){A 7v=E.3A;if((" "+7v+" ").T(" "+ar+" ")<0){E.3A=7v+(7v?" ":"")+ar}};z.7r=B(E,fM){A t=z.7g((" "+E.3A+" ").2f(" "+fM+" "," "));if(E.3A!=t){E.3A=t}};z.lE=B(E,aq,7u){if(V 7u=="1k"){7u=!z.fL(E,aq)}z[7u?"7s":"7r"](E,aq)}}if(!z.1h["z.X.1H"]){z.1h["z.X.1H"]=K;z.1Q("z.X.1H");(B(){A d=z;z.1H=B(){A F=P;if((F.G==1)&&(V F[0]=="4J")){D.G=eK(F[0])}I{if(F.G){d.1n(F,B(i){D.Y(i)},D)}}};z.1H.1C=S 4e;if(d.1l){A fK=B(al){C("A a2 = am."+al+"; "+"A ap = 4e.1C; "+"A ao = a2.1C; "+"R(A x in ao){ ap[x] = ao[x]; } "+"am."+al+" = 4e; ")};A fI=fK("z.1H");A aj=26.lD();aj.1q.fJ("<ak>"+fI+"</ak>");aj.lC(1,1,1,1)}z.4M(z.1H,{T:B(fH,fG){C d.T(D,fH,fG)},31:B(lB,lA){A aa=d.4d(P);aa.ae(D);C d.31.14(d,aa)},ah:B(fF,fE){C d.ah(D,fF,fE)},ag:B(fD,fC){C d.ag(D,fD,fC)},1n:B(fB,fA){d.1n(D,fB,fA);C D},23:B(7t,M){C d.23(D,7t,M,d.1H)},af:B(){C d.23(D,d.af)},1c:B(lz,ly){A aa=d.4d(P);aa.ae(D[0]);A s=d.1c.14(d,aa);C(P.G>1)?D:s},lx:B(lw,lv){A aa=d.4d(P);aa.ae(L);A s=D.23(B(i){aa[0]=i;C d.1c.14(d,aa)});C(P.G>1)?D:s},7s:B(fz){C D.1n(B(i){z.7s(i,fz)})},7r:B(fy){C D.1n(B(i){z.7r(i,fy)})},5E:B(fw,7q){A 1m=d.1r(fw)[0];7q=7q||"72";R(A x=0;x<D.G;x++){d.5E(D[x],1m,7q)}C D},2c:B(fv,fu,ft){D.1n(B(1m){d.2c(1m,fv,fu,ft)});C D},lu:B(ad){A ac=(ad)?d.9t(D,ad):D;ac.1n(B(1m){if(1m["1L"]){1m.1L.fs(1m)}});C ac},lt:B(fr,fq){A 1m=D[0];C d.1r(fr).1n(B(ai){d.5E(ai,1m,(fq||"72"))})},1r:B(7p){7p=7p||"";A J=S d.1H();D.1n(B(1m){d.1r(7p,1m).1n(B(ab){if(V ab!="1k"){J.Y(ab)}})});C J},3T:B(fo){A 5F=D;A 1V=P;A r=S d.1H();A rp=B(t){if(V t!="1k"){r.Y(t)}};if(d.1R(fo)){5F=d.9t(D,1V[0]);if(1V.G==1){C 5F}d.1n(d.3T(5F,1V[1],1V[2]),rp);C r}d.1n(d.3T(5F,1V[0],1V[1]),rp);C r},lr:B(7o,7n){A 1S=d.1e.a9("lq");if(d.1R(7o)){1S.9L=7o}I{1S.4c(7o)}A ct=((7n=="9M")||(7n=="a8"))?"fm":"5A";D.1n(B(1m){A 24=1S.a7(K);1s(24[ct]){d.5E(24[ct],1m,7n)}});C D},7m:B(fl,F){A a5=[];F=F||{};D.1n(B(1m){A a6={E:1m};d.1x(a6,F);a5.Y(d[fl](a6))});C d.fx.lp(a5)},8I:B(F){C D.7m("8I",F)},8H:B(F){C D.7m("8H",F)},6y:B(F){C D.7m("6y",F)}});z.1n(["fk","lo","fj","fi","ln","lm","ll","fi","lk","lj","4b"],B(H){A a4="on"+H;z.1H.1C[a4]=B(a,b){C D.2c(a4,a,b)}})})()}if(!z.1h["z.X.1r"]){z.1h["z.X.1r"]=K;z.1Q("z.X.1r");(B(){A d=z;A 2I=B(q){C[q.T("#"),q.T("."),q.T("["),q.T(":")]};A a0=B(a3,fh){A ql=a3.G;A i=2I(a3);A 1d=ql;R(A x=fh;x<i.G;x++){if(i[x]>=0){if(i[x]<1d){1d=i[x]}}}C(1d<0)?ql:1d};A 6X=B(7l){A i=2I(7l);if(i[0]!=-1){C 7l.21(i[0]+1,a0(7l,1))}I{C""}};A 5r=B(7k){A 5D;A i=2I(7k);if((i[0]==0)||(i[1]==0)){5D=0}I{5D=a0(7k,0)}C((5D>0)?7k.3b(0,5D).1M():"*")};A fg=B(Q){A J=-1;R(A x=0;x<Q.G;x++){A 1S=Q[x];if(1S>=0){if((1S>J)||(J==-1)){J=1S}}}C J};A 9H=B(7i){A i=2I(7i);if(-1==i[1]){C""}A di=i[1]+1;A 7j=fg(i.2w(2));if(di<7j){C 7i.21(di,7j)}I{if(-1==7j){C 7i.3b(di)}I{C""}}};A f3=[{1i:"|=",1f:B(15,fe){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fe+"-\')]"}},{1i:"~=",1f:B(15,fd){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fd+" \')]"}},{1i:"^=",1f:B(15,fb){C"[li-4G(@"+15+", \'"+fb+"\')]"}},{1i:"*=",1f:B(15,fa){C"[5z(@"+15+", \'"+fa+"\')]"}},{1i:"$=",1f:B(15,9Z){C"[21(@"+15+", 3c-G(@"+15+")-"+(9Z.G-1)+")=\'"+9Z+"\']"}},{1i:"!=",1f:B(15,f9){C"[3O(@"+15+"=\'"+f9+"\')]"}},{1i:"=",1f:B(15,f8){C"[@"+15+"=\'"+f8+"\']"}}];A 9C=B(9Y,3Z,f7,f6){A 49;A i=2I(3Z);if(i[2]>=0){A 4L=3Z.T("]",i[2]);A 29=3Z.21(i[2]+1,4L);1s(29&&29.G){if(29.2s(0)=="@"){29=29.2w(1)}49=L;R(A x=0;x<9Y.G;x++){A 1S=9Y[x];A 7h=29.T(1S.1i);if(7h>=0){A 15=29.21(0,7h);A 4a=29.21(7h+1S.1i.G);if((4a.2s(0)=="\\"")||(4a.2s(0)=="\'")){4a=4a.21(1,4a.G-1)}49=1S.1f(d.7g(15),d.7g(4a));3f}}if((!49)&&(29.G)){49=f7(29)}if(49){f6(49)}29=L;A 7f=3Z.T("[",4L);if(0<=7f){4L=3Z.T("]",7f);if(0<=4L){29=3Z.21(7f+1,4L)}}}}};A f0=B(f5){A 4K=".";A 7e=f5.1A(" ");1s(7e.G){A 2K=7e.3a();A 7d;if(2K==">"){7d="/";2K=7e.3a()}I{7d="//"}A f4=5r(2K);4K+=7d+f4;A id=6X(2K);if(id.G){4K+="[@id=\'"+id+"\'][1]"}A cn=9H(2K);if(cn.G){A 9X=" ";if(cn.2s(cn.G-1)=="*"){9X="";cn=cn.3b(0,cn.G-1)}4K+="[5z(3U(\' \',@9P,\' \'), \' "+cn+9X+"\')]"}9C(f3,2K,B(f2){C"[@"+f2+"]"},B(f1){4K+=f1})}C 4K};A 7a={};A eC=B(28){if(7a[28]){C 7a[28]}A 1e=d.1e;A 9W=f0(28);A 4H=B(9V){A J=[];A 7b;1u{7b=1e.9x(9W,9V,L,lh.lg,L)}1y(e){1z.1K("lf in le:",9W,"lc:",9V);1z.1K(e)}A 7c=7b.eZ();1s(7c){J.Y(7c);7c=7b.eZ()}C J};C 7a[28]=4H};A 5x={};A 9B={};A 3y=B(79,78){if(!79){C 78}if(!78){C 79}C B(){C 79.14(26,P)&&78.14(26,P)}};A 75=B(9U,3Y,5B,2J){A 2v=2J+1;A 76=(3Y.G==2v);A 2K=3Y[2J];if(2K==">"){A 77=9U.3W;if(!77.G){C}2v++;76=(3Y.G==2v);A 4H=6O(3Y[2J+1]);R(A x=0,11;x<77.G,11=77[x];x++){if(4H(11)){if(76){5B.Y(11)}I{75(11,3Y,5B,2v)}}}}A 5C=6U(2K)(9U);if(76){1s(5C.G){5B.Y(5C.3a())}}I{1s(5C.G){75(5C.3a(),3Y,5B,2v)}}};A eE=B(9T,eY){A J=[];A x=9T.G-1,11;1s(11=9T[x--]){75(11,eY,J,0)}C J};A 6O=B(3D){if(5x[3D]){C 5x[3D]}A ff=L;A 9S=5r(3D);if(9S!="*"){ff=3y(ff,B(N){C((N.2t==1)&&(9S==N.5w.1M()))})}A 9R=6X(3D);if(9R.G){ff=3y(ff,B(N){C((N.2t==1)&&(N.id==9R))})}if(2Y.5q.14(D,2I(3D).2w(1))>=0){ff=3y(ff,9z(3D))}C 5x[3D]=ff};A 5y=B(E){A pn=E.1L;A 9Q=pn.3W;A 2v=-1;A 3C=pn.5A;if(!3C){C 2v}A ci=E["eW"];A cl=pn["eX"];if(((V cl=="4J")&&(cl!=9Q.G))||(V ci!="4J")){pn["eX"]=9Q.G;A 2J=1;do{if(3C===E){2v=2J}if(3C.2t==1){3C["eW"]=2J;2J++}3C=3C.71}1s(3C)}I{2v=ci}C 2v};A lb=0;A 3X=B(N,15){A 74="";if(15=="9P"){C N.3A||74}if(15=="R"){C N.la||74}C N.5t(15,2)||74};A eH=[{1i:"|=",1f:B(15,9O){A eV=" "+9O+"-";C B(N){A ea=" "+(N.5t(15,2)||"");C((ea==9O)||(ea.T(eV)==0))}}},{1i:"^=",1f:B(15,eU){C B(N){C(3X(N,15).T(eU)==0)}}},{1i:"*=",1f:B(15,eT){C B(N){C(3X(N,15).T(eT)>=0)}}},{1i:"~=",1f:B(15,eS){A 9N=" "+eS+" ";C B(N){A ea=" "+3X(N,15)+" ";C(ea.T(9N)>=0)}}},{1i:"$=",1f:B(15,73){A 9N=" "+73;C B(N){A ea=" "+3X(N,15);C(ea.31(73)==(ea.G-73.G))}}},{1i:"!=",1f:B(15,eR){C B(N){C(3X(N,15)!=eR)}}},{1i:"=",1f:B(15,eQ){C B(N){C(3X(N,15)==eQ)}}}];A 9E=[{1i:"9M-9K",1f:B(1p,l9){C B(N){if(N.2t!=1){C U}A fc=N.eP;1s(fc&&(fc.2t!=1)){fc=fc.eP}C(!fc)}}},{1i:"72-9K",1f:B(1p,l8){C B(N){if(N.2t!=1){C U}A nc=N.71;1s(nc&&(nc.2t!=1)){nc=nc.71}C(!nc)}}},{1i:"l7",1f:B(1p,l6){C B(N){A cn=N.3W;A eO=N.3W.G;R(A x=eO-1;x>=0;x--){A nt=cn[x].2t;if((nt==1)||(nt==3)){C U}}C K}}},{1i:"5z",1f:B(1p,eN){C B(N){C(N.9L.T(eN)>=0)}}},{1i:"3O",1f:B(1p,eM){A eL=6O(eM);C B(N){C(!eL(N))}}},{1i:"l5-9K",1f:B(1p,2u){A pi=eK;if(2u=="l4"){C B(N){C(((5y(N))%2)==1)}}I{if((2u=="2n")||(2u=="l3")){C B(N){C((5y(N)%2)==0)}}I{if(2u.T("l2+")==0){A 70=pi(2u.3b(3));C B(N){C(N.1L.3W[70-1]===N)}}I{if((2u.T("n+")>0)&&(2u.G>3)){A 9J=2u.1A("n+",2);A eJ=pi(9J[0]);A 2J=pi(9J[1]);C B(N){C((5y(N)%eJ)==2J)}}I{if(2u.T("n")==-1){A 70=pi(2u);C B(N){C(5y(N)==70)}}}}}}}}];A 9z=B(3e){A 9I=(9B[3e]||5x[3e]);if(9I){C 9I}A ff=L;A i=2I(3e);if(i[0]>=0){A 24=5r(3e);if(24!="*"){ff=3y(ff,B(N){C(N.5w.1M()==24)})}}A 5u;A 3B=9H(3e);if(3B.G){A 9F=3B.2s(3B.G-1)=="*";if(9F){3B=3B.3b(0,3B.G-1)}A re=S 9G("(?:^|\\\\s)"+3B+(9F?".*":"")+"(?:\\\\s|$)");ff=3y(ff,B(N){C re.6Z(N.3A)})}if(i[3]>=0){A 3z=3e.3b(i[3]+1);A 9D="";A 5v=3z.T("(");A 6Y=3z.31(")");if((0<=5v)&&(0<=6Y)&&(6Y>5v)){9D=3z.21(5v+1,6Y);3z=3z.3b(0,5v)}5u=L;R(A x=0;x<9E.G;x++){A 1S=9E[x];if(1S.1i==3z){5u=1S.1f(3z,9D);3f}}if(5u){ff=3y(ff,5u)}}A eG=(d.1l)?B(5s){A eI=5s.1M();C B(N){C N[5s]||N[eI]}}:B(5s){C B(N){C(N&&N.5t&&N.l1(5s))}};9C(eH,3e,eG,B(eF){ff=3y(ff,eF)});if(!ff){ff=B(){C K}}C 9B[3e]=ff};A 6W={};A 6U=B(3d,1B){A 9A=6W[3d];if(9A){C 9A}A i=2I(3d);A id=6X(3d);if(i[0]==0){C 6W[3d]=B(1B){C[d.1D(id)]}}A 9y=9z(3d);A 5p;if(i[0]>=0){5p=B(1B){A 11=d.1D(id);if(9y(11)){C[11]}}}I{A 3V;A 24=5r(3d);if(2Y.5q.14(D,2I(3d))==-1){5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){J.Y(11)}C J}}I{5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){if(9y(11)){J.Y(11)}}C J}}}C 6W[3d]=5p};A l0={};A 5o={">":B(1B){A J=[];A 11,x=0,3V=1B.3W;1s(11=3V[x++]){if(11.2t==1){J.Y(11)}}C J}};A 9w=B(6V){if(0>6V.T(" ")){C 6U(6V)}A eD=B(1B){A 6S=6V.1A(" ");A 6T;if(6S[0]==">"){6T=[1B]}I{6T=6U(6S.3a())(1B)}C eE(6T,6S)};C eD};A 9v=((1q["9x"]&&!d.3o)?B(3x){A 6R=3x.1A(" ");if((1q["9x"])&&(3x.T(":")==-1)&&((K))){if(((6R.G>2)&&(3x.T(">")==-1))||(6R.G>3)||(3x.T("[")>=0)||((1==6R.G)&&(0<=3x.T(".")))){C eC(3x)}}C 9w(3x)}:9w);A ey=B(3w){if(5o[3w]){C 5o[3w]}if(0>3w.T(",")){C 5o[3w]=9v(3w)}I{A eB=3w.1A(/\\s*,\\s*/);A 4H=B(1B){A eA=0;A J=[];A 6Q;1s(6Q=eB[eA++]){J=J.3U(9v(6Q,6Q.T(" "))(1B))}C J};C 5o[3w]=4H}};A 5n=0;A ez=B(Q){A J=S d.1H();if(!Q){C J}if(Q[0]){J.Y(Q[0])}if(Q.G<2){C J}5n++;Q[0]["9u"]=5n;R(A x=1,11;11=Q[x];x++){if(Q[x]["9u"]!=5n){J.Y(11)}11["9u"]=5n}C J};d.1r=B(6P,1B){if(V 6P!="3c"){C S d.1H(6P)}if(V 1B=="3c"){1B=d.1D(1B)}C ez(ey(6P)(1B||d.1e))};d.9t=B(ex,9s){A 9r=S d.1H();A ff=(9s)?6O(9s):B(){C K};R(A x=0,11;11=ex[x];x++){if(ff(11)){9r.Y(11)}}C 9r}})()}if(!z.1h["z.X.1b"]){z.1h["z.X.1b"]=K;z.1Q("z.X.1b");z.6K=B(ew){A J={};A iq="kZ[Z!=9q][Z!=kY][Z!=et][Z!=kX][Z!=kW], kV, kU";z.1r(iq,ew).3T(B(E){C(!E.kT)}).1n(B(1m){A 3v=1m.1p;A Z=(1m.Z||"").1M();if((Z=="kS")||(Z=="kR")){if(1m.kQ){J[3v]=1m.1Z}}I{if(1m.kP){A ev=J[3v]=[];z.1r("kO[kN]",1m).1n(B(eu){ev.Y(eu.1Z)})}I{J[3v]=1m.1Z;if(Z=="et"){J[3v+".x"]=J[3v+".y"]=J[3v].x=J[3v].y=0}}}});C J};z.9h=B(23){A ec=kM;A J="";A es={};R(A x in 23){if(23[x]!=es[x]){if(z.2l(23[x])){R(A y=0;y<23[x].G;y++){J+=ec(x)+"="+ec(23[x][y])+"&"}}I{J+=ec(x)+"="+ec(23[x])+"&"}}}if((J.G)&&(J.2s(J.G-1)=="&")){J=J.3b(0,J.G-1)}C J};z.kL=B(er){C z.9h(z.6K(er))};z.kK=B(ep){C z.eq(z.6K(ep))};z.kJ=B(2H){A J={};A qp=2H.1A("&");A dc=kI;z.1n(qp,B(1m){if(1m.G){A 9p=1m.1A("=");A 1p=dc(9p.3a());A 1U=dc(9p.22("="));if(z.1R(J[1p])){J[1p]=[J[1p]]}if(z.2l(J[1p])){J[1p].Y(1U)}I{J[1p]=1U}}});C J};z.e1=U;z.e6={"9g":B(1b){C 1b.2G},"2e":B(1b){if(!1o.eo){1z.1K("kH kG kF a kE of 9g/2e-6M-9m"+" 4F kD kC kB kA 4G en kz"+" (ky 1o.eo=K 4F kx kw D kv)")}C z.5m(1b.2G)},"2e-6M-ku":B(1b){A 6N=1b.2G;A 9o=6N.T("/*");A 9n=6N.31("*/");if((9o==-1)||(9n==-1)){C z.5m(1b.2G)}C z.5m(6N.21(9o+2,9n))},"2e-6M-9m":B(1b){A 6L=1b.2G;A 9l=6L.T("/*");A 9k=6L.31("*/");if((9l==-1)||(9k==-1)){1z.1K("kt en ks\'t 6M 9m!");C""}C z.5m(6L.21(9l+2,9k))},"kr":B(1b){C z.3u(1b.2G)},"kq":B(1b){if(z.1l&&!1b.el){z.1n(["ko","em","kn","km"],B(i){1u{A 1e=S 9j(kl[i]+".kk");1e.kj=U;1e.ki(1b.2G);C 1e}1y(e){}})}I{C 1b.el}}};(B(){z.e5=B(F,ej,ei,eh){A 2F={};2F.F=F;A 6J=L;if(F.3R){A 3R=z.1D(F.3R);A 9i=3R.kh("kg");2F.2E=F.2E||(9i?9i.1Z:L);6J=z.6K(3R)}I{2F.2E=F.2E}A 5l=[{}];if(6J){5l.Y(6J)}if(F.5g){5l.Y(F.5g)}if(F.ek){5l.Y({"z.ek":S 5d().8O()})}2F.1r=z.9h(z.1x.14(L,5l));2F.9d=F.9d||"9g";A d=S z.30(ej);d.5k(ei,B(eg){C eh(eg,d)});A ld=F.4E;if(ld&&z.1Y(ld)){d.ef(B(ee){C ld.2d(F,ee,2F)})}A 1G=F.9f;if(1G&&z.1Y(1G)){d.ed(B(e9){C 1G.2d(F,e9,2F)})}A 6I=F.kf;if(6I&&z.1Y(6I)){d.9e(B(e8){C 6I.2d(F,e8,2F)})}d.1F=2F;C d};A e4=B(O){O.e0=K;A 1b=O.1F.1b;if(V 1b.e7=="B"){1b.e7()}};A e3=B(O){C z.e6[O.1F.9d](O.1F.1b)};A e2=B(9c,O){1z.1K(9c);C 9c};A 3Q=B(F){A O=z.e5(F,e4,e3,e2);O.1F.1b=z.9b(O.1F.F);C O};A 5j=L;A 3t=[];A 94=B(){A dZ=(S 5d()).dU();if(!z.e1){z.1n(3t,B(4D,6H){if(!4D){C}A O=4D.O;1u{if(!O||O.e0||!4D.dT(O)){3t.3S(6H,1);C}if(4D.dR(O)){3t.3S(6H,1);4D.dP(O)}I{if(O.9a){if(O.9a+(O.1F.F.6G||0)<dZ){3t.3S(6H,1);A 1G=S 1O("6G ke");1G.dY="6G";O.5i(1G);O.4C()}}}}1y(e){1z.1K(e);O.5i(S 1O("kc!"))}})}if(!3t.G){dX(5j);5j=L;C}};z.dV=B(){1u{z.1n(3t,B(i){i.O.4C()})}1y(e){}};if(z.1l){z.dW(z.dV)}z.dH=B(O,dS,dQ,dO){if(O.1F.F.6G){O.9a=(S 5d()).dU()}3t.Y({O:O,dT:dS,dR:dQ,dP:dO});if(!5j){5j=dN(94,50)}94()};A dJ="8Z/x-kb-3R-ka";A dG=B(O){C O.1F.1b.6F};A dF=B(O){C 4==O.1F.1b.6F};A dE=B(O){if(z.8Y(O.1F.1b)){O.dM(O)}I{O.5i(S 1O("k9 k8 k7 5h:"+O.1F.1b.3N))}};A 3P=B(Z,O){A 3s=O.1F;A F=3s.F;3s.1b.dL(Z,3s.2E,(F.k6!==K),(F.8X?F.8X:1k),(F.8W?F.8W:1k));if(F.6E){R(A 5f in F.6E){if(5f.1M()==="5g-Z"&&!F.8V){F.8V=F.6E[5f]}I{3s.1b.dK(5f,F.6E[5f])}}}3s.1b.dK("k5-k4",(F.8V||dJ));1u{3s.1b.dI(3s.1r)}1y(e){O.4C()}z.dH(O,dG,dF,dE);C O};z.8T=B(4B){if(4B.1r.G){4B.2E+=(4B.2E.T("?")==-1?"?":"&")+4B.1r;4B.1r=L}};z.k3=B(F){A O=3Q(F);z.8T(O.1F);C 3P("dD",O)};z.k2=B(F){C 3P("dC",3Q(F))};z.k1=B(F){A O=3Q(F);O.1F.1r=F.k0;C 3P("dC",O)};z.jZ=B(F){C 3P("dA",3Q(F))};z.jY=B(F){A O=3Q(F);A dB=O.1F;if(F["8U"]){dB.1r=F.8U;F.8U=L}C 3P("dA",O)};z.jX=B(F){A O=3Q(F);z.8T(O.1F);C 3P("8S",O)};z.dz=B(jW){2m S 1O("z.dz 3O jV jU")}})()}if(!z.1h["z.X.fx"]){z.1h["z.X.fx"]=K;z.1Q("z.X.fx");z.dx=B(dy,1d){D.1w=dy;D.1d=1d;D.4x=B(n){C((D.1d-D.1w)*n)+D.1w}};z.2r("z.d6",L,{1P:B(F){z.1x(D,F);if(z.2l(D.2C)){D.2C=S z.dx(D.2C[0],D.2C[1])}},2C:L,8Q:jT,5a:L,4z:0,dj:10,du:L,6x:L,dt:L,8B:L,dh:L,ds:L,dr:L,dm:L,2D:U,2Z:U,4A:L,8N:L,3r:L,2o:0,4y:0,3q:B(H,F){if(D[H]){D[H].14(D,F||[])}C D},5b:B(dw,8R){if(8R){5e(D.3r);D.2D=D.2Z=U;D.2o=0}I{if(D.2D&&!D.2Z){C D}}D.3q("6x");A d=dw||D.du;if(d>0){5c(z.2p(D,B(){D.5b(L,8R)}),d);C D}D.4A=S 5d().8O();if(D.2Z){D.4A-=D.8Q*D.2o}D.8N=D.4A+D.8Q;D.2D=K;D.2Z=U;A 8P=D.2C.4x(D.2o);if(!D.2o){if(!D.4y){D.4y=D.4z}D.3q("dt",[8P])}D.3q("ds",[8P]);D.8M();C D},jS:B(){5e(D.3r);if(!D.2D){C D}D.2Z=K;D.3q("dr",[D.2C.4x(D.2o)]);C D},jR:B(dq,dp){5e(D.3r);D.2D=D.2Z=K;D.2o=dq*6D;if(dp){D.5b()}C D},jQ:B(dn){if(!D.3r){C}5e(D.3r);if(dn){D.2o=1}D.3q("dm",[D.2C.4x(D.2o)]);D.2D=D.2Z=U;C D},3N:B(){if(D.2D){C D.2Z?"3M":"jP"}C"jO"},8M:B(){5e(D.3r);if(D.2D){A dl=S 5d().8O();A 2q=(dl-D.4A)/(D.8N-D.4A);if(2q>=1){2q=1}D.2o=2q;if(D.5a){2q=D.5a(2q)}D.3q("8B",[D.2C.4x(2q)]);if(2q<1){D.3r=5c(z.2p(D,"8M"),D.dj)}I{D.2D=U;if(D.4z>0){D.4z--;D.5b(L,K)}I{if(D.4z==-1){D.5b(L,K)}I{if(D.4y){D.4z=D.4y;D.4y=0}}}D.2o=0;D.3q("dh")}}C D}});(B(){A df=B(E){if(z.1l){A ns=E.1c;if(!ns.8L.G&&z.1c(E,"8L")=="dg"){ns.8L="1"}if(!ns.3n.G&&z.1c(E,"3n")=="8K"){ns.3n="8K"}}};z.6C=B(F){if(V F.1d=="1k"){2m S 1O("z.6C jN an 1d 1Z")}F.E=z.1D(F.E);A 3p=z.1x({6w:{}},F);A 8J=(3p.6w.2W={});8J.1w=(V 3p.1w=="1k")?B(){C 2V(z.1c(3p.E,"2W"))}:3p.1w;8J.1d=3p.1d;A 2U=z.6y(3p);z.2c(2U,"6x",L,B(){df(3p.E)});C 2U};z.8I=B(F){C z.6C(z.1x({1d:1},F))};z.8H=B(F){C z.6C(z.1x({1d:0},F))};if(z.6B&&!z.3o){z.8E=B(n){C 2k("0.5")+((2Y.da((n+2k("1.5"))*2Y.d9))/2)}}I{z.8E=B(n){C 0.5+((2Y.da((n+1.5)*2Y.d9))/2)}}A d4=B(6A){D.8G=6A;R(A p in 6A){A 1a=6A[p];if(1a.1w 1N z.1J){1a.d7=S z.1J()}}D.4x=B(r){A J={};R(A p in D.8G){A 1a=D.8G[p];A 6z=L;if(1a.1w 1N z.1J){6z=z.d8(1a.1w,1a.1d,r,1a.d7).8F()}I{if(!z.2l(1a.1w)){6z=((1a.1d-1a.1w)*r)+1a.1w+(p!="2W"?1a.jM||"px":"")}}J[p]=6z}C J}};z.6y=B(F){F.E=z.1D(F.E);if(!F.5a){F.5a=z.8E}A 2U=S z.d6(F);z.2c(2U,"6x",2U,B(){A pm={};R(A p in D.6w){A 1a=pm[p]=z.1x({},D.6w[p]);if(z.1Y(1a.1w)){1a.1w=1a.1w()}if(z.1Y(1a.1d)){1a.1d=1a.1d()}A d5=(p.1M().T("jL")>=0);B 8C(E,p){4w(p){2X"58":C E.8D;2X"3n":C E.6v}A v=z.1c(E,p);C(p=="2W")?2V(v):2k(v)};if(V 1a.1d=="1k"){1a.1d=8C(D.E,p)}I{if(V 1a.1w=="1k"){1a.1w=8C(D.E,p)}}if(d5){1a.1w=S z.1J(1a.1w);1a.1d=S z.1J(1a.1d)}I{1a.1w=(p=="2W")?2V(1a.1w):2k(1a.1w)}}D.2C=S d4(pm)});z.2c(2U,"8B",2U,B(8A){R(A s in 8A){z.1c(D.E,s,8A[s])}});C 2U}})()}',62,1711,'|||||||||||||||||||||||||||||||||||dojo|var|function|return|this|node|args|length|evt|else|ret|true|null|obj|elem|dfd|arguments|arr|for|new|indexOf|false|typeof||_base|push|type||te|||apply|attr|||||prop|xhr|style|end|doc|match|uri|_hasResource|key|del|undefined|isIE|item|forEach|djConfig|name|document|query|while|_66|try|res|start|mixin|catch|console|split|root|prototype|byId|gcs|ioArgs|err|NodeList|_p|Color|debug|parentNode|toLowerCase|instanceof|Error|constructor|provide|isString|ta|255|val|_a|global|_69|isFunction|value||substring|join|map|tn||window||path|_343|_220|_listeners|connect|call|json|replace|left|_b|toString|128|parseFloat|isArray|throw||_percent|hitch|step|declare|charAt|nodeType|_3c3|nidx|slice|faux|fired|_c4|_7e|loc|curve|_active|url|_44c|responseText|str|_312|idx|tqp|isNaN|isOpera|_22d|callee|add|_18b|_f8|_e2|_41|anim|Number|opacity|case|Math|_paused|Deferred|lastIndexOf|||||||||shift|substr|string|_3e7|_3ce|break|_w|charCode|_listener|_d5|_c5|authority|_49|width|isSafari|_49e|fire|_timer|_47b|_465|eval|_in|_40c|_409|_362|_3d9|className|_3d5|_386|_37a|body|getComputedStyle|box|_221|keyCode|remove|_8d|_46|paused|status|not|_478|_461|form|splice|filter|concat|tret|childNodes|_38b|_367|_33d||||||||||_340|_348|keypress|appendChild|_toArray|Array|_2b0|_toPixelValue|ref|_fixEvent|_19f|_14c|_14a|_150|_141|declaredClass|_d4|_99|_Url|_83|scheme|_67|_3d|switch|getValue|_startRepeatCount|repeat|_startTime|_47e|cancel|tif|load|to|with|tf|getElementsByTagName|number|_34c|_342|extend|_1e3|_normalizeEventName|_14b|_14e|results|self|cbfn|_f9|_d8|_b2|src|_88|dav||baseUrl|fragment|_loadedModules|_44|_43|_loaders|mll|height||easing|play|setTimeout|Date|clearTimeout|hdr|content|code|errback|_464|addCallbacks|_450|fromJson|_413|_3fc|_3ee|max|_31e|cond|getAttribute|_3d4|obi|tagName|_360|_381|contains|firstChild|_368|_372|_320|place|_2fa|scrollTop|_299|scrollLeft|top|documentElement|_288|_287|_getBorderExtents|_23f|_23d|_239|_218|_216|_211|eles|target|keys|shiftKey|ctrlKey|event|192|iel|_1db|delete|_1cf||addEventListener|String|_1af|_157|array|_14d|continue|_14f|_137|_11f|_106|_findMethod|has|_delegate|_dc|_d3|loaded|_9a|_loadInit|_inFlightCount|getObject|tv|_4f|_postLoad|_2d|offsetWidth|properties|beforeBegin|animateProperty|_4ad|_4a6|isKhtml|_fade|100|headers|readyState|timeout|_469|_457|_44d|formToObject|_441|comment|_43d|_36f|_419|tp|_40a|_406|_407|_373|_403|_3e6|_31b|cbi|test|_3c7|nextSibling|last|_3a1|_38e|_365|_36b|ecn|_364|_363|_356|_35e|_35f|_34f|_34d|_349|trim|tci|_328|_32b|_31f|_31c|_anim|_300|_2ff|_2f5|_2e7|removeClass|addClass|func|_2c4|cls|_2a9|_2ae|_280|_27f|_getPadExtents|isMoz|none|_233|cssText|_214|_fixCallback|_synthesizeEvent|stopPropagation|preventDefault|_setKeyChar|_1e1|ieh|_1d7|_1be|colorFromArray|sanitize|bits|rgb|_156|_fire|_resback|_13d|partial|_13a|silentlyCancelled|_topics|_127|_f1|_f0|superclass|_ec|_e3|mct|setObject|_bf|_b3|object|require|_92|_khtmlTimer|location|XMLHTTP|locale|dua|_71|_modulePrefixes|_55|_loadModule|_51|_50|_4e|pop|_3f|_callLoaded|_unloaders|_loadNotifying|_loadedUrls|_27|_24|_1d|_5|_4b7|onAnimate|getStyle|offsetHeight|_defaultEasing|toCss|_properties|fadeOut|fadeIn|_49f|auto|zoom|_cycle|_endTime|valueOf|_494|duration|_492|DELETE|_ioAddQueryToUrl|putData|contentType|password|user|_isDocumentOk|application|||||_466||||||startTime|_xhrObj|_45f|handleAs|addBoth|error|text|objectToQuery|_44f|ActiveXObject|_443|_442|filtered|_43f|_43e|_437|file|tnl|_41c|_filterQueryResult|_zipIdx|_408|_402|evaluate|_3ed|_380|fHit|_361|_33b|_3da|_3ab|_3d6|RegExp|_327|_3cf|_3c9|child|innerHTML|first|tval|_391|class|pnc|_37e|_37c|_375|_366|_35c|_35a|_353|_33c|_336|_314|||_315|_oe|_307|_309|cloneNode|after|createElement||_2f8|_2ef|_2ee|unshift|coords|some|every||_2cb|script|_2c9|parent||a2p||_2c3|_2bd||abs|_getMarginBox|_2b3|_2a6|position|_2a7|_2ac|_2ab|_getIeDocumentElementOffset|getBoundingClientRect|ownerDocument|_2a3|clientWidth|_isBodyLtr|_fixIeBiDiScrollLeft|_bodyLtr|_29d|_getContentBox|_setBox|_getMarginExtents|_getPadBorderExtents|_usesBorderBox|boxModel|pcs|st|sl|_240|runtimeStyle|_dcm|BackCompat|compatMode|default|_21b|_d|html|_event_listener|handlers|PAGE_DOWN|PAGE_UP|RIGHT_ARROW|LEFT_ARROW|DOWN_ARROW|UP_ARROW|_preventDefault||_stopPropagation|returnValue||_trySetKeyCode|cancelBubble|currentTarget|106|_1ee|111||_1e8|_1e7|||se|srcElement|onkeydown||_1d0|_disconnect|lid|_1c0|_connect|_set|_195|_185|_183|_17d|_everyOrSome|_16b|_172|_15b|Function|_154|_escapeString|_140|chain|_check|canceller|_12d|_124|_11a|_10d|_107|inherited|_fa|_f2|_findMixin|_constructor|preamble|_de|clone|tmp|_c7|TMP|_be|_ba|_mixin|isBrowser|lang|firebug||param|modulePaths|_a7|_fireCallback|_a0|setContext||_9c|unloaded||||_96|_93|navigator|_90|_89||protocol|_84|_86|_XMLHTTP_PROGIDS|gears|google|setAttribute|_80|_77|cfg|_6f|_getModuleSymbols|_5a|_58|_53|_4d|_4c|_45|_40|_moduleHasPrefix|_loadUri|_28|_26|_21|_22|tests|doh|_20|_1f|_1c|version|_1b|_19|_getProp|_11|_4|_4a5|_4b3|_Animation|tempColor|blendColors|PI|sin|||||_49a|normal|onEnd||rate||curr|onStop|_497||_496|pct|onPause|onPlay|onBegin|delay||_491|_Line|_48b|wrapForm|PUT|_487|POST|GET|_476|_474|_472|_ioWatch|send|_471|setRequestHeader|open|callback|setInterval|_470|resHandle|_46f|ioCheck|_46e|validCheck|getTime|_ioCancelAll|addOnUnload|clearInterval|dojoType|now|canceled|_blockAsync|_45e|_45c|_459|_ioSetArgs|_contentHandlers|abort|_458|_456||||addErrback|_454|addCallback|_452|_44b|_44a|_449|preventCache|responseXML|Microsoft|JSON|usePlainJson|_431|toJson|_430|_42d|image|opt|ria|_421|_41b|_40b|_zip|_410|_40d|_357|sqf|_374|_3e5|_3df|_38f|clc|pred|parseInt|ntf|_3bf|_3bc|cnl|previousSibling|_3a9|_3a6|_39c|_399|_396|_392|__cachedIndex|__cachedLength|_376|iterateNext|_34a|_355|_354|_32c|_350|_34b|_33f|_33e|_33a|_338|_334|_332||_330|_32e||_322|_316|mousemove|mouseout|mouseover|_305|lastChild||_2f9||_2f2|_2f1|removeChild|_2ec|_2eb|_2ea|_2e6||_2e4|_2e2|_2d6|_2d5|_2d4|_2d3|_2d2|_2d1|_2cd|_2cc|scs|write|_2c8|hasClass|_2c0|_2bb|_2b5|_abs|_docScroll|offsetParent|offsetTop|offsetLeft|absolute|getBoxObjectFor|clientLeft|_setContentSize|_setMarginBox|_28d|_286|_285|_289|NaN|_281|border|_272|_26b|_260|_258|_253|_24c|_246|_23a|_getOpacity|_setOpacity|_238|td|tr|nodeName|FILTER|_22f|_22e|currentStyle|_22c|_22b|display|QuirksMode|unselectable|_217|isMozilla|getElementById|attributes|all|_ie_listener|_getIeDispatcher|_1fd|NUM_LOCK|SCROLL_LOCK|INSERT|END|HOME|PAUSE|F12|F11|F10|F9|F8|F7|F6|F5|F4|F3|F2|F1|63232|SHIFT_TAB|TAB|keyIdentifier|_1f3|stopEvent|_punctMap|222|219|186|onkeypress|_stealthKeyDown|_fixKeys|relatedTarget|_1e0|_1df|_stealthKeydown|_1d6|_1d5|_1d1|_1ca|_1c9|_1cb|_1c2|_1c1|_1c3|_1c4|_1bc|_1b3|_1b2|colorFromHex|colorFromRgb|named|colorFromString|mask|rgba|_19c|_197|_192|setColor|_180|_178|_177|_175|_174|_16d|_166|_164|_163|_162|_15c|_15d|_15e|index|__json__|toJsonIndentStr|_nextId|_12f|_12b|publish|_128|_126|_125|_122|_121|_123|_11c|_11b|_10c|_10b|_108|getDispatcher|argument|nom|_construct|_core|_makeCtor|_df|_db|deprecated|isObject|_cc||scope||_hitchArgs|_c2||pre|_c1|native|isDebug||registerModulePath|_a8||finally|||_a6|_a5|_a4|_a3|_a2|_a1|_9f|_9e|_9d|_9b|_98|_97|onbeforeunload|ipt|scr|complete|_95|userAgent|_modulesLoaded|initialized|_initFired|_8c|_8a|_getText|_87|ieForceActiveXXhr|Msxml2|isGears|_81|_gearsObject|googlegears|GearsFactory|isFF|_7d|Safari|_72|_name|_6c|ire|ore|_68|i18n|_5b|requireIf|_56|_52|loading|_4a|_loadPath|_47|_48|_global_omit_module_check|_getModulePrefix|_3c|_3a|_37|_30|Boolean|_loadUriAndCheck|_2e||cacheBust|_1e|_1a|_17|_16|_15|_14|_f|_10|_e|_9|_8|revision|flag|patch|minor|major|_6|color|units|needs|stopped|playing|stop|gotoPercent|pause|1000|implemented|yet|_48a|xhrDelete|rawXhrPut|xhrPut|postData|rawXhrPost|xhrPost|xhrGet|Type|Content|sync|response|http|bad|urlencoded|www|_watchInFlightError||exceeded|handle|action|getAttributeNode|loadXML|async|XMLDOM|prefixes|MSXML3|MSXML|MSXML2||xml|javascript|wasn|your|optional|message|off|turn|use|endpoints|issues|security|potential|avoid|mimetype|using|consider|please|decodeURIComponent|queryToObject|formToJson|formToQuery|encodeURIComponent|selected|option|multiple|checked|checkbox|radio|disabled|textarea|select|button|reset|submit|input|_3fb|hasAttribute|0n|even|odd|nth|_3b5|empty|_3b1|_3ad|htmlFor|_38a|under||exprssion|failure|ANY_TYPE|XPathResult|starts|keyup|keydown|mouseup|mousedown|blur|click|combine|span|addContent||adopt|orphan|_2de|_2dd|styles|_2da|_2d9|_2cf|_2ce|show|createPopup|toggleClass|scrollWidth|clientTop|ltr|direction|pageXOffset|pageYOffset|fixed|contentBox|marginBox|BUTTON|TABLE|_getBorderBox|clientHeight|visible|overflow|marginBottom|marginRight|marginTop|marginLeft|borderBottomWidth|borderBottomStyle|borderRightWidth|borderRightStyle|borderTopWidth|borderTopStyle|borderLeftWidth|borderLeftStyle|paddingBottom|paddingRight|paddingTop|paddingLeft|offset||min|padding||margin|Opacity|Alpha|alpha|filters|pixelLeft|medium|_22a|defaultView|before||insertBefore|KhtmlUserSelect|MozUserSelect|setSelectable|isDescendant|div|_destroyElement|BackgroundImageCache|execCommand|PageDown|PageUp|Right|Left|Down|Up|63289|63249|63248|PRINT_SCREEN|63302|63277|63276|63275|63273|63272|63250|63247|63246|63245|63244|63243|63242|63241|63240|63239|63238|63237|63236|63235|63234|63233|Enter|_1f9|which|_1f6|bubbledKeyCode|221|220||||191|190|189|188|187|toElement|fromElement|clientY|pageY||clientX|pageX|offsetY|||layerY|offsetX|layerX|parentWindow|_nop|_allow_leaks|145|144|126|F15|125|F14|124|F13|123|122|121|120|119|118|117|116|115|114|113|112|NUMPAD_DIVIDE|110|NUMPAD_PERIOD|109|NUMPAD_MINUS|108|NUMPAD_ENTER|107|NUMPAD_PLUS|NUMPAD_MULTIPLY|105|NUMPAD_9|104|NUMPAD_8|103|NUMPAD_7|102|NUMPAD_6|101|NUMPAD_5|NUMPAD_4||NUMPAD_3|NUMPAD_2|NUMPAD_1|NUMPAD_0||SELECT|RIGHT_WINDOW||LEFT_WINDOW||HELP|SPACE|ESCAPE|CAPS_LOCK|ALT|CTRL|SHIFT|ENTER|CLEAR|BACKSPACE|attachEvent|fixEvent|fromCharCode|keyChar|_1b9|removeEventListener|0x|round|toHex|toRgba|toRgb|aqua|teal|blue|navy|yellow|olive|lime|green|fuchsia|purple|red|maroon|white|gray|silver|black|boolean|called|already|Cancelled|connectPublisher|unsubscribe|subscribe|disconnect|_113|_112||_111|_110|||found|was||must|_|module|||required|likely|It|declaration|Mixin|separate|instead|property|initializer||pass|_c9|_bb|_b7|nfunction|isAlien|isFinite|isArrayLike|_firebug|withDoc|withGlobal|_writeIncludes|VML|behavior|addRule|createStyleSheet|vml|com|microsoft|schemas|urn|namespaces|onunload|onreadystatechange|defer|khtml|WebKit|DOMContentLoaded|enableMozDomContentLoaded|domcontentloaded|Unable|base|chrome|1223|304|300|200|available|XMLHttpRequest|_println|language|userLanguage|isQuirks|factory|mimeTypes|Factory|Gears|_7f|MSIE||Firefox|Gecko|Konqueror||Opera|appVersion|xd|browser|moduleUrl|port|host|hostenv|_requireLocalization|_5f|_5e|_5d|_5c|requireLocalization|requireAfterIf|_57|common|platformRequire|defined|symbol|_isXDomain|tried|Could|__package__|packageFileName|_42|useXDomain|flight|still|files|addOnLoad|failed|sourceURL|util|notice|without|change|subject|APIs|EXPERIMENTAL|experimental|removed|will|DEPRECATED|exists|10315|Rev|Mobile|Spidermonkey|Rhino||Browser|delayMozLoadingFix|preventBackButtonFix|libraryScriptUri|baseRelativePath|baseScriptUri|allowQueryConfig|warn|trace|timeEnd||time|profileEnd|profile|log|info|groupEnd|group|dirxml|dir|count|assert'.split('|'),0,{});
+
+
+/*
+
+Prototype 1.5 rc0
+ - Adapted from Ruby on Rails - http://dev.rubyonrails.org/browser/spinoffs/prototype/src
+ - By Lunarmedia, 06 August, 2006
+ - Available at (and packed with) JavascriptCompressor.com
+
+Please note this version is missing the selector.js component of the full Prototype library.
+You can get the compressed version of selector at JavascriptCompressor.com
+
+*/
+
+var decompressedPrototype = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('d T={4l:\'1.5.8P\',3E:\'(?:<3G.*?>)((\\n|\\r|.)*?)(?:<\\/3G>)\',2v:7(){},K:7(x){c x}};d 1b={17:7(){c 7(){6.1I.2n(6,N)}}};d 1e=z q();q.u=7(5d,O){G(d 1G 2M O){5d[1G]=O[1G]}c 5d};q.1U=7(U){1j{f(U==1v)c\'1v\';f(U==1L)c\'1L\';c U.1U?U.1U():U.2C()}1s(e){f(e 8R 9l)c\'...\';25 e}};7j.v.1d=7(){d 43=6,23=$A(N),U=23.8S();c 7(){c 43.2n(U,23.3s($A(N)))}};7j.v.8U=7(U){d 43=6;c 7(C){c 43.8V(U,C||1W.C)}};q.u(8Q.v,{8W:7(){d 4Z=6.2C(16);f(6<16)c\'0\'+4Z;c 4Z},5j:7(){c 6+1},8Y:7(o){$R(0,6,11).V(o);c 6}});d 6s={6j:7(){d 48;G(d i=0;i<N.t;i++){d 6L=N[i];1j{48=6L();1y}1s(e){}}c 48}};d 6Q=1b.17();6Q.v={1I:7(1a,1J){6.1a=1a;6.1J=1J;6.41=Y;6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){f(!6.41){1j{6.41=11;6.1a()}8Z{6.41=Y}}}};q.u(4b.v,{2T:7(1A,1z){d L=\'\',O=6,I;1z=N.90.52(1z);1H(O.t>0){f(I=O.I(1A)){L+=O.47(0,I.w);L+=(1z(I)||\'\').2C();O=O.47(I.w+I[0].t)}1D{L+=O,O=\'\'}}c L},92:7(1A,1z,3i){1z=6.2T.52(1z);3i=3i===1v?1:3i;c 6.2T(1A,7(I){f(--3i<0)c I[0];c 1z(I)})},93:7(1A,o){6.2T(1A,o);c 6},94:7(t,2S){t=t||30;2S=2S===1v?\'...\':2S;c 6.t>t?6.47(0,t-2S.t)+2S:6},9F:7(){c 6.2y(/^\\s+/,\'\').2y(/\\s+$/,\'\')},71:7(){c 6.2y(/<\\/?[^>]+>/7Y,\'\')},2Q:7(){c 6.2y(z 3O(T.3E,\'5P\'),\'\')},70:7(){d 6Y=z 3O(T.3E,\'5P\');d 5p=z 3O(T.3E,\'98\');c(6.I(6Y)||[]).1C(7(5o){c(5o.I(5p)||[\'\',\'\'])[1]})},3q:7(){c 6.70().1C(7(3G){c 4q(3G)})},9E:7(){d 1q=J.4Y(\'1q\');d 1Y=J.9D(6);1q.75(1Y);c 1q.3h},9c:7(){d 1q=J.4Y(\'1q\');1q.3h=6.71();c 1q.2z[0]?1q.2z[0].6q:\'\'},78:7(){d 7i=6.I(/^\\??(.*)$/)[1].3j(\'&\');c 7i.36({},7(5b,72){d 1i=72.3j(\'=\');5b[1i[0]]=1i[1];c 5b})},1Z:7(){c 6.3j(\'\')},3P:7(){d 2l=6.3j(\'-\');f(2l.t==1)c 2l[0];d 54=6.5g(\'-\')==0?2l[0].7e(0).3Y()+2l[0].7g(1):2l[0];G(d i=1,73=2l.t;i<73;i++){d s=2l[i];54+=s.7e(0).3Y()+s.7g(1)}c 54},1U:7(){c"\'"+6.2y(/\\\\/g,\'\\\\\\\\\').2y(/\'/g,\'\\\\\\\'\')+"\'"}});4b.v.2T.52=7(1z){f(2i 1z==\'7\')c 1z;d 2U=z 3n(1z);c 7(I){c 2U.7a(I)}};4b.v.9h=4b.v.78;d 3n=1b.17();3n.79=/(^|.|\\r|\\n)(#\\{(.*?)\\})/;3n.v={1I:7(2U,1A){6.2U=2U.2C();6.1A=1A||3n.79},7a:7(U){c 6.2U.2T(6.1A,7(I){d 53=I[1];f(53==\'\\\\\')c I[2];c 53+(U[I[3]]||\'\').2C()})}};d $1y=z q();d $49=z q();d 1p={V:7(o){d w=0;1j{6.2m(7(h){1j{o(h,w++)}1s(e){f(e!=$49)25 e}})}1s(e){f(e!=$1y)25 e}},9n:7(o){d L=11;6.V(7(h,w){L=L&&!!(o||T.K)(h,w);f(!L)25 $1y});c L},9o:7(o){d L=11;6.V(7(h,w){f(L=!!(o||T.K)(h,w))25 $1y});c L},3e:7(o){d P=[];6.V(7(h,w){P.W(o(h,w))});c P},7n:7(o){d L;6.V(7(h,w){f(o(h,w)){L=h;25 $1y}});c L},7o:7(o){d P=[];6.V(7(h,w){f(o(h,w))P.W(h)});c P},9p:7(1A,o){d P=[];6.V(7(h,w){d 7c=h.2C();f(7c.I(1A))P.W((o||T.K)(h,w))});c P},1M:7(U){d 51=Y;6.V(7(h){f(h==U){51=11;25 $1y}});c 51},36:7(45,o){6.V(7(h,w){45=o(45,h,w)});c 45},9q:7(1F){d 23=$A(N).47(1);c 6.3e(7(h){c h[1F].2n(h,23)})},9s:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h>=L)L=h});c L},9u:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h<L)L=h});c L},9v:7(o){d 50=[],58=[];6.V(7(h,w){((o||T.K)(h,w)?50:58).W(h)});c[50,58]},3r:7(1G){d P=[];6.V(7(h,w){P.W(h[1G])});c P},9x:7(o){d P=[];6.V(7(h,w){f(!o(h,w))P.W(h)});c P},9y:7(o){c 6.3e(7(h,w){c{h:h,59:o(h,w)}}).9z(7(18,3U){d a=18.59,b=3U.59;c a<b?-1:a>b?1:0}).3r(\'h\')},1Z:7(){c 6.3e(T.K)},9B:7(){d o=T.K,23=$A(N);f(2i 23.5e()==\'7\')o=23.9C();d 7l=[6].3s(23).1C($A);c 6.1C(7(h,w){c o(7l.3r(w))})},1U:7(){c\'#<1p:\'+6.1Z().1U()+\'>\'}};q.u(1p,{1C:1p.3e,5v:1p.7n,1k:1p.7o,8M:1p.1M,7p:1p.1Z});d $A=1E.7q=7(2R){f(!2R)c[];f(2R.1Z){c 2R.1Z()}1D{d P=[];G(d i=0;i<2R.t;i++)P.W(2R[i]);c P}};q.u(1E.v,1p);f(!1E.v.4d)1E.v.4d=1E.v.4m;q.u(1E.v,{2m:7(o){G(d i=0;i<6.t;i++)o(6[i])},5i:7(){6.t=0;c 6},7r:7(){c 6[0]},5e:7(){c 6[6.t-1]},7s:7(){c 6.1k(7(h){c h!=1v||h!=1L})},6J:7(){c 6.36([],7(6H,h){c 6H.3s(h&&h.5D==1E?h.6J():[h])})},5s:7(){d 4N=$A(N);c 6.1k(7(h){c!4N.1M(h)})},5g:7(U){G(d i=0;i<6.t;i++)f(6[i]==U)c i;c-1},4m:7(5h){c(5h!==Y?6:6.1Z()).4d()},1U:7(){c\'[\'+6.1C(q.1U).1N(\', \')+\']\'}});d 4h={2m:7(o){G(d 1O 2M 6){d h=6[1O];f(2i h==\'7\')49;d 1i=[1O,h];1i.1O=1O;1i.h=h;o(1i)}},7t:7(){c 6.3r(\'1O\')},4N:7(){c 6.3r(\'h\')},7u:7(2N){c $H(2N).36($H(6),7(4Q,1i){4Q[1i.1O]=1i.h;c 4Q})},7w:7(){c 6.1C(7(1i){c 1i.1C(4n).1N(\'=\')}).1N(\'&\')},1U:7(){c\'#<4h:{\'+6.1C(7(1i){c 1i.1C(q.1U).1N(\': \')}).1N(\', \')+\'}>\'}};7 $H(U){d 2N=q.u({},U||{});q.u(2N,1p);q.u(2N,4h);c 2N};3L=1b.17();q.u(3L.v,1p);q.u(3L.v,{1I:7(22,2x,2H){6.22=22;6.2x=2x;6.2H=2H},2m:7(o){d h=6.22;2q{o(h);h=h.5j()}1H(6.1M(h))},1M:7(h){f(h<6.22)c Y;f(6.2H)c h<6.2x;c h<=6.2x}});d $R=7(22,2x,2H){c z 3L(22,2x,2H)};d M={4w:7(){c 6s.6j(7(){c z 5C()},7(){c z 5n(\'7y.6d\')},7(){c z 5n(\'7z.6d\')})||Y},4s:0};M.2W={3b:[],2m:7(o){6.3b.2m(o)},69:7(4F){f(!6.1M(4F))6.3b.W(4F)},7A:7(5t){6.3b=6.3b.5s(5t)},3y:7(1a,26,E,2Z){6.V(7(3o){f(3o[1a]&&2i 3o[1a]==\'7\'){1j{3o[1a].2n(3o,[26,E,2Z])}1s(e){}}})}};q.u(M.2W,1p);M.2W.69({5G:7(){M.4s++},1B:7(){M.4s--}});M.44=7(){};M.44.v={4a:7(m){6.m={1F:\'4j\',4p:11,5H:\'5E/x-86-Q-7C\',28:\'\'};q.u(6.m,m||{})},3l:7(){c 6.E.32==1v||6.E.32==0||(6.E.32>=84&&6.E.32<7E)},7G:7(){c!6.3l()}};M.3t=1b.17();M.3t.5L=[\'7H\',\'80\',\'7I\',\'7J\',\'4t\'];M.3t.v=q.u(z M.44(),{1I:7(1l,m){6.E=M.4w();6.4a(m);6.26(1l)},26:7(1l){d 28=6.m.28||\'\';f(28.t>0)28+=\'&7K=\';1j{6.1l=1l;f(6.m.1F==\'7L\'&&28.t>0)6.1l+=(6.1l.I(/\\?/)?\'&\':\'?\')+28;M.2W.3y(\'5G\',6,6.E);6.E.7N(6.m.1F,6.1l,6.m.4p);f(6.m.4p){6.E.5T=6.5J.1d(6);2Y((7(){6.4r(1)}).1d(6),10)}6.5A();d 1c=6.m.5V?6.m.5V:28;6.E.7O(6.m.1F==\'4j\'?1c:1L)}1s(e){6.3p(e)}},5A:7(){d 1P=[\'X-7P-7Q\',\'5C\',\'X-T-4l\',T.4l,\'7R\',\'1Y/7m, 1Y/2e, 5E/5F, 1Y/5F, */*\'];f(6.m.1F==\'4j\'){1P.W(\'5Q-2g\',6.m.5H);f(6.E.7S)1P.W(\'7T\',\'7U\')}f(6.m.1P)1P.W.2n(1P,6.m.1P);G(d i=0;i<1P.t;i+=2)6.E.7V(1P[i],1P[i+1])},5J:7(){d 2F=6.E.2F;f(2F!=1)6.4r(6.E.2F)},4A:7(B){1j{c 6.E.7W(B)}1s(e){}},5M:7(){1j{c 4q(\'(\'+6.4A(\'X-7X\')+\')\')}1s(e){}},5R:7(){1j{c 4q(6.E.3F)}1s(e){6.3p(e)}},4r:7(2F){d C=M.3t.5L[2F];d E=6.E,2Z=6.5M();f(C==\'4t\'){1j{(6.m[\'2I\'+6.E.32]||6.m[\'2I\'+(6.3l()?\'81\':\'82\')]||T.2v)(E,2Z)}1s(e){6.3p(e)}f((6.4A(\'5Q-2g\')||\'\').I(/^1Y\\/7m/i))6.5R()}1j{(6.m[\'2I\'+C]||T.2v)(E,2Z);M.2W.3y(\'2I\'+C,6,E,2Z)}1s(e){6.3p(e)}f(C==\'4t\')6.E.5T=T.2v},3p:7(57){(6.m.5W||T.2v)(6,57);M.2W.3y(\'5W\',6,57)}});M.4C=1b.17();q.u(q.u(M.4C.v,M.3t.v),{1I:7(1w,1l,m){6.4x={3m:1w.3m?$(1w.3m):$(1w),3z:1w.3z?$(1w.3z):(1w.3m?1L:$(1w))};6.E=M.4w();6.4a(m);d 1B=6.m.1B||T.2v;6.m.1B=(7(E,U){6.5Y();1B(E,U)}).1d(6);6.26(1l)},5Y:7(){d 3A=6.3l()?6.4x.3m:6.4x.3z;d 3k=6.E.3F;f(!6.m.3q)3k=3k.2Q();f(3A){f(6.m.60){z 6.m.60(3A,3k)}1D{k.6h(3A,3k)}}f(6.3l()){f(6.1B)2Y(6.1B.1d(6),10)}}});M.61=1b.17();M.61.v=q.u(z M.44(),{1I:7(1w,1l,m){6.4a(m);6.1B=6.m.1B;6.1J=(6.m.1J||2);6.2s=(6.m.2s||1);6.4B={};6.1w=1w;6.1l=1l;6.22()},22:7(){6.m.1B=6.63.1d(6);6.2D()},7b:7(){6.4B.1B=1v;89(6.65);(6.1B||T.2v).2n(6,N)},63:7(26){f(6.m.2s){6.2s=(26.3F==6.64?6.2s*6.m.2s:1);6.64=26.3F}6.65=2Y(6.2D.1d(6),6.2s*6.1J*4z)},2D:7(){6.4B=z M.4C(6.1w,6.1l,6.m)}});7 $(){d P=[],4;G(d i=0;i<N.t;i++){4=N[i];f(2i 4==\'8c\')4=J.8d(4);P.W(k.u(4))}c P.t<2?P[0]:P};J.8f=7(1f,6a){d 6b=($(6a)||J.1c).4D(\'*\');c $A(6b).36([],7(12,4E){f(4E.1f.I(z 3O("(^|\\\\s)"+1f+"(\\\\s|$)")))12.W(k.u(4E));c 12})};f(!1W.k)d k=z q();k.u=7(4){f(!4)c;f(4X)c 4;f(!4.6e&&4.1h&&4!=1W){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')4[1G]=2r.4W(h)}}4.6e=11;c 4};k.u.2r={4W:7(h){c 6[h]=6[h]||7(){c h.2n(1L,[6].3s($A(N)))}}};k.3d={4U:7(4){c $(4).l.2B!=\'3Q\'},6N:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);k[k.4U(4)?\'6f\':\'6w\'](4)}},6f:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'3Q\'}},6w:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'\'}},42:7(4){4=$(4);4.1X.8h(4)},6h:7(4,2e){$(4).3h=2e.2Q();2Y(7(){2e.3q()},10)},2y:7(4,2e){4=$(4);f(4.6k){4.6k=2e.2Q()}1D{d 1K=4.6R.6S();1K.56(4);4.1X.8i(1K.6T(2e.2Q()),4)}2Y(7(){2e.3q()},10)},8k:7(4){4=$(4);c 4.2k},3K:7(4){c z k.3S(4)},8l:7(4,1f){f(!(4=$(4)))c;c k.3K(4).1M(1f)},8m:7(4,1f){f(!(4=$(4)))c;c k.3K(4).7k(1f)},8n:7(4,1f){f(!(4=$(4)))c;c k.3K(4).42(1f)},8p:7(4){4=$(4);G(d i=0;i<4.2z.t;i++){d 3M=4.2z[i];f(3M.8q==3&&!/\\S/.4v(3M.6q))k.42(3M)}},8r:7(4){c $(4).3h.I(/^\\s*$/)},8s:7(4,3I){4=$(4),3I=$(3I);1H(4=4.1X)f(4==3I)c 11;c Y},6t:7(4){4=$(4);d x=4.x?4.x:4.2f,y=4.y?4.y:4.29;1W.6t(x,y)},1R:7(4,l){4=$(4);d h=4.l[l.3P()];f(!h){f(J.4J&&J.4J.6v){d 4L=J.4J.6v(4,1L);h=4L?4L.8v(l):1L}1D f(4.6x){h=4.6x[l.3P()]}}f(1W.6E&&[\'18\',\'1n\',\'3U\',\'6G\'].1M(l))f(k.1R(4,\'14\')==\'4G\')h=\'6y\';c h==\'6y\'?1L:h},8x:7(4,l){4=$(4);G(d B 2M l)4.l[B.3P()]=l[B]},8y:7(4){4=$(4);f(k.1R(4,\'2B\')!=\'3Q\')c{21:4.2p,24:4.2k};d 20=4.l;d 6B=20.4O;d 6A=20.14;20.4O=\'31\';20.14=\'2o\';20.2B=\'\';d 6C=4.6m;d 6D=4.6p;20.2B=\'3Q\';20.14=6A;20.4O=6B;c{21:6C,24:6D}},8z:7(4){4=$(4);d 4R=k.1R(4,\'14\');f(4R==\'4G\'||!4R){4.4T=11;4.l.14=\'3T\';f(1W.6E){4.l.1n=0;4.l.18=0}}},8A:7(4){4=$(4);f(4.4T){4.4T=1v;4.l.14=4.l.1n=4.l.18=4.l.6G=4.l.3U=\'\'}},8B:7(4){4=$(4);f(4.3c)c;4.3c=4.l.3V;f((k.1R(4,\'3V\')||\'4U\')!=\'31\')4.l.3V=\'31\'},8D:7(4){4=$(4);f(4.3c)c;4.l.3V=4.3c;4.3c=1v}};q.u(k,k.3d);d 4X=Y;f(!3W&&/3x|3w|3u/.4v(33.62)){d 3W={}};k.6K=7(2a){q.u(k.3d,2a||{});f(2i 3W!=\'1v\'){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')3W.v[1G]=2r.4W(h)}4X=11}};k.6K();d 6M=z q();6M.2B=k.6N;1e.1g=7(3f){6.3f=3f};1e.1g.v={1I:7(4,2t){6.4=$(4);6.2t=2t.2Q();f(6.3f&&6.4.6O){1j{6.4.6O(6.3f,6.2t)}1s(e){d 1h=6.4.1h.2w();f(1h==\'4V\'||1h==\'8N\'){6.2X(6.6U())}1D{25 e}}}1D{6.1K=6.4.6R.6S();f(6.2V)6.2V();6.2X([6.1K.6T(6.2t)])}2Y(7(){2t.3q()},10)},6U:7(){d 1q=J.4Y(\'1q\');1q.3h=\'<6V><4V>\'+6.2t+\'</4V></6V>\';c $A(1q.2z[0].2z[0].2z)}};d 1g=z q();1g.6W=1b.17();1g.6W.v=q.u(z 1e.1g(\'96\'),{2V:7(){6.1K.97(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4)}).1d(6))}});1g.5m=1b.17();1g.5m.v=q.u(z 1e.1g(\'99\'),{2V:7(){6.1K.56(6.4);6.1K.74(11)},2X:7(2h){2h.4m(Y).V((7(2j){6.4.55(2j,6.4.9a)}).1d(6))}});1g.7h=1b.17();1g.7h.v=q.u(z 1e.1g(\'9d\'),{2V:7(){6.1K.56(6.4);6.1K.74(6.4)},2X:7(2h){2h.V((7(2j){6.4.75(2j)}).1d(6))}});1g.76=1b.17();1g.76.v=q.u(z 1e.1g(\'9i\'),{2V:7(){6.1K.9m(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4.9t)}).1d(6))}});k.3S=1b.17();k.3S.v={1I:7(4){6.4=$(4)},2m:7(o){6.4.1f.3j(/\\s+/).1k(7(B){c B.t>0}).2m(o)},5c:7(1f){6.4.1f=1f},7k:7(5a){f(6.1M(5a))c;6.5c(6.1Z().3s(5a).1N(\' \'))},42:7(4c){f(!6.1M(4c))c;6.5c(6.1k(7(1f){c 1f!=4c}).1N(\' \'))},2C:7(){c 6.1Z().1N(\' \')}};q.u(k.3S.v,1p);d 5I={5i:7(){G(d i=0;i<N.t;i++)$(N[i]).h=\'\'},4f:7(4){$(4).4f()},7v:7(){G(d i=0;i<N.t;i++)f($(N[i]).h==\'\')c Y;c 11},1k:7(4){$(4).1k()},5y:7(4){4=$(4);4.4f();f(4.1k)4.1k()}};d D={3a:7(Q){d 12=D.2L($(Q));d 4I=z 1E();G(d i=0;i<12.t;i++){d 4g=D.k.3a(12[i]);f(4g)4I.W(4g)}c 4I.1N(\'&\')},2L:7(Q){Q=$(Q);d 12=z 1E();G(d 1h 2M D.k.2E){d 4H=Q.4D(1h);G(d j=0;j<4H.t;j++)12.W(4H[j])}c 12},7x:7(Q,3N,B){Q=$(Q);d 3H=Q.4D(\'2u\');f(!3N&&!B)c 3H;d 4y=z 1E();G(d i=0;i<3H.t;i++){d 2u=3H[i];f((3N&&2u.2g!=3N)||(B&&2u.B!=B))49;4y.W(2u)}c 4y},7B:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.7D();4.4o=\'11\'}},7F:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.4o=\'\'}},5z:7(Q){c D.2L(Q).5v(7(4){c 4.2g!=\'31\'&&!4.4o&&[\'2u\',\'1k\',\'3J\'].1M(4.1h.2w())})},7M:7(Q){5I.5y(D.5z(Q))},5w:7(Q){$(Q).5w()}};D.k={3a:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S){d 1O=4n(1S[0]);f(1O.t==0)c;f(1S[1].5D!=1E)1S[1]=[1S[1]];c 1S[1].1C(7(h){c 1O+\'=\'+4n(h)}).1N(\'&\')}},1x:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S)c 1S[1]}};D.k.2E={2u:7(4){6c(4.2g.2w()){1r\'7Z\':1r\'31\':1r\'6l\':1r\'1Y\':c D.k.2E.3J(4);1r\'6g\':1r\'6i\':c D.k.2E.5O(4)}c Y},5O:7(4){f(4.83)c[4.B,4.h]},3J:7(4){c[4.B,4.h]},1k:7(4){c D.k.2E[4.2g==\'1k-6n\'?\'5S\':\'5X\'](4)},5S:7(4){d h=\'\',2b,w=4.85;f(w>=0){2b=4.m[w];h=2b.h||2b.1Y}c[4.B,h]},5X:7(4){d h=[];G(d i=0;i<4.t;i++){d 2b=4.m[i];f(2b.87)h.W(2b.h||2b.1Y)}c[4.B,h]}};d $F=D.k.1x;1e.3D=7(){};1e.3D.v={1I:7(4,1J,1a){6.1J=1J;6.4=$(4);6.1a=1a;6.2K=6.1x();6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}}};D.k.3C=1b.17();D.k.3C.v=q.u(z 1e.3D(),{1x:7(){c D.k.1x(6.4)}});D.3C=1b.17();D.3C.v=q.u(z 1e.3D(),{1x:7(){c D.3a(6.4)}});1e.2c=7(){};1e.2c.v={1I:7(4,1a){6.4=$(4);6.1a=1a;6.2K=6.1x();f(6.4.1h.2w()==\'Q\')6.67();1D 6.2A(6.4)},4K:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}},67:7(){d 12=D.2L(6.4);G(d i=0;i<12.t;i++)6.2A(12[i])},2A:7(4){f(4.2g){6c(4.2g.2w()){1r\'6g\':1r\'6i\':1o.3B(4,\'8j\',6.4K.1d(6));1y;1r\'6l\':1r\'1Y\':1r\'3J\':1r\'1k-6n\':1r\'1k-8t\':1o.3B(4,\'8u\',6.4K.1d(6));1y}}}};D.k.2c=1b.17();D.k.2c.v=q.u(z 1e.2c(),{1x:7(){c D.k.1x(6.4)}});D.2c=1b.17();D.2c.v=q.u(z 1e.2c(),{1x:7(){c D.3a(6.4)}});f(!1W.1o){d 1o=z q()}q.u(1o,{8C:8,8F:9,8H:13,8I:27,8J:37,8L:38,8O:39,8T:40,8X:46,4:7(C){c C.Z||C.91},95:7(C){c(((C.6X)&&(C.6X==1))||((C.6Z)&&(C.6Z==1)))},9b:7(C){c C.9e||(C.9f+(J.3R.2G||J.1c.2G))},9g:7(C){c C.9j||(C.9k+(J.3R.2O||J.1c.2O))},7b:7(C){f(C.7d){C.7d();C.9r()}1D{C.48=Y;C.9w=11}},9A:7(C,1h){d 4=1o.4(C);1H(4.1X&&(!4.1h||(4.1h.3Y()!=1h.3Y())))4=4.1X;c 4},1T:Y,5u:7(4,B,1V,1u){f(!6.1T)6.1T=[];f(4.5f){6.1T.W([4,B,1V,1u]);4.5f(B,1V,1u)}1D f(4.4i){6.1T.W([4,B,1V,1u]);4.4i(\'2I\'+B,1V)}},66:7(){f(!1o.1T)c;G(d i=0;i<1o.1T.t;i++){1o.5N.2n(6,1o.1T[i]);1o.1T[i][0]=1L}1o.1T=Y},3B:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4i))B=\'5K\';6.5u(4,B,1V,1u)},5N:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4k))B=\'5K\';f(4.5x){4.5x(B,1V,1u)}1D f(4.4k){1j{4.4k(\'2I\'+B,1V)}1s(e){}}}});f(33.4u.I(/\\88\\b/))1o.3B(1W,\'8a\',1o.66,Y);d 2d={6o:Y,4P:7(){6.6z=1W.8e||J.3R.2G||J.1c.2G||0;6.6F=1W.8g||J.3R.2O||J.1c.2O||0},6u:7(4){d 19=0,15=0;2q{19+=4.2O||0;15+=4.2G||0;4=4.1X}1H(4);c[15,19]},35:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q}1H(4);c[15,19]},68:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q;f(4){p=k.1R(4,\'14\');f(p==\'3T\'||p==\'2o\')1y}}1H(4);c[15,19]},1Q:7(4){f(4.1Q)c 4.1Q;f(4==J.1c)c 4;1H((4=4.1X)&&4!=J.1c)f(k.1R(4,\'14\')!=\'4G\')c 4;c J.1c},8o:7(4,x,y){f(6.6o)c 6.6r(4,x,y);6.3g=x;6.34=y;6.1t=6.35(4);c(y>=6.1t[1]&&y<6.1t[1]+4.2k&&x>=6.1t[0]&&x<6.1t[0]+4.2p)},6r:7(4,x,y){d 4S=6.6u(4);6.3g=x+4S[0]-6.6z;6.34=y+4S[1]-6.6F;6.1t=6.35(4);c(6.34>=6.1t[1]&&6.34<6.1t[1]+4.2k&&6.3g>=6.1t[0]&&6.3g<6.1t[0]+4.2p)},8E:7(3Z,4){f(!3Z)c 0;f(3Z==\'8G\')c((6.1t[1]+4.2k)-6.34)/4.2k;f(3Z==\'8K\')c((6.1t[0]+4.2p)-6.3g)/4.2p},77:7(O,Z){O=$(O);Z=$(Z);Z.l.14=\'2o\';d 2P=6.35(O);Z.l.1n=2P[1]+\'1m\';Z.l.18=2P[0]+\'1m\';Z.l.21=O.2p+\'1m\';Z.l.24=O.2k+\'1m\'},4e:7(4M){d 19=0,15=0;d 4=4M;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y}1H(4=4.1Q);4=4M;2q{19-=4.2O||0;15-=4.2G||0}1H(4=4.1X);c[15,19]},77:7(O,Z){d m=q.u({5l:11,5r:11,5B:11,5q:11,29:0,2f:0},N[2]||{});O=$(O);d p=2d.4e(O);Z=$(Z);d 2J=[0,0];d 3v=1L;f(k.1R(Z,\'14\')==\'2o\'){3v=2d.1Q(Z);2J=2d.4e(3v)}f(3v==J.1c){2J[0]-=J.1c.2f;2J[1]-=J.1c.29}f(m.5l)Z.l.18=(p[0]-2J[0]+m.2f)+\'1m\';f(m.5r)Z.l.1n=(p[1]-2J[1]+m.29)+\'1m\';f(m.5B)Z.l.21=O.2p+\'1m\';f(m.5q)Z.l.24=O.2k+\'1m\'},8b:7(4){4=$(4);f(4.l.14==\'2o\')c;2d.4P();d 2P=2d.68(4);d 1n=2P[1];d 18=2P[0];d 21=4.6m;d 24=4.6p;4.6P=18-3X(4.l.18||0);4.6I=1n-3X(4.l.1n||0);4.5k=4.l.21;4.7f=4.l.24;4.l.14=\'2o\';4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.21=21+\'1m\';4.l.24=24+\'1m\'},8w:7(4){4=$(4);f(4.l.14==\'3T\')c;2d.4P();4.l.14=\'3T\';d 1n=3X(4.l.1n||0)-(4.6I||0);d 18=3X(4.l.18||0)-(4.6P||0);4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.24=4.7f;4.l.21=4.5k}};f(/3x|3w|3u/.4v(33.62)){2d.35=7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y;4=4.1Q}1H(4);c[15,19]}};',62,600,'||||element||this|function|||||return|var||if||value|||Element|style|options||iterator||Object|||length|extend|prototype|index|||new||name|event|Form|transport||for||match|document||result|Ajax|arguments|source|results|form|||Prototype|object|each|push||false|target||true|elements||position|valueL||create|left|valueT|callback|Class|body|bind|Abstract|className|Insertion|tagName|pair|try|select|url|px|top|Event|Enumerable|div|case|catch|offset|useCapture|undefined|container|getValue|break|replacement|pattern|onComplete|map|else|Array|method|property|while|initialize|frequency|range|null|include|join|key|requestHeaders|offsetParent|getStyle|parameter|observers|inspect|observer|window|parentNode|text|toArray|els|width|start|args|height|throw|request||parameters|offsetTop|methods|opt|EventObserver|Position|html|offsetLeft|type|fragments|typeof|fragment|offsetHeight|oStringList|_each|apply|absolute|offsetWidth|do|cache|decay|content|input|emptyFunction|toLowerCase|end|replace|childNodes|registerCallback|display|toString|onTimerEvent|Serializers|readyState|scrollLeft|exclusive|on|delta|lastValue|getElements|in|hash|scrollTop|offsets|stripScripts|iterable|truncation|gsub|template|initializeRange|Responders|insertContent|setTimeout|json||hidden|status|navigator|ycomp|cumulativeOffset|inject||||serialize|responders|_overflow|Methods|collect|adjacency|xcomp|innerHTML|count|split|response|responseIsSuccess|success|Template|responder|dispatchException|evalScripts|pluck|concat|Request|KHTML|parent|Safari|Konqueror|dispatch|failure|receiver|observe|Observer|TimedObserver|ScriptFragment|responseText|script|inputs|ancestor|textarea|classNames|ObjectRange|node|typeName|RegExp|camelize|none|documentElement|ClassNames|relative|right|overflow|HTMLElement|parseFloat|toUpperCase|mode||currentlyExecuting|remove|__method|Base|memo||slice|returnValue|continue|setOptions|String|classNameToRemove|_reverse|page|focus|queryComponent|Hash|attachEvent|post|detachEvent|Version|reverse|encodeURIComponent|disabled|asynchronous|eval|respondToReadyState|activeRequestCount|Complete|appVersion|test|getTransport|containers|matchingInputs|1000|header|updater|Updater|getElementsByTagName|child|responderToAdd|static|tagElements|queryComponents|defaultView|onElementEvent|css|forElement|values|visibility|prepare|mergedHash|pos|offsetcache|_madePositioned|visible|tbody|findOrStore|_nativeExtensions|createElement|digits|trues|found|prepareReplacement|before|camelizedString|insertBefore|selectNodeContents|exception|falses|criteria|classNameToAdd|params|set|destination|last|addEventListener|indexOf|inline|clear|succ|_originalWidth|setLeft|Top|ActiveXObject|scriptTag|matchOne|setHeight|setTop|without|responderToRemove|_observeAndCache|find|reset|removeEventListener|activate|findFirstElement|setRequestHeaders|setWidth|XMLHttpRequest|constructor|application|xml|onCreate|contentType|Field|onStateChange|keydown|Events|evalJSON|stopObserving|inputSelector|img|Content|evalResponse|selectOne|onreadystatechange|keypress|postBody|onException|selectMany|updateContent|setInterval|insertion|PeriodicalUpdater|userAgent|updateComplete|lastText|timer|unloadCache|registerFormCallbacks|positionedOffset|register|parentElement|children|switch|XMLHTTP|_extended|hide|checkbox|update|radio|these|outerHTML|password|clientWidth|one|includeScrollOffsets|clientHeight|nodeValue|withinIncludingScrolloffsets|Try|scrollTo|realOffset|getComputedStyle|show|currentStyle|auto|deltaX|originalPosition|originalVisibility|originalWidth|originalHeight|opera|deltaY|bottom|array|_originalTop|flatten|addMethods|lambda|Toggle|toggle|insertAdjacentHTML|_originalLeft|PeriodicalExecuter|ownerDocument|createRange|createContextualFragment|contentFromAnonymousTable|table|Before|which|matchAll|button|extractScripts|stripTags|pairString|len|collapse|appendChild|After|clone|toQueryParams|Pattern|evaluate|stop|stringValue|preventDefault|charAt|_originalHeight|substring|Bottom|pairs|Function|add|collections|javascript|detect|findAll|entries|from|first|compact|keys|merge|present|toQueryString|getInputs|Msxml2|Microsoft|unregister|disable|urlencoded|blur|300|enable|responseIsFailure|Uninitialized|Loaded|Interactive|_|get|focusFirstElement|open|send|Requested|With|Accept|overrideMimeType|Connection|close|setRequestHeader|getResponseHeader|JSON|gi|submit|Loading|Success|Failure|checked|200|selectedIndex|www|selected|bMSIE|clearTimeout|unload|absolutize|string|getElementById|pageXOffset|getElementsByClassName|pageYOffset|removeChild|replaceChild|click|getHeight|hasClassName|addClassName|removeClassName|within|cleanWhitespace|nodeType|empty|childOf|multiple|change|getPropertyValue|relativize|setStyle|getDimensions|makePositioned|undoPositioned|makeClipping|KEY_BACKSPACE|undoClipping|overlap|KEY_TAB|vertical|KEY_RETURN|KEY_ESC|KEY_LEFT|horizontal|KEY_UP|member|tr|KEY_RIGHT|0_RC_0|Number|instanceof|shift|KEY_DOWN|bindAsEventListener|call|toColorPart|KEY_DELETE|times|finally|callee|srcElement|sub|scan|truncate|isLeftClick|beforeBegin|setStartBefore|im|afterBegin|firstChild|pointerX|unescapeHTML|beforeEnd|pageX|clientX|pointerY|parseQuery|afterEnd|pageY|clientY|RangeError|setStartAfter|all|any|grep|invoke|stopPropagation|max|nextSibling|min|partition|cancelBubble|reject|sortBy|sort|findElement|zip|pop|createTextNode|escapeHTML|strip'.split('|'),0,{})
+
+} \ No newline at end of file
diff --git a/tests/benchmarks/script/sunspider/tests/string-validate-input.js b/tests/benchmarks/script/sunspider/tests/string-validate-input.js
new file mode 100644
index 0000000000..3455b3208d
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-validate-input.js
@@ -0,0 +1,89 @@
+letters = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
+numbers = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
+colors = new Array("FF","CC","99","66","33","00");
+
+var endResult;
+
+function doTest()
+{
+ endResult = "";
+
+ // make up email address
+ for (var k=0;k<4000;k++)
+ {
+ name = makeName(6);
+ (k%2)?email=name+"@mac.com":email=name+"(at)mac.com";
+
+ // validate the email address
+ var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z]{2,3}$/;
+
+ if(pattern.test(email))
+ {
+ var r = email + " appears to be a valid email address.";
+ addResult(r);
+ }
+ else
+ {
+ r = email + " does NOT appear to be a valid email address.";
+ addResult(r);
+ }
+ }
+
+ // make up ZIP codes
+ for (var s=0;s<4000;s++)
+ {
+ var zipGood = true;
+ var zip = makeNumber(4);
+ (s%2)?zip=zip+"xyz":zip=zip.concat("7");
+
+ // validate the zip code
+ for (var i = 0; i < zip.length; i++) {
+ var ch = zip.charAt(i);
+ if (ch < "0" || ch > "9") {
+ zipGood = false;
+ r = zip + " contains letters.";
+ addResult(r);
+ }
+ }
+ if (zipGood && zip.length>5)
+ {
+ zipGood = false;
+ r = zip + " is longer than five characters.";
+ addResult(r);
+ }
+ if (zipGood)
+ {
+ r = zip + " appears to be a valid ZIP code.";
+ addResult(r);
+ }
+ }
+}
+
+function makeName(n)
+{
+ var tmp = "";
+ for (var i=0;i<n;i++)
+ {
+ var l = Math.floor(26*Math.random());
+ tmp += letters[l];
+ }
+ return tmp;
+}
+
+function makeNumber(n)
+{
+ var tmp = "";
+ for (var i=0;i<n;i++)
+ {
+ var l = Math.floor(9*Math.random());
+ tmp = tmp.concat(l);
+ }
+ return tmp;
+}
+
+function addResult(r)
+{
+ endResult += "\n" + r;
+}
+
+doTest();
diff --git a/tests/benchmarks/script/sunspider/tst_sunspider.cpp b/tests/benchmarks/script/sunspider/tst_sunspider.cpp
new file mode 100644
index 0000000000..7a8617ace1
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tst_sunspider.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtCore/qdir.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtextstream.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+//TESTED_FILES=
+
+static QString readFile(const QString &filename)
+{
+ QFile file(filename);
+ if (!file.open(QFile::ReadOnly))
+ return QString();
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ return stream.readAll();
+}
+
+class tst_SunSpider : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_SunSpider();
+ virtual ~tst_SunSpider();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void benchmark_data();
+ void benchmark();
+
+private:
+ QDir testsDir;
+};
+
+tst_SunSpider::tst_SunSpider()
+{
+ testsDir = QDir(SRCDIR);
+ bool testsFound = testsDir.cd("tests");
+ if (!testsFound)
+ qWarning("*** no tests/ dir!");
+}
+
+tst_SunSpider::~tst_SunSpider()
+{
+}
+
+void tst_SunSpider::init()
+{
+}
+
+void tst_SunSpider::cleanup()
+{
+}
+
+void tst_SunSpider::benchmark_data()
+{
+ QTest::addColumn<QString>("testName");
+ QFileInfoList testFileInfos = testsDir.entryInfoList(QStringList() << "*.js", QDir::Files);
+ foreach (QFileInfo tfi, testFileInfos) {
+ QString name = tfi.baseName();
+ QTest::newRow(name.toLatin1().constData()) << name;
+ }
+}
+
+void tst_SunSpider::benchmark()
+{
+ QFETCH(QString, testName);
+ QString testContents = readFile(testsDir.absoluteFilePath(testName + ".js"));
+ QVERIFY(!testContents.isEmpty());
+
+ QScriptEngine engine;
+ QBENCHMARK {
+ engine.evaluate(testContents);
+ }
+ QVERIFY(!engine.hasUncaughtException());
+}
+
+QTEST_MAIN(tst_SunSpider)
+#include "tst_sunspider.moc"
diff --git a/tests/benchmarks/script/v8/tests/README.txt b/tests/benchmarks/script/v8/tests/README.txt
new file mode 100644
index 0000000000..6676f37556
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/README.txt
@@ -0,0 +1,79 @@
+V8 Benchmark Suite
+==================
+
+This is the V8 benchmark suite: A collection of pure JavaScript
+benchmarks that we have used to tune V8. The licenses for the
+individual benchmarks are included in the JavaScript files.
+
+In addition to the benchmarks, the suite consists of the benchmark
+framework (base.js), which must be loaded before any of the individual
+benchmark files, and two benchmark runners: An HTML version (run.html)
+and a standalone JavaScript version (run.js).
+
+
+Changes From Version 1 To Version 2
+===================================
+
+For version 2 the crypto benchmark was fixed. Previously, the
+decryption stage was given plaintext as input, which resulted in an
+error. Now, the decryption stage is given the output of the
+encryption stage as input. The result is checked against the original
+plaintext. For this to give the correct results the crypto objects
+are reset for each iteration of the benchmark. In addition, the size
+of the plain text has been increased a little and the use of
+Math.random() and new Date() to build an RNG pool has been removed.
+
+Other benchmarks were fixed to do elementary verification of the
+results of their calculations. This is to avoid accidentally
+obtaining scores that are the result of an incorrect JavaScript engine
+optimization.
+
+
+Changes From Version 2 To Version 3
+===================================
+
+Version 3 adds a new benchmark, RegExp. The RegExp benchmark is
+generated by loading 50 of the most popular pages on the web and
+logging all regexp operations performed. Each operation is given a
+weight that is calculated from an estimate of the popularity of the
+pages where it occurs and the number of times it is executed while
+loading each page. Finally the literal letters in the data are
+encoded using ROT13 in a way that does not affect how the regexps
+match their input.
+
+
+Changes from Version 3 to Version 4
+===================================
+
+The Splay benchmark is a newcomer in version 4. It manipulates a
+splay tree by adding and removing data nodes, thus exercising the
+memory management subsystem of the JavaScript engine.
+
+Furthermore, all the unused parts of the Prototype library were
+removed from the RayTrace benchmark. This does not affect the running
+of the benchmark.
+
+
+Changes from Version 4 to Version 5
+===================================
+
+Removed duplicate line in random seed code, and changed the name of
+the Object.prototype.inherits function in the DeltaBlue benchmark to
+inheritsFrom to avoid name clashes when running in Chromium with
+extensions enabled.
+
+
+Changes from Version 5 to Version 6
+===================================
+
+Removed dead code from the RayTrace benchmark and fixed a couple of
+typos in the DeltaBlue implementation. Changed the Splay benchmark to
+avoid converting the same numeric key to a string over and over again
+and to avoid inserting and removing the same element repeatedly thus
+increasing pressure on the memory subsystem. Changed the RegExp
+benchmark to exercise the regular expression engine on different
+input strings.
+
+Furthermore, the benchmark runner was changed to run the benchmarks
+for at least a few times to stabilize the reported numbers on slower
+machines.
diff --git a/tests/benchmarks/script/v8/tests/base.js b/tests/benchmarks/script/v8/tests/base.js
new file mode 100644
index 0000000000..ffabf24dda
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/base.js
@@ -0,0 +1,284 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Simple framework for running the benchmark suites and
+// computing a score based on the timing measurements.
+
+
+// A benchmark has a name (string) and a function that will be run to
+// do the performance measurement. The optional setup and tearDown
+// arguments are functions that will be invoked before and after
+// running the benchmark, but the running time of these functions will
+// not be accounted for in the benchmark score.
+function Benchmark(name, run, setup, tearDown) {
+ this.name = name;
+ this.run = run;
+ this.Setup = setup ? setup : function() { };
+ this.TearDown = tearDown ? tearDown : function() { };
+}
+
+
+// Benchmark results hold the benchmark and the measured time used to
+// run the benchmark. The benchmark score is computed later once a
+// full benchmark suite has run to completion.
+function BenchmarkResult(benchmark, time) {
+ this.benchmark = benchmark;
+ this.time = time;
+}
+
+
+// Automatically convert results to numbers. Used by the geometric
+// mean computation.
+BenchmarkResult.prototype.valueOf = function() {
+ return this.time;
+}
+
+
+// Suites of benchmarks consist of a name and the set of benchmarks in
+// addition to the reference timing that the final score will be based
+// on. This way, all scores are relative to a reference run and higher
+// scores implies better performance.
+function BenchmarkSuite(name, reference, benchmarks) {
+ this.name = name;
+ this.reference = reference;
+ this.benchmarks = benchmarks;
+ BenchmarkSuite.suites.push(this);
+}
+
+
+// Keep track of all declared benchmark suites.
+BenchmarkSuite.suites = [];
+
+
+// Scores are not comparable across versions. Bump the version if
+// you're making changes that will affect that scores, e.g. if you add
+// a new benchmark or change an existing one.
+BenchmarkSuite.version = '6';
+
+
+// To make the benchmark results predictable, we replace Math.random
+// with a 100% deterministic alternative.
+Math.random = (function() {
+ var seed = 49734321;
+ return function() {
+ // Robert Jenkins' 32 bit integer hash function.
+ seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;
+ seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
+ seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
+ seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;
+ seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
+ return (seed & 0xfffffff) / 0x10000000;
+ };
+})();
+
+
+// Runs all registered benchmark suites and optionally yields between
+// each individual benchmark to avoid running for too long in the
+// context of browsers. Once done, the final score is reported to the
+// runner.
+BenchmarkSuite.RunSuites = function(runner) {
+ var continuation = null;
+ var suites = BenchmarkSuite.suites;
+ var length = suites.length;
+ BenchmarkSuite.scores = [];
+ var index = 0;
+ function RunStep() {
+ while (continuation || index < length) {
+ if (continuation) {
+ continuation = continuation();
+ } else {
+ var suite = suites[index++];
+ if (runner.NotifyStart) runner.NotifyStart(suite.name);
+ continuation = suite.RunStep(runner);
+ }
+ if (continuation && typeof window != 'undefined' && window.setTimeout) {
+ window.setTimeout(RunStep, 25);
+ return;
+ }
+ }
+ if (runner.NotifyScore) {
+ var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);
+ var formatted = BenchmarkSuite.FormatScore(100 * score);
+ runner.NotifyScore(formatted);
+ }
+ }
+ RunStep();
+}
+
+
+// Counts the total number of registered benchmarks. Useful for
+// showing progress as a percentage.
+BenchmarkSuite.CountBenchmarks = function() {
+ var result = 0;
+ var suites = BenchmarkSuite.suites;
+ for (var i = 0; i < suites.length; i++) {
+ result += suites[i].benchmarks.length;
+ }
+ return result;
+}
+
+
+// Computes the geometric mean of a set of numbers.
+BenchmarkSuite.GeometricMean = function(numbers) {
+ var log = 0;
+ for (var i = 0; i < numbers.length; i++) {
+ log += Math.log(numbers[i]);
+ }
+ return Math.pow(Math.E, log / numbers.length);
+}
+
+
+// Converts a score value to a string with at least three significant
+// digits.
+BenchmarkSuite.FormatScore = function(value) {
+ if (value > 100) {
+ return value.toFixed(0);
+ } else {
+ return value.toPrecision(3);
+ }
+}
+
+// Notifies the runner that we're done running a single benchmark in
+// the benchmark suite. This can be useful to report progress.
+BenchmarkSuite.prototype.NotifyStep = function(result) {
+ this.results.push(result);
+ if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name);
+}
+
+
+// Notifies the runner that we're done with running a suite and that
+// we have a result which can be reported to the user if needed.
+BenchmarkSuite.prototype.NotifyResult = function() {
+ var mean = BenchmarkSuite.GeometricMean(this.results);
+ var score = this.reference / mean;
+ BenchmarkSuite.scores.push(score);
+ if (this.runner.NotifyResult) {
+ var formatted = BenchmarkSuite.FormatScore(100 * score);
+ this.runner.NotifyResult(this.name, formatted);
+ }
+}
+
+
+// Notifies the runner that running a benchmark resulted in an error.
+BenchmarkSuite.prototype.NotifyError = function(error) {
+ if (this.runner.NotifyError) {
+ this.runner.NotifyError(this.name, error);
+ }
+ if (this.runner.NotifyStep) {
+ this.runner.NotifyStep(this.name);
+ }
+}
+
+
+// Runs a single benchmark for at least a second and computes the
+// average time it takes to run a single iteration.
+BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) {
+ function Measure(data) {
+ var elapsed = 0;
+ var start = new Date();
+ for (var n = 0; elapsed < 1000; n++) {
+ benchmark.run();
+ elapsed = new Date() - start;
+ }
+ if (data != null) {
+ data.runs += n;
+ data.elapsed += elapsed;
+ }
+ }
+
+ if (data == null) {
+ // Measure the benchmark once for warm up and throw the result
+ // away. Return a fresh data object.
+ Measure(null);
+ return { runs: 0, elapsed: 0 };
+ } else {
+ Measure(data);
+ // If we've run too few iterations, we continue for another second.
+ if (data.runs < 32) return data;
+ var usec = (data.elapsed * 1000) / data.runs;
+ this.NotifyStep(new BenchmarkResult(benchmark, usec));
+ return null;
+ }
+}
+
+
+// This function starts running a suite, but stops between each
+// individual benchmark in the suite and returns a continuation
+// function which can be invoked to run the next benchmark. Once the
+// last benchmark has been executed, null is returned.
+BenchmarkSuite.prototype.RunStep = function(runner) {
+ this.results = [];
+ this.runner = runner;
+ var length = this.benchmarks.length;
+ var index = 0;
+ var suite = this;
+ var data;
+
+ // Run the setup, the actual benchmark, and the tear down in three
+ // separate steps to allow the framework to yield between any of the
+ // steps.
+
+ function RunNextSetup() {
+ if (index < length) {
+ try {
+ suite.benchmarks[index].Setup();
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ return RunNextBenchmark;
+ }
+ suite.NotifyResult();
+ return null;
+ }
+
+ function RunNextBenchmark() {
+ try {
+ data = suite.RunSingleBenchmark(suite.benchmarks[index], data);
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ // If data is null, we're done with this benchmark.
+ return (data == null) ? RunNextTearDown : RunNextBenchmark();
+ }
+
+ function RunNextTearDown() {
+ try {
+ suite.benchmarks[index++].TearDown();
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ return RunNextSetup;
+ }
+
+ // Start out running the setup.
+ return RunNextSetup();
+}
diff --git a/tests/benchmarks/script/v8/tests/crypto.js b/tests/benchmarks/script/v8/tests/crypto.js
new file mode 100644
index 0000000000..ffa69b53bb
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/crypto.js
@@ -0,0 +1,1698 @@
+/*
+ * Copyright (c) 2003-2005 Tom Wu
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
+ * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * In addition, the following condition applies:
+ *
+ * All redistributions must retain an intact copy of this copyright notice
+ * and disclaimer.
+ */
+
+
+// The code has been adapted for use as a benchmark by Google.
+var Crypto = new BenchmarkSuite('Crypto', 266181, [
+ new Benchmark("Encrypt", encrypt),
+ new Benchmark("Decrypt", decrypt)
+]);
+
+
+// Basic JavaScript BN library - subset useful for RSA encryption.
+
+// Bits per digit
+var dbits;
+var BI_DB;
+var BI_DM;
+var BI_DV;
+
+var BI_FP;
+var BI_FV;
+var BI_F1;
+var BI_F2;
+
+// JavaScript engine analysis
+var canary = 0xdeadbeefcafe;
+var j_lm = ((canary&0xffffff)==0xefcafe);
+
+// (public) Constructor
+function BigInteger(a,b,c) {
+ this.array = new Array();
+ if(a != null)
+ if("number" == typeof a) this.fromNumber(a,b,c);
+ else if(b == null && "string" != typeof a) this.fromString(a,256);
+ else this.fromString(a,b);
+}
+
+// return new, unset BigInteger
+function nbi() { return new BigInteger(null); }
+
+// am: Compute w_j += (x*this_i), propagate carries,
+// c is initial carry, returns final carry.
+// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
+// We need to select the fastest one that works in this environment.
+
+// am1: use a single mult and divide to get the high bits,
+// max digit bits should be 26 because
+// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
+function am1(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+ while(--n >= 0) {
+ var v = x*this_array[i++]+w_array[j]+c;
+ c = Math.floor(v/0x4000000);
+ w_array[j++] = v&0x3ffffff;
+ }
+ return c;
+}
+
+// am2 avoids a big mult-and-extract completely.
+// Max digit bits should be <= 30 because we do bitwise ops
+// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
+function am2(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+ var xl = x&0x7fff, xh = x>>15;
+ while(--n >= 0) {
+ var l = this_array[i]&0x7fff;
+ var h = this_array[i++]>>15;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff);
+ c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
+ w_array[j++] = l&0x3fffffff;
+ }
+ return c;
+}
+
+// Alternately, set max digit bits to 28 since some
+// browsers slow down when dealing with 32-bit numbers.
+function am3(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+
+ var xl = x&0x3fff, xh = x>>14;
+ while(--n >= 0) {
+ var l = this_array[i]&0x3fff;
+ var h = this_array[i++]>>14;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;
+ c = (l>>28)+(m>>14)+xh*h;
+ w_array[j++] = l&0xfffffff;
+ }
+ return c;
+}
+
+// This is tailored to VMs with 2-bit tagging. It makes sure
+// that all the computations stay within the 29 bits available.
+function am4(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+
+ var xl = x&0x1fff, xh = x>>13;
+ while(--n >= 0) {
+ var l = this_array[i]&0x1fff;
+ var h = this_array[i++]>>13;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x1fff)<<13)+w_array[j]+c;
+ c = (l>>26)+(m>>13)+xh*h;
+ w_array[j++] = l&0x3ffffff;
+ }
+ return c;
+}
+
+// am3/28 is best for SM, Rhino, but am4/26 is best for v8.
+// Kestrel (Opera 9.5) gets its best result with am4/26.
+// IE7 does 9% better with am3/28 than with am4/26.
+// Firefox (SM) gets 10% faster with am3/28 than with am4/26.
+
+setupEngine = function(fn, bits) {
+ BigInteger.prototype.am = fn;
+ dbits = bits;
+
+ BI_DB = dbits;
+ BI_DM = ((1<<dbits)-1);
+ BI_DV = (1<<dbits);
+
+ BI_FP = 52;
+ BI_FV = Math.pow(2,BI_FP);
+ BI_F1 = BI_FP-dbits;
+ BI_F2 = 2*dbits-BI_FP;
+}
+
+
+// Digit conversions
+var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
+var BI_RC = new Array();
+var rr,vv;
+rr = "0".charCodeAt(0);
+for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
+rr = "a".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+rr = "A".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+
+function int2char(n) { return BI_RM.charAt(n); }
+function intAt(s,i) {
+ var c = BI_RC[s.charCodeAt(i)];
+ return (c==null)?-1:c;
+}
+
+// (protected) copy this to r
+function bnpCopyTo(r) {
+ var this_array = this.array;
+ var r_array = r.array;
+
+ for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];
+ r.t = this.t;
+ r.s = this.s;
+}
+
+// (protected) set from integer value x, -DV <= x < DV
+function bnpFromInt(x) {
+ var this_array = this.array;
+ this.t = 1;
+ this.s = (x<0)?-1:0;
+ if(x > 0) this_array[0] = x;
+ else if(x < -1) this_array[0] = x+DV;
+ else this.t = 0;
+}
+
+// return bigint initialized to value
+function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
+
+// (protected) set from string and radix
+function bnpFromString(s,b) {
+ var this_array = this.array;
+ var k;
+ if(b == 16) k = 4;
+ else if(b == 8) k = 3;
+ else if(b == 256) k = 8; // byte array
+ else if(b == 2) k = 1;
+ else if(b == 32) k = 5;
+ else if(b == 4) k = 2;
+ else { this.fromRadix(s,b); return; }
+ this.t = 0;
+ this.s = 0;
+ var i = s.length, mi = false, sh = 0;
+ while(--i >= 0) {
+ var x = (k==8)?s[i]&0xff:intAt(s,i);
+ if(x < 0) {
+ if(s.charAt(i) == "-") mi = true;
+ continue;
+ }
+ mi = false;
+ if(sh == 0)
+ this_array[this.t++] = x;
+ else if(sh+k > BI_DB) {
+ this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<<sh;
+ this_array[this.t++] = (x>>(BI_DB-sh));
+ }
+ else
+ this_array[this.t-1] |= x<<sh;
+ sh += k;
+ if(sh >= BI_DB) sh -= BI_DB;
+ }
+ if(k == 8 && (s[0]&0x80) != 0) {
+ this.s = -1;
+ if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)<<sh;
+ }
+ this.clamp();
+ if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) clamp off excess high words
+function bnpClamp() {
+ var this_array = this.array;
+ var c = this.s&BI_DM;
+ while(this.t > 0 && this_array[this.t-1] == c) --this.t;
+}
+
+// (public) return string representation in given radix
+function bnToString(b) {
+ var this_array = this.array;
+ if(this.s < 0) return "-"+this.negate().toString(b);
+ var k;
+ if(b == 16) k = 4;
+ else if(b == 8) k = 3;
+ else if(b == 2) k = 1;
+ else if(b == 32) k = 5;
+ else if(b == 4) k = 2;
+ else return this.toRadix(b);
+ var km = (1<<k)-1, d, m = false, r = "", i = this.t;
+ var p = BI_DB-(i*BI_DB)%k;
+ if(i-- > 0) {
+ if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); }
+ while(i >= 0) {
+ if(p < k) {
+ d = (this_array[i]&((1<<p)-1))<<(k-p);
+ d |= this_array[--i]>>(p+=BI_DB-k);
+ }
+ else {
+ d = (this_array[i]>>(p-=k))&km;
+ if(p <= 0) { p += BI_DB; --i; }
+ }
+ if(d > 0) m = true;
+ if(m) r += int2char(d);
+ }
+ }
+ return m?r:"0";
+}
+
+// (public) -this
+function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
+
+// (public) |this|
+function bnAbs() { return (this.s<0)?this.negate():this; }
+
+// (public) return + if this > a, - if this < a, 0 if equal
+function bnCompareTo(a) {
+ var this_array = this.array;
+ var a_array = a.array;
+
+ var r = this.s-a.s;
+ if(r != 0) return r;
+ var i = this.t;
+ r = i-a.t;
+ if(r != 0) return r;
+ while(--i >= 0) if((r=this_array[i]-a_array[i]) != 0) return r;
+ return 0;
+}
+
+// returns bit length of the integer x
+function nbits(x) {
+ var r = 1, t;
+ if((t=x>>>16) != 0) { x = t; r += 16; }
+ if((t=x>>8) != 0) { x = t; r += 8; }
+ if((t=x>>4) != 0) { x = t; r += 4; }
+ if((t=x>>2) != 0) { x = t; r += 2; }
+ if((t=x>>1) != 0) { x = t; r += 1; }
+ return r;
+}
+
+// (public) return the number of bits in "this"
+function bnBitLength() {
+ var this_array = this.array;
+ if(this.t <= 0) return 0;
+ return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM));
+}
+
+// (protected) r = this << n*DB
+function bnpDLShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var i;
+ for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i];
+ for(i = n-1; i >= 0; --i) r_array[i] = 0;
+ r.t = this.t+n;
+ r.s = this.s;
+}
+
+// (protected) r = this >> n*DB
+function bnpDRShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i];
+ r.t = Math.max(this.t-n,0);
+ r.s = this.s;
+}
+
+// (protected) r = this << n
+function bnpLShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var bs = n%BI_DB;
+ var cbs = BI_DB-bs;
+ var bm = (1<<cbs)-1;
+ var ds = Math.floor(n/BI_DB), c = (this.s<<bs)&BI_DM, i;
+ for(i = this.t-1; i >= 0; --i) {
+ r_array[i+ds+1] = (this_array[i]>>cbs)|c;
+ c = (this_array[i]&bm)<<bs;
+ }
+ for(i = ds-1; i >= 0; --i) r_array[i] = 0;
+ r_array[ds] = c;
+ r.t = this.t+ds+1;
+ r.s = this.s;
+ r.clamp();
+}
+
+// (protected) r = this >> n
+function bnpRShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ r.s = this.s;
+ var ds = Math.floor(n/BI_DB);
+ if(ds >= this.t) { r.t = 0; return; }
+ var bs = n%BI_DB;
+ var cbs = BI_DB-bs;
+ var bm = (1<<bs)-1;
+ r_array[0] = this_array[ds]>>bs;
+ for(var i = ds+1; i < this.t; ++i) {
+ r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
+ r_array[i-ds] = this_array[i]>>bs;
+ }
+ if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
+ r.t = this.t-ds;
+ r.clamp();
+}
+
+// (protected) r = this - a
+function bnpSubTo(a,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var a_array = a.array;
+ var i = 0, c = 0, m = Math.min(a.t,this.t);
+ while(i < m) {
+ c += this_array[i]-a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ if(a.t < this.t) {
+ c -= a.s;
+ while(i < this.t) {
+ c += this_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += this.s;
+ }
+ else {
+ c += this.s;
+ while(i < a.t) {
+ c -= a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c -= a.s;
+ }
+ r.s = (c<0)?-1:0;
+ if(c < -1) r_array[i++] = BI_DV+c;
+ else if(c > 0) r_array[i++] = c;
+ r.t = i;
+ r.clamp();
+}
+
+// (protected) r = this * a, r != this,a (HAC 14.12)
+// "this" should be the larger one if appropriate.
+function bnpMultiplyTo(a,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var x = this.abs(), y = a.abs();
+ var y_array = y.array;
+
+ var i = x.t;
+ r.t = i+y.t;
+ while(--i >= 0) r_array[i] = 0;
+ for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[i],r,i,0,x.t);
+ r.s = 0;
+ r.clamp();
+ if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
+}
+
+// (protected) r = this^2, r != this (HAC 14.16)
+function bnpSquareTo(r) {
+ var x = this.abs();
+ var x_array = x.array;
+ var r_array = r.array;
+
+ var i = r.t = 2*x.t;
+ while(--i >= 0) r_array[i] = 0;
+ for(i = 0; i < x.t-1; ++i) {
+ var c = x.am(i,x_array[i],r,2*i,0,1);
+ if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) {
+ r_array[i+x.t] -= BI_DV;
+ r_array[i+x.t+1] = 1;
+ }
+ }
+ if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[i],r,2*i,0,1);
+ r.s = 0;
+ r.clamp();
+}
+
+// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
+// r != q, this != m. q or r may be null.
+function bnpDivRemTo(m,q,r) {
+ var pm = m.abs();
+ if(pm.t <= 0) return;
+ var pt = this.abs();
+ if(pt.t < pm.t) {
+ if(q != null) q.fromInt(0);
+ if(r != null) this.copyTo(r);
+ return;
+ }
+ if(r == null) r = nbi();
+ var y = nbi(), ts = this.s, ms = m.s;
+ var pm_array = pm.array;
+ var nsh = BI_DB-nbits(pm_array[pm.t-1]); // normalize modulus
+ if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
+ else { pm.copyTo(y); pt.copyTo(r); }
+ var ys = y.t;
+
+ var y_array = y.array;
+ var y0 = y_array[ys-1];
+ if(y0 == 0) return;
+ var yt = y0*(1<<BI_F1)+((ys>1)?y_array[ys-2]>>BI_F2:0);
+ var d1 = BI_FV/yt, d2 = (1<<BI_F1)/yt, e = 1<<BI_F2;
+ var i = r.t, j = i-ys, t = (q==null)?nbi():q;
+ y.dlShiftTo(j,t);
+
+ var r_array = r.array;
+ if(r.compareTo(t) >= 0) {
+ r_array[r.t++] = 1;
+ r.subTo(t,r);
+ }
+ BigInteger.ONE.dlShiftTo(ys,t);
+ t.subTo(y,y); // "negative" y so we can replace sub with am later
+ while(y.t < ys) y_array[y.t++] = 0;
+ while(--j >= 0) {
+ // Estimate quotient digit
+ var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2);
+ if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
+ y.dlShiftTo(j,t);
+ r.subTo(t,r);
+ while(r_array[i] < --qd) r.subTo(t,r);
+ }
+ }
+ if(q != null) {
+ r.drShiftTo(ys,q);
+ if(ts != ms) BigInteger.ZERO.subTo(q,q);
+ }
+ r.t = ys;
+ r.clamp();
+ if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
+ if(ts < 0) BigInteger.ZERO.subTo(r,r);
+}
+
+// (public) this mod a
+function bnMod(a) {
+ var r = nbi();
+ this.abs().divRemTo(a,null,r);
+ if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
+ return r;
+}
+
+// Modular reduction using "classic" algorithm
+function Classic(m) { this.m = m; }
+function cConvert(x) {
+ if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
+ else return x;
+}
+function cRevert(x) { return x; }
+function cReduce(x) { x.divRemTo(this.m,null,x); }
+function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+Classic.prototype.convert = cConvert;
+Classic.prototype.revert = cRevert;
+Classic.prototype.reduce = cReduce;
+Classic.prototype.mulTo = cMulTo;
+Classic.prototype.sqrTo = cSqrTo;
+
+// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
+// justification:
+// xy == 1 (mod m)
+// xy = 1+km
+// xy(2-xy) = (1+km)(1-km)
+// x[y(2-xy)] = 1-k^2m^2
+// x[y(2-xy)] == 1 (mod m^2)
+// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
+// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
+// JS multiply "overflows" differently from C/C++, so care is needed here.
+function bnpInvDigit() {
+ var this_array = this.array;
+ if(this.t < 1) return 0;
+ var x = this_array[0];
+ if((x&1) == 0) return 0;
+ var y = x&3; // y == 1/x mod 2^2
+ y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
+ y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
+ y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
+ // last step - calculate inverse mod DV directly;
+ // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
+ y = (y*(2-x*y%BI_DV))%BI_DV; // y == 1/x mod 2^dbits
+ // we really want the negative inverse, and -DV < y < DV
+ return (y>0)?BI_DV-y:-y;
+}
+
+// Montgomery reduction
+function Montgomery(m) {
+ this.m = m;
+ this.mp = m.invDigit();
+ this.mpl = this.mp&0x7fff;
+ this.mph = this.mp>>15;
+ this.um = (1<<(BI_DB-15))-1;
+ this.mt2 = 2*m.t;
+}
+
+// xR mod m
+function montConvert(x) {
+ var r = nbi();
+ x.abs().dlShiftTo(this.m.t,r);
+ r.divRemTo(this.m,null,r);
+ if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
+ return r;
+}
+
+// x/R mod m
+function montRevert(x) {
+ var r = nbi();
+ x.copyTo(r);
+ this.reduce(r);
+ return r;
+}
+
+// x = x/R mod m (HAC 14.32)
+function montReduce(x) {
+ var x_array = x.array;
+ while(x.t <= this.mt2) // pad x so am has enough room later
+ x_array[x.t++] = 0;
+ for(var i = 0; i < this.m.t; ++i) {
+ // faster way of calculating u0 = x[i]*mp mod DV
+ var j = x_array[i]&0x7fff;
+ var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM;
+ // use am to combine the multiply-shift-add into one call
+ j = i+this.m.t;
+ x_array[j] += this.m.am(0,u0,x,i,0,this.m.t);
+ // propagate carry
+ while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++j]++; }
+ }
+ x.clamp();
+ x.drShiftTo(this.m.t,x);
+ if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = "x^2/R mod m"; x != r
+function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = "xy/R mod m"; x,y != r
+function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Montgomery.prototype.convert = montConvert;
+Montgomery.prototype.revert = montRevert;
+Montgomery.prototype.reduce = montReduce;
+Montgomery.prototype.mulTo = montMulTo;
+Montgomery.prototype.sqrTo = montSqrTo;
+
+// (protected) true iff this is even
+function bnpIsEven() {
+ var this_array = this.array;
+ return ((this.t>0)?(this_array[0]&1):this.s) == 0;
+}
+
+// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
+function bnpExp(e,z) {
+ if(e > 0xffffffff || e < 1) return BigInteger.ONE;
+ var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
+ g.copyTo(r);
+ while(--i >= 0) {
+ z.sqrTo(r,r2);
+ if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
+ else { var t = r; r = r2; r2 = t; }
+ }
+ return z.revert(r);
+}
+
+// (public) this^e % m, 0 <= e < 2^32
+function bnModPowInt(e,m) {
+ var z;
+ if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
+ return this.exp(e,z);
+}
+
+// protected
+BigInteger.prototype.copyTo = bnpCopyTo;
+BigInteger.prototype.fromInt = bnpFromInt;
+BigInteger.prototype.fromString = bnpFromString;
+BigInteger.prototype.clamp = bnpClamp;
+BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
+BigInteger.prototype.drShiftTo = bnpDRShiftTo;
+BigInteger.prototype.lShiftTo = bnpLShiftTo;
+BigInteger.prototype.rShiftTo = bnpRShiftTo;
+BigInteger.prototype.subTo = bnpSubTo;
+BigInteger.prototype.multiplyTo = bnpMultiplyTo;
+BigInteger.prototype.squareTo = bnpSquareTo;
+BigInteger.prototype.divRemTo = bnpDivRemTo;
+BigInteger.prototype.invDigit = bnpInvDigit;
+BigInteger.prototype.isEven = bnpIsEven;
+BigInteger.prototype.exp = bnpExp;
+
+// public
+BigInteger.prototype.toString = bnToString;
+BigInteger.prototype.negate = bnNegate;
+BigInteger.prototype.abs = bnAbs;
+BigInteger.prototype.compareTo = bnCompareTo;
+BigInteger.prototype.bitLength = bnBitLength;
+BigInteger.prototype.mod = bnMod;
+BigInteger.prototype.modPowInt = bnModPowInt;
+
+// "constants"
+BigInteger.ZERO = nbv(0);
+BigInteger.ONE = nbv(1);
+// Copyright (c) 2005 Tom Wu
+// All Rights Reserved.
+// See "LICENSE" for details.
+
+// Extended JavaScript BN functions, required for RSA private ops.
+
+// (public)
+function bnClone() { var r = nbi(); this.copyTo(r); return r; }
+
+// (public) return value as integer
+function bnIntValue() {
+ var this_array = this.array;
+ if(this.s < 0) {
+ if(this.t == 1) return this_array[0]-BI_DV;
+ else if(this.t == 0) return -1;
+ }
+ else if(this.t == 1) return this_array[0];
+ else if(this.t == 0) return 0;
+ // assumes 16 < DB < 32
+ return ((this_array[1]&((1<<(32-BI_DB))-1))<<BI_DB)|this_array[0];
+}
+
+// (public) return value as byte
+function bnByteValue() {
+ var this_array = this.array;
+ return (this.t==0)?this.s:(this_array[0]<<24)>>24;
+}
+
+// (public) return value as short (assumes DB>=16)
+function bnShortValue() {
+ var this_array = this.array;
+ return (this.t==0)?this.s:(this_array[0]<<16)>>16;
+}
+
+// (protected) return x s.t. r^x < DV
+function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); }
+
+// (public) 0 if this == 0, 1 if this > 0
+function bnSigNum() {
+ var this_array = this.array;
+ if(this.s < 0) return -1;
+ else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0;
+ else return 1;
+}
+
+// (protected) convert to radix string
+function bnpToRadix(b) {
+ if(b == null) b = 10;
+ if(this.signum() == 0 || b < 2 || b > 36) return "0";
+ var cs = this.chunkSize(b);
+ var a = Math.pow(b,cs);
+ var d = nbv(a), y = nbi(), z = nbi(), r = "";
+ this.divRemTo(d,y,z);
+ while(y.signum() > 0) {
+ r = (a+z.intValue()).toString(b).substr(1) + r;
+ y.divRemTo(d,y,z);
+ }
+ return z.intValue().toString(b) + r;
+}
+
+// (protected) convert from radix string
+function bnpFromRadix(s,b) {
+ this.fromInt(0);
+ if(b == null) b = 10;
+ var cs = this.chunkSize(b);
+ var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
+ for(var i = 0; i < s.length; ++i) {
+ var x = intAt(s,i);
+ if(x < 0) {
+ if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
+ continue;
+ }
+ w = b*w+x;
+ if(++j >= cs) {
+ this.dMultiply(d);
+ this.dAddOffset(w,0);
+ j = 0;
+ w = 0;
+ }
+ }
+ if(j > 0) {
+ this.dMultiply(Math.pow(b,j));
+ this.dAddOffset(w,0);
+ }
+ if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) alternate constructor
+function bnpFromNumber(a,b,c) {
+ if("number" == typeof b) {
+ // new BigInteger(int,int,RNG)
+ if(a < 2) this.fromInt(1);
+ else {
+ this.fromNumber(a,c);
+ if(!this.testBit(a-1)) // force MSB set
+ this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
+ if(this.isEven()) this.dAddOffset(1,0); // force odd
+ while(!this.isProbablePrime(b)) {
+ this.dAddOffset(2,0);
+ if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
+ }
+ }
+ }
+ else {
+ // new BigInteger(int,RNG)
+ var x = new Array(), t = a&7;
+ x.length = (a>>3)+1;
+ b.nextBytes(x);
+ if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
+ this.fromString(x,256);
+ }
+}
+
+// (public) convert to bigendian byte array
+function bnToByteArray() {
+ var this_array = this.array;
+ var i = this.t, r = new Array();
+ r[0] = this.s;
+ var p = BI_DB-(i*BI_DB)%8, d, k = 0;
+ if(i-- > 0) {
+ if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p)
+ r[k++] = d|(this.s<<(BI_DB-p));
+ while(i >= 0) {
+ if(p < 8) {
+ d = (this_array[i]&((1<<p)-1))<<(8-p);
+ d |= this_array[--i]>>(p+=BI_DB-8);
+ }
+ else {
+ d = (this_array[i]>>(p-=8))&0xff;
+ if(p <= 0) { p += BI_DB; --i; }
+ }
+ if((d&0x80) != 0) d |= -256;
+ if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
+ if(k > 0 || d != this.s) r[k++] = d;
+ }
+ }
+ return r;
+}
+
+function bnEquals(a) { return(this.compareTo(a)==0); }
+function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
+function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
+
+// (protected) r = this op a (bitwise)
+function bnpBitwiseTo(a,op,r) {
+ var this_array = this.array;
+ var a_array = a.array;
+ var r_array = r.array;
+ var i, f, m = Math.min(a.t,this.t);
+ for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
+ if(a.t < this.t) {
+ f = a.s&BI_DM;
+ for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
+ r.t = this.t;
+ }
+ else {
+ f = this.s&BI_DM;
+ for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
+ r.t = a.t;
+ }
+ r.s = op(this.s,a.s);
+ r.clamp();
+}
+
+// (public) this & a
+function op_and(x,y) { return x&y; }
+function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
+
+// (public) this | a
+function op_or(x,y) { return x|y; }
+function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
+
+// (public) this ^ a
+function op_xor(x,y) { return x^y; }
+function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
+
+// (public) this & ~a
+function op_andnot(x,y) { return x&~y; }
+function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
+
+// (public) ~this
+function bnNot() {
+ var this_array = this.array;
+ var r = nbi();
+ var r_array = r.array;
+
+ for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i];
+ r.t = this.t;
+ r.s = ~this.s;
+ return r;
+}
+
+// (public) this << n
+function bnShiftLeft(n) {
+ var r = nbi();
+ if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
+ return r;
+}
+
+// (public) this >> n
+function bnShiftRight(n) {
+ var r = nbi();
+ if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
+ return r;
+}
+
+// return index of lowest 1-bit in x, x < 2^31
+function lbit(x) {
+ if(x == 0) return -1;
+ var r = 0;
+ if((x&0xffff) == 0) { x >>= 16; r += 16; }
+ if((x&0xff) == 0) { x >>= 8; r += 8; }
+ if((x&0xf) == 0) { x >>= 4; r += 4; }
+ if((x&3) == 0) { x >>= 2; r += 2; }
+ if((x&1) == 0) ++r;
+ return r;
+}
+
+// (public) returns index of lowest 1-bit (or -1 if none)
+function bnGetLowestSetBit() {
+ var this_array = this.array;
+ for(var i = 0; i < this.t; ++i)
+ if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]);
+ if(this.s < 0) return this.t*BI_DB;
+ return -1;
+}
+
+// return number of 1 bits in x
+function cbit(x) {
+ var r = 0;
+ while(x != 0) { x &= x-1; ++r; }
+ return r;
+}
+
+// (public) return number of set bits
+function bnBitCount() {
+ var r = 0, x = this.s&BI_DM;
+ for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x);
+ return r;
+}
+
+// (public) true iff nth bit is set
+function bnTestBit(n) {
+ var this_array = this.array;
+ var j = Math.floor(n/BI_DB);
+ if(j >= this.t) return(this.s!=0);
+ return((this_array[j]&(1<<(n%BI_DB)))!=0);
+}
+
+// (protected) this op (1<<n)
+function bnpChangeBit(n,op) {
+ var r = BigInteger.ONE.shiftLeft(n);
+ this.bitwiseTo(r,op,r);
+ return r;
+}
+
+// (public) this | (1<<n)
+function bnSetBit(n) { return this.changeBit(n,op_or); }
+
+// (public) this & ~(1<<n)
+function bnClearBit(n) { return this.changeBit(n,op_andnot); }
+
+// (public) this ^ (1<<n)
+function bnFlipBit(n) { return this.changeBit(n,op_xor); }
+
+// (protected) r = this + a
+function bnpAddTo(a,r) {
+ var this_array = this.array;
+ var a_array = a.array;
+ var r_array = r.array;
+ var i = 0, c = 0, m = Math.min(a.t,this.t);
+ while(i < m) {
+ c += this_array[i]+a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ if(a.t < this.t) {
+ c += a.s;
+ while(i < this.t) {
+ c += this_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += this.s;
+ }
+ else {
+ c += this.s;
+ while(i < a.t) {
+ c += a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += a.s;
+ }
+ r.s = (c<0)?-1:0;
+ if(c > 0) r_array[i++] = c;
+ else if(c < -1) r_array[i++] = BI_DV+c;
+ r.t = i;
+ r.clamp();
+}
+
+// (public) this + a
+function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
+
+// (public) this - a
+function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
+
+// (public) this * a
+function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
+
+// (public) this / a
+function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
+
+// (public) this % a
+function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
+
+// (public) [this/a,this%a]
+function bnDivideAndRemainder(a) {
+ var q = nbi(), r = nbi();
+ this.divRemTo(a,q,r);
+ return new Array(q,r);
+}
+
+// (protected) this *= n, this >= 0, 1 < n < DV
+function bnpDMultiply(n) {
+ var this_array = this.array;
+ this_array[this.t] = this.am(0,n-1,this,0,0,this.t);
+ ++this.t;
+ this.clamp();
+}
+
+// (protected) this += n << w words, this >= 0
+function bnpDAddOffset(n,w) {
+ var this_array = this.array;
+ while(this.t <= w) this_array[this.t++] = 0;
+ this_array[w] += n;
+ while(this_array[w] >= BI_DV) {
+ this_array[w] -= BI_DV;
+ if(++w >= this.t) this_array[this.t++] = 0;
+ ++this_array[w];
+ }
+}
+
+// A "null" reducer
+function NullExp() {}
+function nNop(x) { return x; }
+function nMulTo(x,y,r) { x.multiplyTo(y,r); }
+function nSqrTo(x,r) { x.squareTo(r); }
+
+NullExp.prototype.convert = nNop;
+NullExp.prototype.revert = nNop;
+NullExp.prototype.mulTo = nMulTo;
+NullExp.prototype.sqrTo = nSqrTo;
+
+// (public) this^e
+function bnPow(e) { return this.exp(e,new NullExp()); }
+
+// (protected) r = lower n words of "this * a", a.t <= n
+// "this" should be the larger one if appropriate.
+function bnpMultiplyLowerTo(a,n,r) {
+ var r_array = r.array;
+ var a_array = a.array;
+ var i = Math.min(this.t+a.t,n);
+ r.s = 0; // assumes a,this >= 0
+ r.t = i;
+ while(i > 0) r_array[--i] = 0;
+ var j;
+ for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t);
+ for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i);
+ r.clamp();
+}
+
+// (protected) r = "this * a" without lower n words, n > 0
+// "this" should be the larger one if appropriate.
+function bnpMultiplyUpperTo(a,n,r) {
+ var r_array = r.array;
+ var a_array = a.array;
+ --n;
+ var i = r.t = this.t+a.t-n;
+ r.s = 0; // assumes a,this >= 0
+ while(--i >= 0) r_array[i] = 0;
+ for(i = Math.max(n-this.t,0); i < a.t; ++i)
+ r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n);
+ r.clamp();
+ r.drShiftTo(1,r);
+}
+
+// Barrett modular reduction
+function Barrett(m) {
+ // setup Barrett
+ this.r2 = nbi();
+ this.q3 = nbi();
+ BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
+ this.mu = this.r2.divide(m);
+ this.m = m;
+}
+
+function barrettConvert(x) {
+ if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
+ else if(x.compareTo(this.m) < 0) return x;
+ else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
+}
+
+function barrettRevert(x) { return x; }
+
+// x = x mod m (HAC 14.42)
+function barrettReduce(x) {
+ x.drShiftTo(this.m.t-1,this.r2);
+ if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
+ this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
+ this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
+ while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
+ x.subTo(this.r2,x);
+ while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = x^2 mod m; x != r
+function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = x*y mod m; x,y != r
+function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Barrett.prototype.convert = barrettConvert;
+Barrett.prototype.revert = barrettRevert;
+Barrett.prototype.reduce = barrettReduce;
+Barrett.prototype.mulTo = barrettMulTo;
+Barrett.prototype.sqrTo = barrettSqrTo;
+
+// (public) this^e % m (HAC 14.85)
+function bnModPow(e,m) {
+ var e_array = e.array;
+ var i = e.bitLength(), k, r = nbv(1), z;
+ if(i <= 0) return r;
+ else if(i < 18) k = 1;
+ else if(i < 48) k = 3;
+ else if(i < 144) k = 4;
+ else if(i < 768) k = 5;
+ else k = 6;
+ if(i < 8)
+ z = new Classic(m);
+ else if(m.isEven())
+ z = new Barrett(m);
+ else
+ z = new Montgomery(m);
+
+ // precomputation
+ var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
+ g[1] = z.convert(this);
+ if(k > 1) {
+ var g2 = nbi();
+ z.sqrTo(g[1],g2);
+ while(n <= km) {
+ g[n] = nbi();
+ z.mulTo(g2,g[n-2],g[n]);
+ n += 2;
+ }
+ }
+
+ var j = e.t-1, w, is1 = true, r2 = nbi(), t;
+ i = nbits(e_array[j])-1;
+ while(j >= 0) {
+ if(i >= k1) w = (e_array[j]>>(i-k1))&km;
+ else {
+ w = (e_array[j]&((1<<(i+1))-1))<<(k1-i);
+ if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1);
+ }
+
+ n = k;
+ while((w&1) == 0) { w >>= 1; --n; }
+ if((i -= n) < 0) { i += BI_DB; --j; }
+ if(is1) { // ret == 1, don't bother squaring or multiplying it
+ g[w].copyTo(r);
+ is1 = false;
+ }
+ else {
+ while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
+ if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
+ z.mulTo(r2,g[w],r);
+ }
+
+ while(j >= 0 && (e_array[j]&(1<<i)) == 0) {
+ z.sqrTo(r,r2); t = r; r = r2; r2 = t;
+ if(--i < 0) { i = BI_DB-1; --j; }
+ }
+ }
+ return z.revert(r);
+}
+
+// (public) gcd(this,a) (HAC 14.54)
+function bnGCD(a) {
+ var x = (this.s<0)?this.negate():this.clone();
+ var y = (a.s<0)?a.negate():a.clone();
+ if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
+ var i = x.getLowestSetBit(), g = y.getLowestSetBit();
+ if(g < 0) return x;
+ if(i < g) g = i;
+ if(g > 0) {
+ x.rShiftTo(g,x);
+ y.rShiftTo(g,y);
+ }
+ while(x.signum() > 0) {
+ if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
+ if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
+ if(x.compareTo(y) >= 0) {
+ x.subTo(y,x);
+ x.rShiftTo(1,x);
+ }
+ else {
+ y.subTo(x,y);
+ y.rShiftTo(1,y);
+ }
+ }
+ if(g > 0) y.lShiftTo(g,y);
+ return y;
+}
+
+// (protected) this % n, n < 2^26
+function bnpModInt(n) {
+ var this_array = this.array;
+ if(n <= 0) return 0;
+ var d = BI_DV%n, r = (this.s<0)?n-1:0;
+ if(this.t > 0)
+ if(d == 0) r = this_array[0]%n;
+ else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n;
+ return r;
+}
+
+// (public) 1/this % m (HAC 14.61)
+function bnModInverse(m) {
+ var ac = m.isEven();
+ if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
+ var u = m.clone(), v = this.clone();
+ var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
+ while(u.signum() != 0) {
+ while(u.isEven()) {
+ u.rShiftTo(1,u);
+ if(ac) {
+ if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
+ a.rShiftTo(1,a);
+ }
+ else if(!b.isEven()) b.subTo(m,b);
+ b.rShiftTo(1,b);
+ }
+ while(v.isEven()) {
+ v.rShiftTo(1,v);
+ if(ac) {
+ if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
+ c.rShiftTo(1,c);
+ }
+ else if(!d.isEven()) d.subTo(m,d);
+ d.rShiftTo(1,d);
+ }
+ if(u.compareTo(v) >= 0) {
+ u.subTo(v,u);
+ if(ac) a.subTo(c,a);
+ b.subTo(d,b);
+ }
+ else {
+ v.subTo(u,v);
+ if(ac) c.subTo(a,c);
+ d.subTo(b,d);
+ }
+ }
+ if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
+ if(d.compareTo(m) >= 0) return d.subtract(m);
+ if(d.signum() < 0) d.addTo(m,d); else return d;
+ if(d.signum() < 0) return d.add(m); else return d;
+}
+
+var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];
+var lplim = (1<<26)/lowprimes[lowprimes.length-1];
+
+// (public) test primality with certainty >= 1-.5^t
+function bnIsProbablePrime(t) {
+ var i, x = this.abs();
+ var x_array = x.array;
+ if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) {
+ for(i = 0; i < lowprimes.length; ++i)
+ if(x_array[0] == lowprimes[i]) return true;
+ return false;
+ }
+ if(x.isEven()) return false;
+ i = 1;
+ while(i < lowprimes.length) {
+ var m = lowprimes[i], j = i+1;
+ while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
+ m = x.modInt(m);
+ while(i < j) if(m%lowprimes[i++] == 0) return false;
+ }
+ return x.millerRabin(t);
+}
+
+// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
+function bnpMillerRabin(t) {
+ var n1 = this.subtract(BigInteger.ONE);
+ var k = n1.getLowestSetBit();
+ if(k <= 0) return false;
+ var r = n1.shiftRight(k);
+ t = (t+1)>>1;
+ if(t > lowprimes.length) t = lowprimes.length;
+ var a = nbi();
+ for(var i = 0; i < t; ++i) {
+ a.fromInt(lowprimes[i]);
+ var y = a.modPow(r,this);
+ if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
+ var j = 1;
+ while(j++ < k && y.compareTo(n1) != 0) {
+ y = y.modPowInt(2,this);
+ if(y.compareTo(BigInteger.ONE) == 0) return false;
+ }
+ if(y.compareTo(n1) != 0) return false;
+ }
+ }
+ return true;
+}
+
+// protected
+BigInteger.prototype.chunkSize = bnpChunkSize;
+BigInteger.prototype.toRadix = bnpToRadix;
+BigInteger.prototype.fromRadix = bnpFromRadix;
+BigInteger.prototype.fromNumber = bnpFromNumber;
+BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
+BigInteger.prototype.changeBit = bnpChangeBit;
+BigInteger.prototype.addTo = bnpAddTo;
+BigInteger.prototype.dMultiply = bnpDMultiply;
+BigInteger.prototype.dAddOffset = bnpDAddOffset;
+BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
+BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
+BigInteger.prototype.modInt = bnpModInt;
+BigInteger.prototype.millerRabin = bnpMillerRabin;
+
+// public
+BigInteger.prototype.clone = bnClone;
+BigInteger.prototype.intValue = bnIntValue;
+BigInteger.prototype.byteValue = bnByteValue;
+BigInteger.prototype.shortValue = bnShortValue;
+BigInteger.prototype.signum = bnSigNum;
+BigInteger.prototype.toByteArray = bnToByteArray;
+BigInteger.prototype.equals = bnEquals;
+BigInteger.prototype.min = bnMin;
+BigInteger.prototype.max = bnMax;
+BigInteger.prototype.and = bnAnd;
+BigInteger.prototype.or = bnOr;
+BigInteger.prototype.xor = bnXor;
+BigInteger.prototype.andNot = bnAndNot;
+BigInteger.prototype.not = bnNot;
+BigInteger.prototype.shiftLeft = bnShiftLeft;
+BigInteger.prototype.shiftRight = bnShiftRight;
+BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
+BigInteger.prototype.bitCount = bnBitCount;
+BigInteger.prototype.testBit = bnTestBit;
+BigInteger.prototype.setBit = bnSetBit;
+BigInteger.prototype.clearBit = bnClearBit;
+BigInteger.prototype.flipBit = bnFlipBit;
+BigInteger.prototype.add = bnAdd;
+BigInteger.prototype.subtract = bnSubtract;
+BigInteger.prototype.multiply = bnMultiply;
+BigInteger.prototype.divide = bnDivide;
+BigInteger.prototype.remainder = bnRemainder;
+BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
+BigInteger.prototype.modPow = bnModPow;
+BigInteger.prototype.modInverse = bnModInverse;
+BigInteger.prototype.pow = bnPow;
+BigInteger.prototype.gcd = bnGCD;
+BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
+
+// BigInteger interfaces not implemented in jsbn:
+
+// BigInteger(int signum, byte[] magnitude)
+// double doubleValue()
+// float floatValue()
+// int hashCode()
+// long longValue()
+// static BigInteger valueOf(long val)
+// prng4.js - uses Arcfour as a PRNG
+
+function Arcfour() {
+ this.i = 0;
+ this.j = 0;
+ this.S = new Array();
+}
+
+// Initialize arcfour context from key, an array of ints, each from [0..255]
+function ARC4init(key) {
+ var i, j, t;
+ for(i = 0; i < 256; ++i)
+ this.S[i] = i;
+ j = 0;
+ for(i = 0; i < 256; ++i) {
+ j = (j + this.S[i] + key[i % key.length]) & 255;
+ t = this.S[i];
+ this.S[i] = this.S[j];
+ this.S[j] = t;
+ }
+ this.i = 0;
+ this.j = 0;
+}
+
+function ARC4next() {
+ var t;
+ this.i = (this.i + 1) & 255;
+ this.j = (this.j + this.S[this.i]) & 255;
+ t = this.S[this.i];
+ this.S[this.i] = this.S[this.j];
+ this.S[this.j] = t;
+ return this.S[(t + this.S[this.i]) & 255];
+}
+
+Arcfour.prototype.init = ARC4init;
+Arcfour.prototype.next = ARC4next;
+
+// Plug in your RNG constructor here
+function prng_newstate() {
+ return new Arcfour();
+}
+
+// Pool size must be a multiple of 4 and greater than 32.
+// An array of bytes the size of the pool will be passed to init()
+var rng_psize = 256;
+// Random number generator - requires a PRNG backend, e.g. prng4.js
+
+// For best results, put code like
+// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
+// in your main HTML document.
+
+var rng_state;
+var rng_pool;
+var rng_pptr;
+
+// Mix in a 32-bit integer into the pool
+function rng_seed_int(x) {
+ rng_pool[rng_pptr++] ^= x & 255;
+ rng_pool[rng_pptr++] ^= (x >> 8) & 255;
+ rng_pool[rng_pptr++] ^= (x >> 16) & 255;
+ rng_pool[rng_pptr++] ^= (x >> 24) & 255;
+ if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
+}
+
+// Mix in the current time (w/milliseconds) into the pool
+function rng_seed_time() {
+ // Use pre-computed date to avoid making the benchmark
+ // results dependent on the current date.
+ rng_seed_int(1122926989487);
+}
+
+// Initialize the pool with junk if needed.
+if(rng_pool == null) {
+ rng_pool = new Array();
+ rng_pptr = 0;
+ var t;
+ while(rng_pptr < rng_psize) { // extract some randomness from Math.random()
+ t = Math.floor(65536 * Math.random());
+ rng_pool[rng_pptr++] = t >>> 8;
+ rng_pool[rng_pptr++] = t & 255;
+ }
+ rng_pptr = 0;
+ rng_seed_time();
+ //rng_seed_int(window.screenX);
+ //rng_seed_int(window.screenY);
+}
+
+function rng_get_byte() {
+ if(rng_state == null) {
+ rng_seed_time();
+ rng_state = prng_newstate();
+ rng_state.init(rng_pool);
+ for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
+ rng_pool[rng_pptr] = 0;
+ rng_pptr = 0;
+ //rng_pool = null;
+ }
+ // TODO: allow reseeding after first request
+ return rng_state.next();
+}
+
+function rng_get_bytes(ba) {
+ var i;
+ for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
+}
+
+function SecureRandom() {}
+
+SecureRandom.prototype.nextBytes = rng_get_bytes;
+// Depends on jsbn.js and rng.js
+
+// convert a (hex) string to a bignum object
+function parseBigInt(str,r) {
+ return new BigInteger(str,r);
+}
+
+function linebrk(s,n) {
+ var ret = "";
+ var i = 0;
+ while(i + n < s.length) {
+ ret += s.substring(i,i+n) + "\n";
+ i += n;
+ }
+ return ret + s.substring(i,s.length);
+}
+
+function byte2Hex(b) {
+ if(b < 0x10)
+ return "0" + b.toString(16);
+ else
+ return b.toString(16);
+}
+
+// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
+function pkcs1pad2(s,n) {
+ if(n < s.length + 11) {
+ alert("Message too long for RSA");
+ return null;
+ }
+ var ba = new Array();
+ var i = s.length - 1;
+ while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--);
+ ba[--n] = 0;
+ var rng = new SecureRandom();
+ var x = new Array();
+ while(n > 2) { // random non-zero pad
+ x[0] = 0;
+ while(x[0] == 0) rng.nextBytes(x);
+ ba[--n] = x[0];
+ }
+ ba[--n] = 2;
+ ba[--n] = 0;
+ return new BigInteger(ba);
+}
+
+// "empty" RSA key constructor
+function RSAKey() {
+ this.n = null;
+ this.e = 0;
+ this.d = null;
+ this.p = null;
+ this.q = null;
+ this.dmp1 = null;
+ this.dmq1 = null;
+ this.coeff = null;
+}
+
+// Set the public key fields N and e from hex strings
+function RSASetPublic(N,E) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ }
+ else
+ alert("Invalid RSA public key");
+}
+
+// Perform raw public operation on "x": return x^e (mod n)
+function RSADoPublic(x) {
+ return x.modPowInt(this.e, this.n);
+}
+
+// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
+function RSAEncrypt(text) {
+ var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
+ if(m == null) return null;
+ var c = this.doPublic(m);
+ if(c == null) return null;
+ var h = c.toString(16);
+ if((h.length & 1) == 0) return h; else return "0" + h;
+}
+
+// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
+//function RSAEncryptB64(text) {
+// var h = this.encrypt(text);
+// if(h) return hex2b64(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPublic = RSADoPublic;
+
+// public
+RSAKey.prototype.setPublic = RSASetPublic;
+RSAKey.prototype.encrypt = RSAEncrypt;
+//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
+// Depends on rsa.js and jsbn2.js
+
+// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
+function pkcs1unpad2(d,n) {
+ var b = d.toByteArray();
+ var i = 0;
+ while(i < b.length && b[i] == 0) ++i;
+ if(b.length-i != n-1 || b[i] != 2)
+ return null;
+ ++i;
+ while(b[i] != 0)
+ if(++i >= b.length) return null;
+ var ret = "";
+ while(++i < b.length)
+ ret += String.fromCharCode(b[i]);
+ return ret;
+}
+
+// Set the private key fields N, e, and d from hex strings
+function RSASetPrivate(N,E,D) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ this.d = parseBigInt(D,16);
+ }
+ else
+ alert("Invalid RSA private key");
+}
+
+// Set the private key fields N, e, d and CRT params from hex strings
+function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ this.d = parseBigInt(D,16);
+ this.p = parseBigInt(P,16);
+ this.q = parseBigInt(Q,16);
+ this.dmp1 = parseBigInt(DP,16);
+ this.dmq1 = parseBigInt(DQ,16);
+ this.coeff = parseBigInt(C,16);
+ }
+ else
+ alert("Invalid RSA private key");
+}
+
+// Generate a new random private key B bits long, using public expt E
+function RSAGenerate(B,E) {
+ var rng = new SecureRandom();
+ var qs = B>>1;
+ this.e = parseInt(E,16);
+ var ee = new BigInteger(E,16);
+ for(;;) {
+ for(;;) {
+ this.p = new BigInteger(B-qs,1,rng);
+ if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
+ }
+ for(;;) {
+ this.q = new BigInteger(qs,1,rng);
+ if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
+ }
+ if(this.p.compareTo(this.q) <= 0) {
+ var t = this.p;
+ this.p = this.q;
+ this.q = t;
+ }
+ var p1 = this.p.subtract(BigInteger.ONE);
+ var q1 = this.q.subtract(BigInteger.ONE);
+ var phi = p1.multiply(q1);
+ if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
+ this.n = this.p.multiply(this.q);
+ this.d = ee.modInverse(phi);
+ this.dmp1 = this.d.mod(p1);
+ this.dmq1 = this.d.mod(q1);
+ this.coeff = this.q.modInverse(this.p);
+ break;
+ }
+ }
+}
+
+// Perform raw private operation on "x": return x^d (mod n)
+function RSADoPrivate(x) {
+ if(this.p == null || this.q == null)
+ return x.modPow(this.d, this.n);
+
+ // TODO: re-calculate any missing CRT params
+ var xp = x.mod(this.p).modPow(this.dmp1, this.p);
+ var xq = x.mod(this.q).modPow(this.dmq1, this.q);
+
+ while(xp.compareTo(xq) < 0)
+ xp = xp.add(this.p);
+ return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is an even-length hex string and the output is a plain string.
+function RSADecrypt(ctext) {
+ var c = parseBigInt(ctext, 16);
+ var m = this.doPrivate(c);
+ if(m == null) return null;
+ return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is a Base64-encoded string and the output is a plain string.
+//function RSAB64Decrypt(ctext) {
+// var h = b64tohex(ctext);
+// if(h) return this.decrypt(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPrivate = RSADoPrivate;
+
+// public
+RSAKey.prototype.setPrivate = RSASetPrivate;
+RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
+RSAKey.prototype.generate = RSAGenerate;
+RSAKey.prototype.decrypt = RSADecrypt;
+//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
+
+
+nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3";
+eValue="10001";
+dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161";
+pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d";
+qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f";
+dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25";
+dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd";
+coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250";
+
+setupEngine(am3, 28);
+
+var TEXT = "The quick brown fox jumped over the extremely lazy frog! " +
+ "Now is the time for all good men to come to the party.";
+var encrypted;
+
+function encrypt() {
+ var RSA = new RSAKey();
+ RSA.setPublic(nValue, eValue);
+ RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+ encrypted = RSA.encrypt(TEXT);
+}
+
+function decrypt() {
+ var RSA = new RSAKey();
+ RSA.setPublic(nValue, eValue);
+ RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+ var decrypted = RSA.decrypt(encrypted);
+ if (decrypted != TEXT) {
+ throw new Error("Crypto operation failed");
+ }
+}
diff --git a/tests/benchmarks/script/v8/tests/deltablue.js b/tests/benchmarks/script/v8/tests/deltablue.js
new file mode 100644
index 0000000000..548fd96ffb
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/deltablue.js
@@ -0,0 +1,880 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 1996 John Maloney and Mario Wolczko.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+// This implementation of the DeltaBlue benchmark is derived
+// from the Smalltalk implementation by John Maloney and Mario
+// Wolczko. Some parts have been translated directly, whereas
+// others have been modified more aggresively to make it feel
+// more like a JavaScript program.
+
+
+var DeltaBlue = new BenchmarkSuite('DeltaBlue', 66118, [
+ new Benchmark('DeltaBlue', deltaBlue)
+]);
+
+
+/**
+ * A JavaScript implementation of the DeltaBlue constraint-solving
+ * algorithm, as described in:
+ *
+ * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"
+ * Bjorn N. Freeman-Benson and John Maloney
+ * January 1990 Communications of the ACM,
+ * also available as University of Washington TR 89-08-06.
+ *
+ * Beware: this benchmark is written in a grotesque style where
+ * the constraint model is built by side-effects from constructors.
+ * I've kept it this way to avoid deviating too much from the original
+ * implementation.
+ */
+
+
+/* --- O b j e c t M o d e l --- */
+
+Object.prototype.inheritsFrom = function (shuper) {
+ function Inheriter() { }
+ Inheriter.prototype = shuper.prototype;
+ this.prototype = new Inheriter();
+ this.superConstructor = shuper;
+}
+
+function OrderedCollection() {
+ this.elms = new Array();
+}
+
+OrderedCollection.prototype.add = function (elm) {
+ this.elms.push(elm);
+}
+
+OrderedCollection.prototype.at = function (index) {
+ return this.elms[index];
+}
+
+OrderedCollection.prototype.size = function () {
+ return this.elms.length;
+}
+
+OrderedCollection.prototype.removeFirst = function () {
+ return this.elms.pop();
+}
+
+OrderedCollection.prototype.remove = function (elm) {
+ var index = 0, skipped = 0;
+ for (var i = 0; i < this.elms.length; i++) {
+ var value = this.elms[i];
+ if (value != elm) {
+ this.elms[index] = value;
+ index++;
+ } else {
+ skipped++;
+ }
+ }
+ for (var i = 0; i < skipped; i++)
+ this.elms.pop();
+}
+
+/* --- *
+ * S t r e n g t h
+ * --- */
+
+/**
+ * Strengths are used to measure the relative importance of constraints.
+ * New strengths may be inserted in the strength hierarchy without
+ * disrupting current constraints. Strengths cannot be created outside
+ * this class, so pointer comparison can be used for value comparison.
+ */
+function Strength(strengthValue, name) {
+ this.strengthValue = strengthValue;
+ this.name = name;
+}
+
+Strength.stronger = function (s1, s2) {
+ return s1.strengthValue < s2.strengthValue;
+}
+
+Strength.weaker = function (s1, s2) {
+ return s1.strengthValue > s2.strengthValue;
+}
+
+Strength.weakestOf = function (s1, s2) {
+ return this.weaker(s1, s2) ? s1 : s2;
+}
+
+Strength.strongest = function (s1, s2) {
+ return this.stronger(s1, s2) ? s1 : s2;
+}
+
+Strength.prototype.nextWeaker = function () {
+ switch (this.strengthValue) {
+ case 0: return Strength.WEAKEST;
+ case 1: return Strength.WEAK_DEFAULT;
+ case 2: return Strength.NORMAL;
+ case 3: return Strength.STRONG_DEFAULT;
+ case 4: return Strength.PREFERRED;
+ case 5: return Strength.REQUIRED;
+ }
+}
+
+// Strength constants.
+Strength.REQUIRED = new Strength(0, "required");
+Strength.STONG_PREFERRED = new Strength(1, "strongPreferred");
+Strength.PREFERRED = new Strength(2, "preferred");
+Strength.STRONG_DEFAULT = new Strength(3, "strongDefault");
+Strength.NORMAL = new Strength(4, "normal");
+Strength.WEAK_DEFAULT = new Strength(5, "weakDefault");
+Strength.WEAKEST = new Strength(6, "weakest");
+
+/* --- *
+ * C o n s t r a i n t
+ * --- */
+
+/**
+ * An abstract class representing a system-maintainable relationship
+ * (or "constraint") between a set of variables. A constraint supplies
+ * a strength instance variable; concrete subclasses provide a means
+ * of storing the constrained variables and other information required
+ * to represent a constraint.
+ */
+function Constraint(strength) {
+ this.strength = strength;
+}
+
+/**
+ * Activate this constraint and attempt to satisfy it.
+ */
+Constraint.prototype.addConstraint = function () {
+ this.addToGraph();
+ planner.incrementalAdd(this);
+}
+
+/**
+ * Attempt to find a way to enforce this constraint. If successful,
+ * record the solution, perhaps modifying the current dataflow
+ * graph. Answer the constraint that this constraint overrides, if
+ * there is one, or nil, if there isn't.
+ * Assume: I am not already satisfied.
+ */
+Constraint.prototype.satisfy = function (mark) {
+ this.chooseMethod(mark);
+ if (!this.isSatisfied()) {
+ if (this.strength == Strength.REQUIRED)
+ alert("Could not satisfy a required constraint!");
+ return null;
+ }
+ this.markInputs(mark);
+ var out = this.output();
+ var overridden = out.determinedBy;
+ if (overridden != null) overridden.markUnsatisfied();
+ out.determinedBy = this;
+ if (!planner.addPropagate(this, mark))
+ alert("Cycle encountered");
+ out.mark = mark;
+ return overridden;
+}
+
+Constraint.prototype.destroyConstraint = function () {
+ if (this.isSatisfied()) planner.incrementalRemove(this);
+ else this.removeFromGraph();
+}
+
+/**
+ * Normal constraints are not input constraints. An input constraint
+ * is one that depends on external state, such as the mouse, the
+ * keybord, a clock, or some arbitraty piece of imperative code.
+ */
+Constraint.prototype.isInput = function () {
+ return false;
+}
+
+/* --- *
+ * U n a r y C o n s t r a i n t
+ * --- */
+
+/**
+ * Abstract superclass for constraints having a single possible output
+ * variable.
+ */
+function UnaryConstraint(v, strength) {
+ UnaryConstraint.superConstructor.call(this, strength);
+ this.myOutput = v;
+ this.satisfied = false;
+ this.addConstraint();
+}
+
+UnaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Adds this constraint to the constraint graph
+ */
+UnaryConstraint.prototype.addToGraph = function () {
+ this.myOutput.addConstraint(this);
+ this.satisfied = false;
+}
+
+/**
+ * Decides if this constraint can be satisfied and records that
+ * decision.
+ */
+UnaryConstraint.prototype.chooseMethod = function (mark) {
+ this.satisfied = (this.myOutput.mark != mark)
+ && Strength.stronger(this.strength, this.myOutput.walkStrength);
+}
+
+/**
+ * Returns true if this constraint is satisfied in the current solution.
+ */
+UnaryConstraint.prototype.isSatisfied = function () {
+ return this.satisfied;
+}
+
+UnaryConstraint.prototype.markInputs = function (mark) {
+ // has no inputs
+}
+
+/**
+ * Returns the current output variable.
+ */
+UnaryConstraint.prototype.output = function () {
+ return this.myOutput;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+UnaryConstraint.prototype.recalculate = function () {
+ this.myOutput.walkStrength = this.strength;
+ this.myOutput.stay = !this.isInput();
+ if (this.myOutput.stay) this.execute(); // Stay optimization
+}
+
+/**
+ * Records that this constraint is unsatisfied
+ */
+UnaryConstraint.prototype.markUnsatisfied = function () {
+ this.satisfied = false;
+}
+
+UnaryConstraint.prototype.inputsKnown = function () {
+ return true;
+}
+
+UnaryConstraint.prototype.removeFromGraph = function () {
+ if (this.myOutput != null) this.myOutput.removeConstraint(this);
+ this.satisfied = false;
+}
+
+/* --- *
+ * S t a y C o n s t r a i n t
+ * --- */
+
+/**
+ * Variables that should, with some level of preference, stay the same.
+ * Planners may exploit the fact that instances, if satisfied, will not
+ * change their output during plan execution. This is called "stay
+ * optimization".
+ */
+function StayConstraint(v, str) {
+ StayConstraint.superConstructor.call(this, v, str);
+}
+
+StayConstraint.inheritsFrom(UnaryConstraint);
+
+StayConstraint.prototype.execute = function () {
+ // Stay constraints do nothing
+}
+
+/* --- *
+ * E d i t C o n s t r a i n t
+ * --- */
+
+/**
+ * A unary input constraint used to mark a variable that the client
+ * wishes to change.
+ */
+function EditConstraint(v, str) {
+ EditConstraint.superConstructor.call(this, v, str);
+}
+
+EditConstraint.inheritsFrom(UnaryConstraint);
+
+/**
+ * Edits indicate that a variable is to be changed by imperative code.
+ */
+EditConstraint.prototype.isInput = function () {
+ return true;
+}
+
+EditConstraint.prototype.execute = function () {
+ // Edit constraints do nothing
+}
+
+/* --- *
+ * B i n a r y C o n s t r a i n t
+ * --- */
+
+var Direction = new Object();
+Direction.NONE = 0;
+Direction.FORWARD = 1;
+Direction.BACKWARD = -1;
+
+/**
+ * Abstract superclass for constraints having two possible output
+ * variables.
+ */
+function BinaryConstraint(var1, var2, strength) {
+ BinaryConstraint.superConstructor.call(this, strength);
+ this.v1 = var1;
+ this.v2 = var2;
+ this.direction = Direction.NONE;
+ this.addConstraint();
+}
+
+BinaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Decides if this constraint can be satisfied and which way it
+ * should flow based on the relative strength of the variables related,
+ * and record that decision.
+ */
+BinaryConstraint.prototype.chooseMethod = function (mark) {
+ if (this.v1.mark == mark) {
+ this.direction = (this.v2.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
+ ? Direction.FORWARD
+ : Direction.NONE;
+ }
+ if (this.v2.mark == mark) {
+ this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength))
+ ? Direction.BACKWARD
+ : Direction.NONE;
+ }
+ if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) {
+ this.direction = Strength.stronger(this.strength, this.v1.walkStrength)
+ ? Direction.BACKWARD
+ : Direction.NONE;
+ } else {
+ this.direction = Strength.stronger(this.strength, this.v2.walkStrength)
+ ? Direction.FORWARD
+ : Direction.BACKWARD
+ }
+}
+
+/**
+ * Add this constraint to the constraint graph
+ */
+BinaryConstraint.prototype.addToGraph = function () {
+ this.v1.addConstraint(this);
+ this.v2.addConstraint(this);
+ this.direction = Direction.NONE;
+}
+
+/**
+ * Answer true if this constraint is satisfied in the current solution.
+ */
+BinaryConstraint.prototype.isSatisfied = function () {
+ return this.direction != Direction.NONE;
+}
+
+/**
+ * Mark the input variable with the given mark.
+ */
+BinaryConstraint.prototype.markInputs = function (mark) {
+ this.input().mark = mark;
+}
+
+/**
+ * Returns the current input variable
+ */
+BinaryConstraint.prototype.input = function () {
+ return (this.direction == Direction.FORWARD) ? this.v1 : this.v2;
+}
+
+/**
+ * Returns the current output variable
+ */
+BinaryConstraint.prototype.output = function () {
+ return (this.direction == Direction.FORWARD) ? this.v2 : this.v1;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this
+ * constraint. Assume this constraint is satisfied.
+ */
+BinaryConstraint.prototype.recalculate = function () {
+ var ihn = this.input(), out = this.output();
+ out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+ out.stay = ihn.stay;
+ if (out.stay) this.execute();
+}
+
+/**
+ * Record the fact that this constraint is unsatisfied.
+ */
+BinaryConstraint.prototype.markUnsatisfied = function () {
+ this.direction = Direction.NONE;
+}
+
+BinaryConstraint.prototype.inputsKnown = function (mark) {
+ var i = this.input();
+ return i.mark == mark || i.stay || i.determinedBy == null;
+}
+
+BinaryConstraint.prototype.removeFromGraph = function () {
+ if (this.v1 != null) this.v1.removeConstraint(this);
+ if (this.v2 != null) this.v2.removeConstraint(this);
+ this.direction = Direction.NONE;
+}
+
+/* --- *
+ * S c a l e C o n s t r a i n t
+ * --- */
+
+/**
+ * Relates two variables by the linear scaling relationship: "v2 =
+ * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain
+ * this relationship but the scale factor and offset are considered
+ * read-only.
+ */
+function ScaleConstraint(src, scale, offset, dest, strength) {
+ this.direction = Direction.NONE;
+ this.scale = scale;
+ this.offset = offset;
+ ScaleConstraint.superConstructor.call(this, src, dest, strength);
+}
+
+ScaleConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Adds this constraint to the constraint graph.
+ */
+ScaleConstraint.prototype.addToGraph = function () {
+ ScaleConstraint.superConstructor.prototype.addToGraph.call(this);
+ this.scale.addConstraint(this);
+ this.offset.addConstraint(this);
+}
+
+ScaleConstraint.prototype.removeFromGraph = function () {
+ ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this);
+ if (this.scale != null) this.scale.removeConstraint(this);
+ if (this.offset != null) this.offset.removeConstraint(this);
+}
+
+ScaleConstraint.prototype.markInputs = function (mark) {
+ ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark);
+ this.scale.mark = this.offset.mark = mark;
+}
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+ScaleConstraint.prototype.execute = function () {
+ if (this.direction == Direction.FORWARD) {
+ this.v2.value = this.v1.value * this.scale.value + this.offset.value;
+ } else {
+ this.v1.value = (this.v2.value - this.offset.value) / this.scale.value;
+ }
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+ScaleConstraint.prototype.recalculate = function () {
+ var ihn = this.input(), out = this.output();
+ out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+ out.stay = ihn.stay && this.scale.stay && this.offset.stay;
+ if (out.stay) this.execute();
+}
+
+/* --- *
+ * E q u a l i t y C o n s t r a i n t
+ * --- */
+
+/**
+ * Constrains two variables to have the same value.
+ */
+function EqualityConstraint(var1, var2, strength) {
+ EqualityConstraint.superConstructor.call(this, var1, var2, strength);
+}
+
+EqualityConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+EqualityConstraint.prototype.execute = function () {
+ this.output().value = this.input().value;
+}
+
+/* --- *
+ * V a r i a b l e
+ * --- */
+
+/**
+ * A constrained variable. In addition to its value, it maintain the
+ * structure of the constraint graph, the current dataflow graph, and
+ * various parameters of interest to the DeltaBlue incremental
+ * constraint solver.
+ **/
+function Variable(name, initialValue) {
+ this.value = initialValue || 0;
+ this.constraints = new OrderedCollection();
+ this.determinedBy = null;
+ this.mark = 0;
+ this.walkStrength = Strength.WEAKEST;
+ this.stay = true;
+ this.name = name;
+}
+
+/**
+ * Add the given constraint to the set of all constraints that refer
+ * this variable.
+ */
+Variable.prototype.addConstraint = function (c) {
+ this.constraints.add(c);
+}
+
+/**
+ * Removes all traces of c from this variable.
+ */
+Variable.prototype.removeConstraint = function (c) {
+ this.constraints.remove(c);
+ if (this.determinedBy == c) this.determinedBy = null;
+}
+
+/* --- *
+ * P l a n n e r
+ * --- */
+
+/**
+ * The DeltaBlue planner
+ */
+function Planner() {
+ this.currentMark = 0;
+}
+
+/**
+ * Attempt to satisfy the given constraint and, if successful,
+ * incrementally update the dataflow graph. Details: If satifying
+ * the constraint is successful, it may override a weaker constraint
+ * on its output. The algorithm attempts to resatisfy that
+ * constraint using some other method. This process is repeated
+ * until either a) it reaches a variable that was not previously
+ * determined by any constraint or b) it reaches a constraint that
+ * is too weak to be satisfied using any of its methods. The
+ * variables of constraints that have been processed are marked with
+ * a unique mark value so that we know where we've been. This allows
+ * the algorithm to avoid getting into an infinite loop even if the
+ * constraint graph has an inadvertent cycle.
+ */
+Planner.prototype.incrementalAdd = function (c) {
+ var mark = this.newMark();
+ var overridden = c.satisfy(mark);
+ while (overridden != null)
+ overridden = overridden.satisfy(mark);
+}
+
+/**
+ * Entry point for retracting a constraint. Remove the given
+ * constraint and incrementally update the dataflow graph.
+ * Details: Retracting the given constraint may allow some currently
+ * unsatisfiable downstream constraint to be satisfied. We therefore collect
+ * a list of unsatisfied downstream constraints and attempt to
+ * satisfy each one in turn. This list is traversed by constraint
+ * strength, strongest first, as a heuristic for avoiding
+ * unnecessarily adding and then overriding weak constraints.
+ * Assume: c is satisfied.
+ */
+Planner.prototype.incrementalRemove = function (c) {
+ var out = c.output();
+ c.markUnsatisfied();
+ c.removeFromGraph();
+ var unsatisfied = this.removePropagateFrom(out);
+ var strength = Strength.REQUIRED;
+ do {
+ for (var i = 0; i < unsatisfied.size(); i++) {
+ var u = unsatisfied.at(i);
+ if (u.strength == strength)
+ this.incrementalAdd(u);
+ }
+ strength = strength.nextWeaker();
+ } while (strength != Strength.WEAKEST);
+}
+
+/**
+ * Select a previously unused mark value.
+ */
+Planner.prototype.newMark = function () {
+ return ++this.currentMark;
+}
+
+/**
+ * Extract a plan for resatisfaction starting from the given source
+ * constraints, usually a set of input constraints. This method
+ * assumes that stay optimization is desired; the plan will contain
+ * only constraints whose output variables are not stay. Constraints
+ * that do no computation, such as stay and edit constraints, are
+ * not included in the plan.
+ * Details: The outputs of a constraint are marked when it is added
+ * to the plan under construction. A constraint may be appended to
+ * the plan when all its input variables are known. A variable is
+ * known if either a) the variable is marked (indicating that has
+ * been computed by a constraint appearing earlier in the plan), b)
+ * the variable is 'stay' (i.e. it is a constant at plan execution
+ * time), or c) the variable is not determined by any
+ * constraint. The last provision is for past states of history
+ * variables, which are not stay but which are also not computed by
+ * any constraint.
+ * Assume: sources are all satisfied.
+ */
+Planner.prototype.makePlan = function (sources) {
+ var mark = this.newMark();
+ var plan = new Plan();
+ var todo = sources;
+ while (todo.size() > 0) {
+ var c = todo.removeFirst();
+ if (c.output().mark != mark && c.inputsKnown(mark)) {
+ plan.addConstraint(c);
+ c.output().mark = mark;
+ this.addConstraintsConsumingTo(c.output(), todo);
+ }
+ }
+ return plan;
+}
+
+/**
+ * Extract a plan for resatisfying starting from the output of the
+ * given constraints, usually a set of input constraints.
+ */
+Planner.prototype.extractPlanFromConstraints = function (constraints) {
+ var sources = new OrderedCollection();
+ for (var i = 0; i < constraints.size(); i++) {
+ var c = constraints.at(i);
+ if (c.isInput() && c.isSatisfied())
+ // not in plan already and eligible for inclusion
+ sources.add(c);
+ }
+ return this.makePlan(sources);
+}
+
+/**
+ * Recompute the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint and recompute the actual
+ * values of all variables whose stay flag is true. If a cycle is
+ * detected, remove the given constraint and answer
+ * false. Otherwise, answer true.
+ * Details: Cycles are detected when a marked variable is
+ * encountered downstream of the given constraint. The sender is
+ * assumed to have marked the inputs of the given constraint with
+ * the given mark. Thus, encountering a marked node downstream of
+ * the output constraint means that there is a path from the
+ * constraint's output to one of its inputs.
+ */
+Planner.prototype.addPropagate = function (c, mark) {
+ var todo = new OrderedCollection();
+ todo.add(c);
+ while (todo.size() > 0) {
+ var d = todo.removeFirst();
+ if (d.output().mark == mark) {
+ this.incrementalRemove(c);
+ return false;
+ }
+ d.recalculate();
+ this.addConstraintsConsumingTo(d.output(), todo);
+ }
+ return true;
+}
+
+
+/**
+ * Update the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint. Answer a collection of
+ * unsatisfied constraints sorted in order of decreasing strength.
+ */
+Planner.prototype.removePropagateFrom = function (out) {
+ out.determinedBy = null;
+ out.walkStrength = Strength.WEAKEST;
+ out.stay = true;
+ var unsatisfied = new OrderedCollection();
+ var todo = new OrderedCollection();
+ todo.add(out);
+ while (todo.size() > 0) {
+ var v = todo.removeFirst();
+ for (var i = 0; i < v.constraints.size(); i++) {
+ var c = v.constraints.at(i);
+ if (!c.isSatisfied())
+ unsatisfied.add(c);
+ }
+ var determining = v.determinedBy;
+ for (var i = 0; i < v.constraints.size(); i++) {
+ var next = v.constraints.at(i);
+ if (next != determining && next.isSatisfied()) {
+ next.recalculate();
+ todo.add(next.output());
+ }
+ }
+ }
+ return unsatisfied;
+}
+
+Planner.prototype.addConstraintsConsumingTo = function (v, coll) {
+ var determining = v.determinedBy;
+ var cc = v.constraints;
+ for (var i = 0; i < cc.size(); i++) {
+ var c = cc.at(i);
+ if (c != determining && c.isSatisfied())
+ coll.add(c);
+ }
+}
+
+/* --- *
+ * P l a n
+ * --- */
+
+/**
+ * A Plan is an ordered list of constraints to be executed in sequence
+ * to resatisfy all currently satisfiable constraints in the face of
+ * one or more changing inputs.
+ */
+function Plan() {
+ this.v = new OrderedCollection();
+}
+
+Plan.prototype.addConstraint = function (c) {
+ this.v.add(c);
+}
+
+Plan.prototype.size = function () {
+ return this.v.size();
+}
+
+Plan.prototype.constraintAt = function (index) {
+ return this.v.at(index);
+}
+
+Plan.prototype.execute = function () {
+ for (var i = 0; i < this.size(); i++) {
+ var c = this.constraintAt(i);
+ c.execute();
+ }
+}
+
+/* --- *
+ * M a i n
+ * --- */
+
+/**
+ * This is the standard DeltaBlue benchmark. A long chain of equality
+ * constraints is constructed with a stay constraint on one end. An
+ * edit constraint is then added to the opposite end and the time is
+ * measured for adding and removing this constraint, and extracting
+ * and executing a constraint satisfaction plan. There are two cases.
+ * In case 1, the added constraint is stronger than the stay
+ * constraint and values must propagate down the entire length of the
+ * chain. In case 2, the added constraint is weaker than the stay
+ * constraint so it cannot be accomodated. The cost in this case is,
+ * of course, very low. Typical situations lie somewhere between these
+ * two extremes.
+ */
+function chainTest(n) {
+ planner = new Planner();
+ var prev = null, first = null, last = null;
+
+ // Build chain of n equality constraints
+ for (var i = 0; i <= n; i++) {
+ var name = "v" + i;
+ var v = new Variable(name);
+ if (prev != null)
+ new EqualityConstraint(prev, v, Strength.REQUIRED);
+ if (i == 0) first = v;
+ if (i == n) last = v;
+ prev = v;
+ }
+
+ new StayConstraint(last, Strength.STRONG_DEFAULT);
+ var edit = new EditConstraint(first, Strength.PREFERRED);
+ var edits = new OrderedCollection();
+ edits.add(edit);
+ var plan = planner.extractPlanFromConstraints(edits);
+ for (var i = 0; i < 100; i++) {
+ first.value = i;
+ plan.execute();
+ if (last.value != i)
+ alert("Chain test failed.");
+ }
+}
+
+/**
+ * This test constructs a two sets of variables related to each
+ * other by a simple linear transformation (scale and offset). The
+ * time is measured to change a variable on either side of the
+ * mapping and to change the scale and offset factors.
+ */
+function projectionTest(n) {
+ planner = new Planner();
+ var scale = new Variable("scale", 10);
+ var offset = new Variable("offset", 1000);
+ var src = null, dst = null;
+
+ var dests = new OrderedCollection();
+ for (var i = 0; i < n; i++) {
+ src = new Variable("src" + i, i);
+ dst = new Variable("dst" + i, i);
+ dests.add(dst);
+ new StayConstraint(src, Strength.NORMAL);
+ new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED);
+ }
+
+ change(src, 17);
+ if (dst.value != 1170) alert("Projection 1 failed");
+ change(dst, 1050);
+ if (src.value != 5) alert("Projection 2 failed");
+ change(scale, 5);
+ for (var i = 0; i < n - 1; i++) {
+ if (dests.at(i).value != i * 5 + 1000)
+ alert("Projection 3 failed");
+ }
+ change(offset, 2000);
+ for (var i = 0; i < n - 1; i++) {
+ if (dests.at(i).value != i * 5 + 2000)
+ alert("Projection 4 failed");
+ }
+}
+
+function change(v, newValue) {
+ var edit = new EditConstraint(v, Strength.PREFERRED);
+ var edits = new OrderedCollection();
+ edits.add(edit);
+ var plan = planner.extractPlanFromConstraints(edits);
+ for (var i = 0; i < 10; i++) {
+ v.value = newValue;
+ plan.execute();
+ }
+ edit.destroyConstraint();
+}
+
+// Global variable holding the current planner.
+var planner = null;
+
+function deltaBlue() {
+ chainTest(100);
+ projectionTest(100);
+}
diff --git a/tests/benchmarks/script/v8/tests/earley-boyer.js b/tests/benchmarks/script/v8/tests/earley-boyer.js
new file mode 100644
index 0000000000..1be480e8ee
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/earley-boyer.js
@@ -0,0 +1,4684 @@
+// This file is automatically generated by scheme2js, except for the
+// benchmark harness code at the beginning and end of the file.
+
+var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 666463, [
+ new Benchmark("Earley", function () { BgL_earleyzd2benchmarkzd2(); }),
+ new Benchmark("Boyer", function () { BgL_nboyerzd2benchmarkzd2(); })
+]);
+
+
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/*
+ * To use write/prints/... the default-output port has to be set first.
+ * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values
+ * should do the trick.
+ * In the following example the std-out and error-port are redirected to
+ * a DIV.
+function initRuntime() {
+ function escapeHTML(s) {
+ var tmp = s;
+ tmp = tmp.replace(/&/g, "&amp;");
+ tmp = tmp.replace(/</g, "&lt;");
+ tmp = tmp.replace(/>/g, "&gt;");
+ tmp = tmp.replace(/ /g, "&nbsp;");
+ tmp = tmp.replace(/\n/g, "<br />");
+ tmp = tmp.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp");
+ return tmp;
+
+ }
+
+ document.write("<div id='stdout'></div>");
+ SC_DEFAULT_OUT = new sc_GenericOutputPort(
+ function(s) {
+ var stdout = document.getElementById('stdout');
+ stdout.innerHTML = stdout.innerHTML + escapeHTML(s);
+ });
+ SC_ERROR_OUT = SC_DEFAULT_OUT;
+}
+*/
+
+
+function sc_print_debug() {
+ sc_print.apply(null, arguments);
+}
+/*** META ((export *js*)) */
+var sc_JS_GLOBALS = this;
+
+var __sc_LINE=-1;
+var __sc_FILE="";
+
+/*** META ((export #t)) */
+function sc_alert() {
+ var len = arguments.length;
+ var s = "";
+ var i;
+
+ for( i = 0; i < len; i++ ) {
+ s += sc_toDisplayString(arguments[ i ]);
+ }
+
+ return alert( s );
+}
+
+/*** META ((export #t)) */
+function sc_typeof( x ) {
+ return typeof x;
+}
+
+/*** META ((export #t)) */
+function sc_error() {
+ var a = [sc_jsstring2symbol("*error*")];
+ for (var i = 0; i < arguments.length; i++) {
+ a[i+1] = arguments[i];
+ }
+ throw a;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "throw ")))
+*/
+function sc_raise(obj) {
+ throw obj;
+}
+
+/*** META ((export with-handler-lambda)) */
+function sc_withHandlerLambda(handler, body) {
+ try {
+ return body();
+ } catch(e) {
+ if (!e._internalException)
+ return handler(e);
+ else
+ throw e;
+ }
+}
+
+var sc_properties = new Object();
+
+/*** META ((export #t)) */
+function sc_putpropBang(sym, key, val) {
+ var ht = sc_properties[sym];
+ if (!ht) {
+ ht = new Object();
+ sc_properties[sym] = ht;
+ }
+ ht[key] = val;
+}
+
+/*** META ((export #t)) */
+function sc_getprop(sym, key) {
+ var ht = sc_properties[sym];
+ if (ht) {
+ if (key in ht)
+ return ht[key];
+ else
+ return false;
+ } else
+ return false;
+}
+
+/*** META ((export #t)) */
+function sc_rempropBang(sym, key) {
+ var ht = sc_properties[sym];
+ if (ht)
+ delete ht[key];
+}
+
+/*** META ((export #t)) */
+function sc_any2String(o) {
+ return jsstring2string(sc_toDisplayString(o));
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "==="))
+ (type bool))
+*/
+function sc_isEqv(o1, o2) {
+ return (o1 === o2);
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "==="))
+ (type bool))
+*/
+function sc_isEq(o1, o2) {
+ return (o1 === o2);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isNumber(n) {
+ return (typeof n === "number");
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isComplex(n) {
+ return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isReal(n) {
+ return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isRational(n) {
+ return sc_isReal(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isInteger(n) {
+ return (parseInt(n) === n);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix ", false")))
+*/
+// we don't have exact numbers...
+function sc_isExact(n) {
+ return false;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ", true"))
+ (type bool))
+*/
+function sc_isInexact(n) {
+ return true;
+}
+
+/*** META ((export = =fx =fl)
+ (type bool)
+ (peephole (infix 2 2 "===")))
+*/
+function sc_equal(x) {
+ for (var i = 1; i < arguments.length; i++)
+ if (x !== arguments[i])
+ return false;
+ return true;
+}
+
+/*** META ((export < <fx <fl)
+ (type bool)
+ (peephole (infix 2 2 "<")))
+*/
+function sc_less(x) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x >= arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export > >fx >fl)
+ (type bool)
+ (peephole (infix 2 2 ">")))
+*/
+function sc_greater(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x <= arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export <= <=fx <=fl)
+ (type bool)
+ (peephole (infix 2 2 "<=")))
+*/
+function sc_lessEqual(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x > arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export >= >=fl >=fx)
+ (type bool)
+ (peephole (infix 2 2 ">=")))
+*/
+function sc_greaterEqual(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x < arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "=== 0")))
+*/
+function sc_isZero(x) {
+ return (x === 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "> 0")))
+*/
+function sc_isPositive(x) {
+ return (x > 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "< 0")))
+*/
+function sc_isNegative(x) {
+ return (x < 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "%2===1")))
+*/
+function sc_isOdd(x) {
+ return (x % 2 === 1);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "%2===0")))
+*/
+function sc_isEven(x) {
+ return (x % 2 === 0);
+}
+
+/*** META ((export #t)) */
+var sc_max = Math.max;
+/*** META ((export #t)) */
+var sc_min = Math.min;
+
+/*** META ((export + +fx +fl)
+ (peephole (infix 0 #f "+" "0")))
+*/
+function sc_plus() {
+ var sum = 0;
+ for (var i = 0; i < arguments.length; i++)
+ sum += arguments[i];
+ return sum;
+}
+
+/*** META ((export * *fx *fl)
+ (peephole (infix 0 #f "*" "1")))
+*/
+function sc_multi() {
+ var product = 1;
+ for (var i = 0; i < arguments.length; i++)
+ product *= arguments[i];
+ return product;
+}
+
+/*** META ((export - -fx -fl)
+ (peephole (minus)))
+*/
+function sc_minus(x) {
+ if (arguments.length === 1)
+ return -x;
+ else {
+ var res = x;
+ for (var i = 1; i < arguments.length; i++)
+ res -= arguments[i];
+ return res;
+ }
+}
+
+/*** META ((export / /fl)
+ (peephole (div)))
+*/
+function sc_div(x) {
+ if (arguments.length === 1)
+ return 1/x;
+ else {
+ var res = x;
+ for (var i = 1; i < arguments.length; i++)
+ res /= arguments[i];
+ return res;
+ }
+}
+
+/*** META ((export #t)) */
+var sc_abs = Math.abs;
+
+/*** META ((export quotient /fx)
+ (peephole (hole 2 "parseInt(" x "/" y ")")))
+*/
+function sc_quotient(x, y) {
+ return parseInt(x / y);
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "%")))
+*/
+function sc_remainder(x, y) {
+ return x % y;
+}
+
+/*** META ((export #t)
+ (peephole (modulo)))
+*/
+function sc_modulo(x, y) {
+ var remainder = x % y;
+ // if they don't have the same sign
+ if ((remainder * y) < 0)
+ return remainder + y;
+ else
+ return remainder;
+}
+
+function sc_euclid_gcd(a, b) {
+ var temp;
+ if (a === 0) return b;
+ if (b === 0) return a;
+ if (a < 0) {a = -a;};
+ if (b < 0) {b = -b;};
+ if (b > a) {temp = a; a = b; b = temp;};
+ while (true) {
+ a %= b;
+ if(a === 0) {return b;};
+ b %= a;
+ if(b === 0) {return a;};
+ };
+ return b;
+}
+
+/*** META ((export #t)) */
+function sc_gcd() {
+ var gcd = 0;
+ for (var i = 0; i < arguments.length; i++)
+ gcd = sc_euclid_gcd(gcd, arguments[i]);
+ return gcd;
+}
+
+/*** META ((export #t)) */
+function sc_lcm() {
+ var lcm = 1;
+ for (var i = 0; i < arguments.length; i++) {
+ var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm));
+ lcm *= Math.abs(f);
+ }
+ return lcm;
+}
+
+// LIMITATION: numerator and denominator don't make sense in floating point world.
+//var SC_MAX_DECIMALS = 1000000
+//
+// function sc_numerator(x) {
+// var rounded = Math.round(x * SC_MAX_DECIMALS);
+// return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+// function sc_denominator(x) {
+// var rounded = Math.round(x * SC_MAX_DECIMALS);
+// return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+/*** META ((export #t)) */
+var sc_floor = Math.floor;
+/*** META ((export #t)) */
+var sc_ceiling = Math.ceil;
+/*** META ((export #t)) */
+var sc_truncate = parseInt;
+/*** META ((export #t)) */
+var sc_round = Math.round;
+
+// LIMITATION: sc_rationalize doesn't make sense in a floating point world.
+
+/*** META ((export #t)) */
+var sc_exp = Math.exp;
+/*** META ((export #t)) */
+var sc_log = Math.log;
+/*** META ((export #t)) */
+var sc_sin = Math.sin;
+/*** META ((export #t)) */
+var sc_cos = Math.cos;
+/*** META ((export #t)) */
+var sc_tan = Math.tan;
+/*** META ((export #t)) */
+var sc_asin = Math.asin;
+/*** META ((export #t)) */
+var sc_acos = Math.acos;
+/*** META ((export #t)) */
+var sc_atan = Math.atan;
+
+/*** META ((export #t)) */
+var sc_sqrt = Math.sqrt;
+/*** META ((export #t)) */
+var sc_expt = Math.pow;
+
+// LIMITATION: we don't have complex numbers.
+// LIMITATION: the following functions are hence not implemented.
+// LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle
+// LIMITATION: 2 argument atan
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_exact2inexact(x) {
+ return x;
+}
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_inexact2exact(x) {
+ return x;
+}
+
+function sc_number2jsstring(x, radix) {
+ if (radix)
+ return x.toString(radix);
+ else
+ return x.toString();
+}
+
+function sc_jsstring2number(s, radix) {
+ if (s === "") return false;
+
+ if (radix) {
+ var t = parseInt(s, radix);
+ if (!t && t !== 0) return false;
+ // verify that each char is in range. (parseInt ignores leading
+ // white and trailing chars)
+ var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1);
+ if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s))
+ return t;
+ else return false;
+ } else {
+ var t = +s; // does not ignore trailing chars.
+ if (!t && t !== 0) return false;
+ // simply verify that first char is not whitespace.
+ var c = s.charAt(0);
+ // if +c is 0, but the char is not "0", then we have a whitespace.
+ if (+c === 0 && c !== "0") return false;
+ return t;
+ }
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (not)))
+*/
+function sc_not(b) {
+ return b === false;
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isBoolean(b) {
+ return (b === true) || (b === false);
+}
+
+function sc_Pair(car, cdr) {
+ this.car = car;
+ this.cdr = cdr;
+}
+
+sc_Pair.prototype.toString = function() {
+ return sc_toDisplayString(this);
+};
+sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+ var current = this;
+
+ var res = "(";
+
+ while(true) {
+ res += writeOrDisplay(current.car);
+ if (sc_isPair(current.cdr)) {
+ res += " ";
+ current = current.cdr;
+ } else if (current.cdr !== null) {
+ res += " . " + writeOrDisplay(current.cdr);
+ break;
+ } else // current.cdr == null
+ break;
+ }
+
+ res += ")";
+
+ return res;
+};
+sc_Pair.prototype.sc_toDisplayString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Pair.prototype.sc_toWriteString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+// sc_Pair.prototype.sc_toWriteCircleString in IO.js
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_Pair")))
+*/
+function sc_isPair(p) {
+ return (p instanceof sc_Pair);
+}
+
+function sc_isPairEqual(p1, p2, comp) {
+ return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr));
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 "new sc_Pair(" car ", " cdr ")")))
+*/
+function sc_cons(car, cdr) {
+ return new sc_Pair(car, cdr);
+}
+
+/*** META ((export cons*)) */
+function sc_consStar() {
+ var res = arguments[arguments.length - 1];
+ for (var i = arguments.length-2; i >= 0; i--)
+ res = new sc_Pair(arguments[i], res);
+ return res;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".car")))
+*/
+function sc_car(p) {
+ return p.car;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".cdr")))
+*/
+function sc_cdr(p) {
+ return p.cdr;
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 p ".car = " val)))
+*/
+function sc_setCarBang(p, val) {
+ p.car = val;
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 p ".cdr = " val)))
+*/
+function sc_setCdrBang(p, val) {
+ p.cdr = val;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".car.car")))
+*/
+function sc_caar(p) { return p.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car")))
+*/
+function sc_cadr(p) { return p.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr")))
+*/
+function sc_cdar(p) { return p.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr")))
+*/
+function sc_cddr(p) { return p.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car")))
+*/
+function sc_caaar(p) { return p.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car")))
+*/
+function sc_cadar(p) { return p.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car")))
+*/
+function sc_caadr(p) { return p.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car")))
+*/
+function sc_caddr(p) { return p.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr")))
+*/
+function sc_cdaar(p) { return p.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr")))
+*/
+function sc_cdadr(p) { return p.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr")))
+*/
+function sc_cddar(p) { return p.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr")))
+*/
+function sc_cdddr(p) { return p.cdr.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car.car")))
+*/
+function sc_caaaar(p) { return p.car.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car.car")))
+*/
+function sc_caadar(p) { return p.car.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car.car")))
+*/
+function sc_caaadr(p) { return p.cdr.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car.car")))
+*/
+function sc_caaddr(p) { return p.cdr.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car.cdr")))
+*/
+function sc_cdaaar(p) { return p.car.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car.cdr")))
+*/
+function sc_cdadar(p) { return p.car.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car.cdr")))
+*/
+function sc_cdaadr(p) { return p.cdr.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car.cdr")))
+*/
+function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr.car")))
+*/
+function sc_cadaar(p) { return p.car.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr.car")))
+*/
+function sc_caddar(p) { return p.car.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr.car")))
+*/
+function sc_cadadr(p) { return p.cdr.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr.car")))
+*/
+function sc_cadddr(p) { return p.cdr.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr.cdr")))
+*/
+function sc_cddaar(p) { return p.car.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr.cdr")))
+*/
+function sc_cdddar(p) { return p.car.cdr.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr.cdr")))
+*/
+function sc_cddadr(p) { return p.cdr.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr.cdr")))
+*/
+function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; }
+
+/*** META ((export #t)) */
+function sc_lastPair(l) {
+ if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected");
+ var res = l;
+ var cdr = l.cdr;
+ while (sc_isPair(cdr)) {
+ res = cdr;
+ cdr = res.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " === null")))
+*/
+function sc_isNull(o) {
+ return (o === null);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isList(o) {
+ var rabbit;
+ var turtle;
+
+ var rabbit = o;
+ var turtle = o;
+ while (true) {
+ if (rabbit === null ||
+ (rabbit instanceof sc_Pair && rabbit.cdr === null))
+ return true; // end of list
+ else if ((rabbit instanceof sc_Pair) &&
+ (rabbit.cdr instanceof sc_Pair)) {
+ rabbit = rabbit.cdr.cdr;
+ turtle = turtle.cdr;
+ if (rabbit === turtle) return false; // cycle
+ } else
+ return false; // not pair
+ }
+}
+
+/*** META ((export #t)) */
+function sc_list() {
+ var res = null;
+ var a = arguments;
+ for (var i = a.length-1; i >= 0; i--)
+ res = new sc_Pair(a[i], res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_iota(num, init) {
+ var res = null;
+ if (!init) init = 0;
+ for (var i = num - 1; i >= 0; i--)
+ res = new sc_Pair(i + init, res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_makeList(nbEls, fill) {
+ var res = null;
+ for (var i = 0; i < nbEls; i++)
+ res = new sc_Pair(fill, res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_length(l) {
+ var res = 0;
+ while (l !== null) {
+ res++;
+ l = l.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_remq(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l !== null) {
+ if (l.car !== o) {
+ tail.cdr = sc_cons(l.car, null);
+ tail = tail.cdr;
+ }
+ l = l.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_remqBang(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ var needsAssig = true;
+ while (l !== null) {
+ if (l.car === o) {
+ needsAssig = true;
+ } else {
+ if (needsAssig) {
+ tail.cdr = l;
+ needsAssig = false;
+ }
+ tail = l;
+ }
+ l = l.cdr;
+ }
+ tail.cdr = null;
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_delete(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l !== null) {
+ if (!sc_isEqual(l.car, o)) {
+ tail.cdr = sc_cons(l.car, null);
+ tail = tail.cdr;
+ }
+ l = l.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_deleteBang(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ var needsAssig = true;
+ while (l !== null) {
+ if (sc_isEqual(l.car, o)) {
+ needsAssig = true;
+ } else {
+ if (needsAssig) {
+ tail.cdr = l;
+ needsAssig = false;
+ }
+ tail = l;
+ }
+ l = l.cdr;
+ }
+ tail.cdr = null;
+ return dummy.cdr;
+}
+
+function sc_reverseAppendBang(l1, l2) {
+ var res = l2;
+ while (l1 !== null) {
+ var tmp = res;
+ res = l1;
+ l1 = l1.cdr;
+ res.cdr = tmp;
+ }
+ return res;
+}
+
+function sc_dualAppend(l1, l2) {
+ if (l1 === null) return l2;
+ if (l2 === null) return l1;
+ var rev = sc_reverse(l1);
+ return sc_reverseAppendBang(rev, l2);
+}
+
+/*** META ((export #t)) */
+function sc_append() {
+ if (arguments.length === 0)
+ return null;
+ var res = arguments[arguments.length - 1];
+ for (var i = arguments.length - 2; i >= 0; i--)
+ res = sc_dualAppend(arguments[i], res);
+ return res;
+}
+
+function sc_dualAppendBang(l1, l2) {
+ if (l1 === null) return l2;
+ if (l2 === null) return l1;
+ var tmp = l1;
+ while (tmp.cdr !== null) tmp=tmp.cdr;
+ tmp.cdr = l2;
+ return l1;
+}
+
+/*** META ((export #t)) */
+function sc_appendBang() {
+ var res = null;
+ for (var i = 0; i < arguments.length; i++)
+ res = sc_dualAppendBang(res, arguments[i]);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverse(l1) {
+ var res = null;
+ while (l1 !== null) {
+ res = sc_cons(l1.car, res);
+ l1 = l1.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverseBang(l) {
+ return sc_reverseAppendBang(l, null);
+}
+
+/*** META ((export #t)) */
+function sc_listTail(l, k) {
+ var res = l;
+ for (var i = 0; i < k; i++) {
+ res = res.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_listRef(l, k) {
+ return sc_listTail(l, k).car;
+}
+
+/* // unoptimized generic versions
+function sc_memX(o, l, comp) {
+ while (l != null) {
+ if (comp(l.car, o))
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); }
+function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); }
+function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); }
+*/
+
+/* optimized versions */
+/*** META ((export #t)) */
+function sc_memq(o, l) {
+ while (l !== null) {
+ if (l.car === o)
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_memv(o, l) {
+ while (l !== null) {
+ if (l.car === o)
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_member(o, l) {
+ while (l !== null) {
+ if (sc_isEqual(l.car,o))
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+
+/* // generic unoptimized versions
+function sc_assX(o, al, comp) {
+ while (al != null) {
+ if (comp(al.car.car, o))
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); }
+function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); }
+function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); }
+*/
+// optimized versions
+/*** META ((export #t)) */
+function sc_assq(o, al) {
+ while (al !== null) {
+ if (al.car.car === o)
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_assv(o, al) {
+ while (al !== null) {
+ if (al.car.car === o)
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_assoc(o, al) {
+ while (al !== null) {
+ if (sc_isEqual(al.car.car, o))
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+
+/* can be used for mutable strings and characters */
+function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; }
+function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; }
+function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; }
+function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; }
+function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; }
+function sc_isCharStringCIEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); }
+function sc_isCharStringCILess(cs1, cs2)
+ { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreater(cs1, cs2)
+ { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); }
+function sc_isCharStringCILessEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreaterEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); }
+
+
+
+
+function sc_Char(c) {
+ var cached = sc_Char.lazy[c];
+ if (cached)
+ return cached;
+ this.val = c;
+ sc_Char.lazy[c] = this;
+ // add return, so FF does not complain.
+ return undefined;
+}
+sc_Char.lazy = new Object();
+// thanks to Eric
+sc_Char.char2readable = {
+ "\000": "#\\null",
+ "\007": "#\\bell",
+ "\010": "#\\backspace",
+ "\011": "#\\tab",
+ "\012": "#\\newline",
+ "\014": "#\\page",
+ "\015": "#\\return",
+ "\033": "#\\escape",
+ "\040": "#\\space",
+ "\177": "#\\delete",
+
+ /* poeticless names */
+ "\001": "#\\soh",
+ "\002": "#\\stx",
+ "\003": "#\\etx",
+ "\004": "#\\eot",
+ "\005": "#\\enq",
+ "\006": "#\\ack",
+
+ "\013": "#\\vt",
+ "\016": "#\\so",
+ "\017": "#\\si",
+
+ "\020": "#\\dle",
+ "\021": "#\\dc1",
+ "\022": "#\\dc2",
+ "\023": "#\\dc3",
+ "\024": "#\\dc4",
+ "\025": "#\\nak",
+ "\026": "#\\syn",
+ "\027": "#\\etb",
+
+ "\030": "#\\can",
+ "\031": "#\\em",
+ "\032": "#\\sub",
+ "\033": "#\\esc",
+ "\034": "#\\fs",
+ "\035": "#\\gs",
+ "\036": "#\\rs",
+ "\037": "#\\us"};
+
+sc_Char.readable2char = {
+ "null": "\000",
+ "bell": "\007",
+ "backspace": "\010",
+ "tab": "\011",
+ "newline": "\012",
+ "page": "\014",
+ "return": "\015",
+ "escape": "\033",
+ "space": "\040",
+ "delete": "\000",
+ "soh": "\001",
+ "stx": "\002",
+ "etx": "\003",
+ "eot": "\004",
+ "enq": "\005",
+ "ack": "\006",
+ "bel": "\007",
+ "bs": "\010",
+ "ht": "\011",
+ "nl": "\012",
+ "vt": "\013",
+ "np": "\014",
+ "cr": "\015",
+ "so": "\016",
+ "si": "\017",
+ "dle": "\020",
+ "dc1": "\021",
+ "dc2": "\022",
+ "dc3": "\023",
+ "dc4": "\024",
+ "nak": "\025",
+ "syn": "\026",
+ "etb": "\027",
+ "can": "\030",
+ "em": "\031",
+ "sub": "\032",
+ "esc": "\033",
+ "fs": "\034",
+ "gs": "\035",
+ "rs": "\036",
+ "us": "\037",
+ "sp": "\040",
+ "del": "\177"};
+
+sc_Char.prototype.toString = function() {
+ return this.val;
+};
+// sc_toDisplayString == toString
+sc_Char.prototype.sc_toWriteString = function() {
+ var entry = sc_Char.char2readable[this.val];
+ if (entry)
+ return entry;
+ else
+ return "#\\" + this.val;
+};
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "instanceof sc_Char")))
+*/
+function sc_isChar(c) {
+ return (c instanceof sc_Char);
+}
+
+/*** META ((export char=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val === " c2 ".val")))
+*/
+var sc_isCharEqual = sc_isCharStringEqual;
+/*** META ((export char<?)
+ (type bool)
+ (peephole (hole 2 c1 ".val < " c2 ".val")))
+*/
+var sc_isCharLess = sc_isCharStringLess;
+/*** META ((export char>?)
+ (type bool)
+ (peephole (hole 2 c1 ".val > " c2 ".val")))
+*/
+var sc_isCharGreater = sc_isCharStringGreater;
+/*** META ((export char<=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val <= " c2 ".val")))
+*/
+var sc_isCharLessEqual = sc_isCharStringLessEqual;
+/*** META ((export char>=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val >= " c2 ".val")))
+*/
+var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;
+/*** META ((export char-ci=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIEqual = sc_isCharStringCIEqual;
+/*** META ((export char-ci<?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILess = sc_isCharStringCILess;
+/*** META ((export char-ci>?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreater = sc_isCharStringCIGreater;
+/*** META ((export char-ci<=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILessEqual = sc_isCharStringCILessEqual;
+/*** META ((export char-ci>=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;
+
+var SC_NUMBER_CLASS = "0123456789";
+var SC_WHITESPACE_CLASS = ' \r\n\t\f';
+var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';
+var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+
+function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharAlphabetic(c)
+ { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) ||
+ sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharNumeric(c)
+ { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharWhitespace(c) {
+ var tmp = c.val;
+ return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";
+}
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharUpperCase(c)
+ { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharLowerCase(c)
+ { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }
+
+/*** META ((export #t)
+ (peephole (postfix ".val.charCodeAt(0)")))
+*/
+function sc_char2integer(c)
+ { return c.val.charCodeAt(0); }
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))
+*/
+function sc_integer2char(n)
+ { return new sc_Char(String.fromCharCode(n)); }
+
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))
+*/
+function sc_charUpcase(c)
+ { return new sc_Char(c.val.toUpperCase()); }
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))
+*/
+function sc_charDowncase(c)
+ { return new sc_Char(c.val.toLowerCase()); }
+
+function sc_makeJSStringOfLength(k, c) {
+ var fill;
+ if (c === undefined)
+ fill = " ";
+ else
+ fill = c;
+ var res = "";
+ var len = 1;
+ // every round doubles the size of fill.
+ while (k >= len) {
+ if (k & len)
+ res = res.concat(fill);
+ fill = fill.concat(fill);
+ len *= 2;
+ }
+ return res;
+}
+
+function sc_makejsString(k, c) {
+ var fill;
+ if (c)
+ fill = c.val;
+ else
+ fill = " ";
+ return sc_makeJSStringOfLength(k, fill);
+}
+
+function sc_jsstring2list(s) {
+ var res = null;
+ for (var i = s.length - 1; i >= 0; i--)
+ res = sc_cons(new sc_Char(s.charAt(i)), res);
+ return res;
+}
+
+function sc_list2jsstring(l) {
+ var a = new Array();
+ while(l !== null) {
+ a.push(l.car.val);
+ l = l.cdr;
+ }
+ return "".concat.apply("", a);
+}
+
+var sc_Vector = Array;
+
+sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+ if (this.length === 0) return "#()";
+
+ var res = "#(" + writeOrDisplay(this[0]);
+ for (var i = 1; i < this.length; i++)
+ res += " " + writeOrDisplay(this[i]);
+ res += ")";
+ return res;
+};
+sc_Vector.prototype.sc_toDisplayString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Vector.prototype.sc_toWriteString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+
+/*** META ((export vector? array?)
+ (type bool)
+ (peephole (postfix " instanceof sc_Vector")))
+*/
+function sc_isVector(v) {
+ return (v instanceof sc_Vector);
+}
+
+// only applies to vectors
+function sc_isVectorEqual(v1, v2, comp) {
+ if (v1.length !== v2.length) return false;
+ for (var i = 0; i < v1.length; i++)
+ if (!comp(v1[i], v2[i])) return false;
+ return true;
+}
+
+/*** META ((export make-vector make-array)) */
+function sc_makeVector(size, fill) {
+ var a = new sc_Vector(size);
+ if (fill !== undefined)
+ sc_vectorFillBang(a, fill);
+ return a;
+}
+
+/*** META ((export vector array)
+ (peephole (vector)))
+*/
+function sc_vector() {
+ var a = new sc_Vector();
+ for (var i = 0; i < arguments.length; i++)
+ a.push(arguments[i]);
+ return a;
+}
+
+/*** META ((export vector-length array-length)
+ (peephole (postfix ".length")))
+*/
+function sc_vectorLength(v) {
+ return v.length;
+}
+
+/*** META ((export vector-ref array-ref)
+ (peephole (hole 2 v "[" pos "]")))
+*/
+function sc_vectorRef(v, pos) {
+ return v[pos];
+}
+
+/*** META ((export vector-set! array-set!)
+ (peephole (hole 3 v "[" pos "] = " val)))
+*/
+function sc_vectorSetBang(v, pos, val) {
+ v[pos] = val;
+}
+
+/*** META ((export vector->list array->list)) */
+function sc_vector2list(a) {
+ var res = null;
+ for (var i = a.length-1; i >= 0; i--)
+ res = sc_cons(a[i], res);
+ return res;
+}
+
+/*** META ((export list->vector list->array)) */
+function sc_list2vector(l) {
+ var a = new sc_Vector();
+ while(l !== null) {
+ a.push(l.car);
+ l = l.cdr;
+ }
+ return a;
+}
+
+/*** META ((export vector-fill! array-fill!)) */
+function sc_vectorFillBang(a, fill) {
+ for (var i = 0; i < a.length; i++)
+ a[i] = fill;
+}
+
+
+/*** META ((export #t)) */
+function sc_copyVector(a, len) {
+ if (len <= a.length)
+ return a.slice(0, len);
+ else {
+ var tmp = a.concat();
+ tmp.length = len;
+ return tmp;
+ }
+}
+
+/*** META ((export #t)
+ (peephole (hole 3 a ".slice(" start "," end ")")))
+*/
+function sc_vectorCopy(a, start, end) {
+ return a.slice(start, end);
+}
+
+/*** META ((export #t)) */
+function sc_vectorCopyBang(target, tstart, source, sstart, send) {
+ if (!sstart) sstart = 0;
+ if (!send) send = source.length;
+
+ // if target == source we don't want to overwrite not yet copied elements.
+ if (tstart <= sstart) {
+ for (var i = tstart, j = sstart; j < send; i++, j++) {
+ target[i] = source[j];
+ }
+ } else {
+ var diff = send - sstart;
+ for (var i = tstart + diff - 1, j = send - 1;
+ j >= sstart;
+ i--, j--) {
+ target[i] = source[j];
+ }
+ }
+ return target;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "typeof " o " === 'function'")))
+*/
+function sc_isProcedure(o) {
+ return (typeof o === "function");
+}
+
+/*** META ((export #t)) */
+function sc_apply(proc) {
+ var args = new Array();
+ // first part of arguments are not in list-form.
+ for (var i = 1; i < arguments.length - 1; i++)
+ args.push(arguments[i]);
+ var l = arguments[arguments.length - 1];
+ while (l !== null) {
+ args.push(l.car);
+ l = l.cdr;
+ }
+ return proc.apply(null, args);
+}
+
+/*** META ((export #t)) */
+function sc_map(proc, l1) {
+ if (l1 === undefined)
+ return null;
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ var revres = null;
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ revres = sc_cons(proc.apply(null, applyArgs), revres);
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_mapBang(proc, l1) {
+ if (l1 === undefined)
+ return null;
+ // else
+ var l1_orig = l1;
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ while (l1 !== null) {
+ var tmp = l1;
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ tmp.car = proc.apply(null, applyArgs);
+ }
+ return l1_orig;
+}
+
+/*** META ((export #t)) */
+function sc_forEach(proc, l1) {
+ if (l1 === undefined)
+ return undefined;
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ proc.apply(null, applyArgs);
+ }
+ // add return so FF does not complain.
+ return undefined;
+}
+
+/*** META ((export #t)) */
+function sc_filter(proc, l1) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l1 !== null) {
+ if (proc(l1.car) !== false) {
+ tail.cdr = sc_cons(l1.car, null);
+ tail = tail.cdr;
+ }
+ l1 = l1.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_filterBang(proc, l1) {
+ var head = sc_cons("dummy", l1);
+ var it = head;
+ var next = l1;
+ while (next !== null) {
+ if (proc(next.car) !== false) {
+ it.cdr = next
+ it = next;
+ }
+ next = next.cdr;
+ }
+ it.cdr = null;
+ return head.cdr;
+}
+
+function sc_filterMap1(proc, l1) {
+ var revres = null;
+ while (l1 !== null) {
+ var tmp = proc(l1.car)
+ if (tmp !== false) revres = sc_cons(tmp, revres);
+ l1 = l1.cdr;
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+function sc_filterMap2(proc, l1, l2) {
+ var revres = null;
+ while (l1 !== null) {
+ var tmp = proc(l1.car, l2.car);
+ if(tmp !== false) revres = sc_cons(tmp, revres);
+ l1 = l1.cdr;
+ l2 = l2.cdr
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_filterMap(proc, l1, l2, l3) {
+ if (l2 === undefined)
+ return sc_filterMap1(proc, l1);
+ else if (l3 === undefined)
+ return sc_filterMap2(proc, l1, l2);
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ var revres = null;
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ var tmp = proc.apply(null, applyArgs);
+ if(tmp !== false) revres = sc_cons(tmp, revres);
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_any(proc, l) {
+ var revres = null;
+ while (l !== null) {
+ var tmp = proc(l.car);
+ if(tmp !== false) return tmp;
+ l = l.cdr;
+ }
+ return false;
+}
+
+/*** META ((export any?)
+ (peephole (hole 2 "sc_any(" proc "," l ") !== false")))
+*/
+function sc_anyPred(proc, l) {
+ return sc_any(proc, l)!== false;
+}
+
+/*** META ((export #t)) */
+function sc_every(proc, l) {
+ var revres = null;
+ var tmp = true;
+ while (l !== null) {
+ tmp = proc(l.car);
+ if (tmp === false) return false;
+ l = l.cdr;
+ }
+ return tmp;
+}
+
+/*** META ((export every?)
+ (peephole (hole 2 "sc_every(" proc "," l ") !== false")))
+*/
+function sc_everyPred(proc, l) {
+ var tmp = sc_every(proc, l);
+ if (tmp !== false) return true;
+ return false;
+}
+
+/*** META ((export #t)
+ (peephole (postfix "()")))
+*/
+function sc_force(o) {
+ return o();
+}
+
+/*** META ((export #t)) */
+function sc_makePromise(proc) {
+ var isResultReady = false;
+ var result = undefined;
+ return function() {
+ if (!isResultReady) {
+ var tmp = proc();
+ if (!isResultReady) {
+ isResultReady = true;
+ result = tmp;
+ }
+ }
+ return result;
+ };
+}
+
+function sc_Values(values) {
+ this.values = values;
+}
+
+/*** META ((export #t)
+ (peephole (values)))
+*/
+function sc_values() {
+ if (arguments.length === 1)
+ return arguments[0];
+ else
+ return new sc_Values(arguments);
+}
+
+/*** META ((export #t)) */
+function sc_callWithValues(producer, consumer) {
+ var produced = producer();
+ if (produced instanceof sc_Values)
+ return consumer.apply(null, produced.values);
+ else
+ return consumer(produced);
+}
+
+/*** META ((export #t)) */
+function sc_dynamicWind(before, thunk, after) {
+ before();
+ try {
+ var res = thunk();
+ return res;
+ } finally {
+ after();
+ }
+}
+
+
+// TODO: eval/scheme-report-environment/null-environment/interaction-environment
+
+// LIMITATION: 'load' doesn't exist without files.
+// LIMITATION: transcript-on/transcript-off doesn't exist without files.
+
+
+function sc_Struct(name) {
+ this.name = name;
+}
+sc_Struct.prototype.sc_toDisplayString = function() {
+ return "#<struct" + sc_hash(this) + ">";
+};
+sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString;
+
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Struct(" name ")")))
+*/
+function sc_makeStruct(name) {
+ return new sc_Struct(name);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_Struct")))
+*/
+function sc_isStruct(o) {
+ return (o instanceof sc_Struct);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")")))
+*/
+function sc_isStructNamed(name, s) {
+ return ((s instanceof sc_Struct) && (s.name === name));
+}
+
+/*** META ((export struct-field)
+ (peephole (hole 3 0 "[" 2 "]")))
+*/
+function sc_getStructField(s, name, field) {
+ return s[field];
+}
+
+/*** META ((export struct-field-set!)
+ (peephole (hole 4 0 "[" 2 "] = " 3)))
+*/
+function sc_setStructFieldBang(s, name, field, val) {
+ s[field] = val;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "~")))
+*/
+function sc_bitNot(x) {
+ return ~x;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "&")))
+*/
+function sc_bitAnd(x, y) {
+ return x & y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "|")))
+*/
+function sc_bitOr(x, y) {
+ return x | y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "^")))
+*/
+function sc_bitXor(x, y) {
+ return x ^ y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "<<")))
+*/
+function sc_bitLsh(x, y) {
+ return x << y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 ">>")))
+*/
+function sc_bitRsh(x, y) {
+ return x >> y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 ">>>")))
+*/
+function sc_bitUrsh(x, y) {
+ return x >>> y;
+}
+
+/*** META ((export js-field js-property)
+ (peephole (hole 2 o "[" field "]")))
+*/
+function sc_jsField(o, field) {
+ return o[field];
+}
+
+/*** META ((export js-field-set! js-property-set!)
+ (peephole (hole 3 o "[" field "] = " val)))
+*/
+function sc_setJsFieldBang(o, field, val) {
+ return o[field] = val;
+}
+
+/*** META ((export js-field-delete! js-property-delete!)
+ (peephole (hole 2 "delete" o "[" field "]")))
+*/
+function sc_deleteJsFieldBang(o, field) {
+ delete o[field];
+}
+
+/*** META ((export #t)
+ (peephole (jsCall)))
+*/
+function sc_jsCall(o, fun) {
+ var args = new Array();
+ for (var i = 2; i < arguments.length; i++)
+ args[i-2] = arguments[i];
+ return fun.apply(o, args);
+}
+
+/*** META ((export #t)
+ (peephole (jsMethodCall)))
+*/
+function sc_jsMethodCall(o, field) {
+ var args = new Array();
+ for (var i = 2; i < arguments.length; i++)
+ args[i-2] = arguments[i];
+ return o[field].apply(o, args);
+}
+
+/*** META ((export new js-new)
+ (peephole (jsNew)))
+*/
+function sc_jsNew(c) {
+ var evalStr = "new c(";
+ evalStr +=arguments.length > 1? "arguments[1]": "";
+ for (var i = 2; i < arguments.length; i++)
+ evalStr += ", arguments[" + i + "]";
+ evalStr +=")";
+ return eval(evalStr);
+}
+
+// ======================== RegExp ====================
+/*** META ((export #t)) */
+function sc_pregexp(re) {
+ return new RegExp(sc_string2jsstring(re));
+}
+
+/*** META ((export #t)) */
+function sc_pregexpMatch(re, s) {
+ var reg = (re instanceof RegExp) ? re : sc_pregexp(re);
+ var tmp = reg.exec(sc_string2jsstring(s));
+
+ if (tmp == null) return false;
+
+ var res = null;
+ for (var i = tmp.length-1; i >= 0; i--) {
+ if (tmp[i] !== null) {
+ res = sc_cons(sc_jsstring2string(tmp[i]), res);
+ } else {
+ res = sc_cons(false, res);
+ }
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_pregexpReplace(re, s1, s2) {
+ var reg;
+ var jss1 = sc_string2jsstring(s1);
+ var jss2 = sc_string2jsstring(s2);
+
+ if (re instanceof RegExp) {
+ if (re.global)
+ reg = re;
+ else
+ reg = new RegExp(re.source);
+ } else {
+ reg = new RegExp(sc_string2jsstring(re));
+ }
+
+ return jss1.replace(reg, jss2);
+}
+
+/*** META ((export pregexp-replace*)) */
+function sc_pregexpReplaceAll(re, s1, s2) {
+ var reg;
+ var jss1 = sc_string2jsstring(s1);
+ var jss2 = sc_string2jsstring(s2);
+
+ if (re instanceof RegExp) {
+ if (re.global)
+ reg = re;
+ else
+ reg = new RegExp(re.source, "g");
+ } else {
+ reg = new RegExp(sc_string2jsstring(re), "g");
+ }
+
+ return jss1.replace(reg, jss2);
+}
+
+/*** META ((export #t)) */
+function sc_pregexpSplit(re, s) {
+ var reg = ((re instanceof RegExp) ?
+ re :
+ new RegExp(sc_string2jsstring(re)));
+ var jss = sc_string2jsstring(s);
+ var tmp = jss.split(reg);
+
+ if (tmp == null) return false;
+
+ return sc_vector2list(tmp);
+}
+
+
+/* =========================================================================== */
+/* Other library stuff */
+/* =========================================================================== */
+
+/*** META ((export #t)
+ (peephole (hole 1 "Math.floor(Math.random()*" 'n ")")))
+*/
+function sc_random(n) {
+ return Math.floor(Math.random()*n);
+}
+
+/*** META ((export current-date)
+ (peephole (hole 0 "new Date()")))
+*/
+function sc_currentDate() {
+ return new Date();
+}
+
+function sc_Hashtable() {
+}
+sc_Hashtable.prototype.toString = function() {
+ return "#{%hashtable}";
+};
+// sc_toWriteString == sc_toDisplayString == toString
+
+function sc_HashtableElement(key, val) {
+ this.key = key;
+ this.val = val;
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "new sc_Hashtable()")))
+*/
+function sc_makeHashtable() {
+ return new sc_Hashtable();
+}
+
+/*** META ((export #t)) */
+function sc_hashtablePutBang(ht, key, val) {
+ var hash = sc_hash(key);
+ ht[hash] = new sc_HashtableElement(key, val);
+}
+
+/*** META ((export #t)) */
+function sc_hashtableGet(ht, key) {
+ var hash = sc_hash(key);
+ if (hash in ht)
+ return ht[hash].val;
+ else
+ return false;
+}
+
+/*** META ((export #t)) */
+function sc_hashtableForEach(ht, f) {
+ for (var v in ht) {
+ if (ht[v] instanceof sc_HashtableElement)
+ f(ht[v].key, ht[v].val);
+ }
+}
+
+/*** META ((export hashtable-contains?)
+ (peephole (hole 2 "sc_hash(" 1 ") in " 0)))
+*/
+function sc_hashtableContains(ht, key) {
+ var hash = sc_hash(key);
+ if (hash in ht)
+ return true;
+ else
+ return false;
+}
+
+var SC_HASH_COUNTER = 0;
+
+function sc_hash(o) {
+ if (o === null)
+ return "null";
+ else if (o === undefined)
+ return "undefined";
+ else if (o === true)
+ return "true";
+ else if (o === false)
+ return "false";
+ else if (typeof o === "number")
+ return "num-" + o;
+ else if (typeof o === "string")
+ return "jsstr-" + o;
+ else if (o.sc_getHash)
+ return o.sc_getHash();
+ else
+ return sc_counterHash.call(o);
+}
+function sc_counterHash() {
+ if (!this.sc_hash) {
+ this.sc_hash = "hash-" + SC_HASH_COUNTER;
+ SC_HASH_COUNTER++;
+ }
+ return this.sc_hash;
+}
+
+function sc_Trampoline(args, maxTailCalls) {
+ this['__trampoline return__'] = true;
+ this.args = args;
+ this.MAX_TAIL_CALLs = maxTailCalls;
+}
+// TODO: call/cc stuff
+sc_Trampoline.prototype.restart = function() {
+ var o = this;
+ while (true) {
+ // set both globals.
+ SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1;
+ var fun = o.args.callee;
+ var res = fun.apply(SC_TAIL_OBJECT, o.args);
+ if (res instanceof sc_Trampoline)
+ o = res;
+ else
+ return res;
+ }
+}
+
+/*** META ((export bind-exit-lambda)) */
+function sc_bindExitLambda(proc) {
+ var escape_obj = new sc_BindExitException();
+ var escape = function(res) {
+ escape_obj.res = res;
+ throw escape_obj;
+ };
+ try {
+ return proc(escape);
+ } catch(e) {
+ if (e === escape_obj) {
+ return e.res;
+ }
+ throw e;
+ }
+}
+function sc_BindExitException() {
+ this._internalException = true;
+}
+
+var SC_SCM2JS_GLOBALS = new Object();
+
+// default tail-call depth.
+// normally the program should set it again. but just in case...
+var SC_TAIL_OBJECT = new Object();
+SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT;
+// ======================== I/O =======================
+
+/*------------------------------------------------------------------*/
+
+function sc_EOF() {
+}
+var SC_EOF_OBJECT = new sc_EOF();
+
+function sc_Port() {
+}
+
+/* --------------- Input ports -------------------------------------*/
+
+function sc_InputPort() {
+}
+sc_InputPort.prototype = new sc_Port();
+
+sc_InputPort.prototype.peekChar = function() {
+ if (!("peeked" in this))
+ this.peeked = this.getNextChar();
+ return this.peeked;
+}
+sc_InputPort.prototype.readChar = function() {
+ var tmp = this.peekChar();
+ delete this.peeked;
+ return tmp;
+}
+sc_InputPort.prototype.isCharReady = function() {
+ return true;
+}
+sc_InputPort.prototype.close = function() {
+ // do nothing
+}
+
+/* .............. String port ..........................*/
+function sc_ErrorInputPort() {
+};
+sc_ErrorInputPort.prototype = new sc_InputPort();
+sc_ErrorInputPort.prototype.getNextChar = function() {
+ throw "can't read from error-port.";
+};
+sc_ErrorInputPort.prototype.isCharReady = function() {
+ return false;
+};
+
+
+/* .............. String port ..........................*/
+
+function sc_StringInputPort(jsStr) {
+ // we are going to do some charAts on the str.
+ // instead of recreating all the time a String-object, we
+ // create one in the beginning. (not sure, if this is really an optim)
+ this.str = new String(jsStr);
+ this.pos = 0;
+}
+sc_StringInputPort.prototype = new sc_InputPort();
+sc_StringInputPort.prototype.getNextChar = function() {
+ if (this.pos >= this.str.length)
+ return SC_EOF_OBJECT;
+ return this.str.charAt(this.pos++);
+};
+
+/* ------------- Read and other lib-funs -------------------------------*/
+function sc_Token(type, val, pos) {
+ this.type = type;
+ this.val = val;
+ this.pos = pos;
+}
+sc_Token.EOF = 0/*EOF*/;
+sc_Token.OPEN_PAR = 1/*OPEN_PAR*/;
+sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/;
+sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/;
+sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/;
+sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/;
+sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/;
+sc_Token.WHITESPACE = 7/*WHITESPACE*/;
+sc_Token.QUOTE = 8/*QUOTE*/;
+sc_Token.ID = 9/*ID*/;
+sc_Token.DOT = 10/*DOT*/;
+sc_Token.STRING = 11/*STRING*/;
+sc_Token.NUMBER = 12/*NUMBER*/;
+sc_Token.ERROR = 13/*ERROR*/;
+sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/;
+sc_Token.TRUE = 15/*TRUE*/;
+sc_Token.FALSE = 16/*FALSE*/;
+sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/;
+sc_Token.REFERENCE = 18/*REFERENCE*/;
+sc_Token.STORE = 19/*STORE*/;
+sc_Token.CHAR = 20/*CHAR*/;
+
+var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~";
+function sc_Tokenizer(port) {
+ this.port = port;
+}
+sc_Tokenizer.prototype.peekToken = function() {
+ if (this.peeked)
+ return this.peeked;
+ var newToken = this.nextToken();
+ this.peeked = newToken;
+ return newToken;
+};
+sc_Tokenizer.prototype.readToken = function() {
+ var tmp = this.peekToken();
+ delete this.peeked;
+ return tmp;
+};
+sc_Tokenizer.prototype.nextToken = function() {
+ var port = this.port;
+
+ function isNumberChar(c) {
+ return (c >= "0" && c <= "9");
+ };
+ function isIdOrNumberChar(c) {
+ return SC_ID_CLASS.indexOf(c) != -1 || // ID-char
+ (c >= "0" && c <= "9");
+ }
+ function isWhitespace(c) {
+ return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f";
+ };
+ function isWhitespaceOrEOF(c) {
+ return isWhitespace(c) || c === SC_EOF_OBJECT;
+ };
+
+ function readString() {
+ res = "";
+ while (true) {
+ var c = port.readChar();
+ switch (c) {
+ case '"':
+ return new sc_Token(11/*STRING*/, res);
+ case "\\":
+ var tmp = port.readChar();
+ switch (tmp) {
+ case '0': res += "\0"; break;
+ case 'a': res += "\a"; break;
+ case 'b': res += "\b"; break;
+ case 'f': res += "\f"; break;
+ case 'n': res += "\n"; break;
+ case 'r': res += "\r"; break;
+ case 't': res += "\t"; break;
+ case 'v': res += "\v"; break;
+ case '"': res += '"'; break;
+ case '\\': res += '\\'; break;
+ case 'x':
+ /* hexa-number */
+ var nb = 0;
+ while (true) {
+ var hexC = port.peekChar();
+ if (hexC >= '0' && hexC <= '9') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0);
+ } else if (hexC >= 'a' && hexC <= 'f') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0);
+ } else if (hexC >= 'A' && hexC <= 'F') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0);
+ } else {
+ // next char isn't part of hex.
+ res += String.fromCharCode(nb);
+ break;
+ }
+ }
+ break;
+ default:
+ if (tmp === SC_EOF_OBJECT) {
+ return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+ }
+ res += tmp;
+ }
+ break;
+ default:
+ if (c === SC_EOF_OBJECT) {
+ return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+ }
+ res += c;
+ }
+ }
+ };
+ function readIdOrNumber(firstChar) {
+ var res = firstChar;
+ while (isIdOrNumberChar(port.peekChar()))
+ res += port.readChar();
+ if (isNaN(res))
+ return new sc_Token(9/*ID*/, res);
+ else
+ return new sc_Token(12/*NUMBER*/, res - 0);
+ };
+
+ function skipWhitespaceAndComments() {
+ var done = false;
+ while (!done) {
+ done = true;
+ while (isWhitespace(port.peekChar()))
+ port.readChar();
+ if (port.peekChar() === ';') {
+ port.readChar();
+ done = false;
+ while (true) {
+ curChar = port.readChar();
+ if (curChar === SC_EOF_OBJECT ||
+ curChar === '\n')
+ break;
+ }
+ }
+ }
+ };
+
+ function readDot() {
+ if (isWhitespace(port.peekChar()))
+ return new sc_Token(10/*DOT*/);
+ else
+ return readIdOrNumber(".");
+ };
+
+ function readSharp() {
+ var c = port.readChar();
+ if (isWhitespace(c))
+ return new sc_Token(13/*ERROR*/, "bad #-pattern0.");
+
+ // reference
+ if (isNumberChar(c)) {
+ var nb = c - 0;
+ while (isNumberChar(port.peekChar()))
+ nb = nb*10 + (port.readChar() - 0);
+ switch (port.readChar()) {
+ case '#':
+ return new sc_Token(18/*REFERENCE*/, nb);
+ case '=':
+ return new sc_Token(19/*STORE*/, nb);
+ default:
+ return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb);
+ }
+ }
+
+ if (c === "(")
+ return new sc_Token(14/*VECTOR_BEGIN*/);
+
+ if (c === "\\") { // character
+ var tmp = ""
+ while (!isWhitespaceOrEOF(port.peekChar()))
+ tmp += port.readChar();
+ switch (tmp.length) {
+ case 0: // it's escaping a whitespace char:
+ if (sc_isEOFObject(port.peekChar))
+ return new sc_Token(13/*ERROR*/, "bad #-pattern2.");
+ else
+ return new sc_Token(20/*CHAR*/, port.readChar());
+ case 1:
+ return new sc_Token(20/*CHAR*/, tmp);
+ default:
+ var entry = sc_Char.readable2char[tmp.toLowerCase()];
+ if (entry)
+ return new sc_Token(20/*CHAR*/, entry);
+ else
+ return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp);
+ }
+ }
+
+ // some constants (#t, #f, #unspecified)
+ var res;
+ var needing;
+ switch (c) {
+ case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break;
+ case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break;
+ case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break;
+ default:
+ return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c);
+ }
+ while(true) {
+ c = port.peekChar();
+ if ((isWhitespaceOrEOF(c) || c === ')') &&
+ needing == "")
+ return res;
+ else if (isWhitespace(c) || needing == "")
+ return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing);
+ else if (needing.charAt(0) == c) {
+ port.readChar(); // consume
+ needing = needing.slice(1);
+ } else
+ return new sc_Token(13/*ERROR*/, "bad #-pattern5");
+ }
+
+ };
+
+ skipWhitespaceAndComments();
+ var curChar = port.readChar();
+ if (curChar === SC_EOF_OBJECT)
+ return new sc_Token(0/*EOF*/, curChar);
+ switch (curChar)
+ {
+ case " ":
+ case "\n":
+ case "\t":
+ return readWhitespace();
+ case "(":
+ return new sc_Token(1/*OPEN_PAR*/);
+ case ")":
+ return new sc_Token(2/*CLOSE_PAR*/);
+ case "{":
+ return new sc_Token(3/*OPEN_BRACE*/);
+ case "}":
+ return new sc_Token(4/*CLOSE_BRACE*/);
+ case "[":
+ return new sc_Token(5/*OPEN_BRACKET*/);
+ case "]":
+ return new sc_Token(6/*CLOSE_BRACKET*/);
+ case "'":
+ return new sc_Token(8/*QUOTE*/);
+ case "#":
+ return readSharp();
+ case ".":
+ return readDot();
+ case '"':
+ return readString();
+ default:
+ if (isIdOrNumberChar(curChar))
+ return readIdOrNumber(curChar);
+ throw "unexpected character: " + curChar;
+ }
+};
+
+function sc_Reader(tokenizer) {
+ this.tokenizer = tokenizer;
+ this.backref = new Array();
+}
+sc_Reader.prototype.read = function() {
+ function readList(listBeginType) {
+ function matchesPeer(open, close) {
+ return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/
+ || open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/
+ || open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/;
+ };
+ var res = null;
+
+ while (true) {
+ var token = tokenizer.peekToken();
+
+ switch (token.type) {
+ case 2/*CLOSE_PAR*/:
+ case 4/*CLOSE_BRACE*/:
+ case 6/*CLOSE_BRACKET*/:
+ if (matchesPeer(listBeginType, token.type)) {
+ tokenizer.readToken(); // consume token
+ return sc_reverseBang(res);
+ } else
+ throw "closing par doesn't match: " + listBeginType
+ + " " + listEndType;
+
+ case 0/*EOF*/:
+ throw "unexpected end of file";
+
+ case 10/*DOT*/:
+ tokenizer.readToken(); // consume token
+ var cdr = this.read();
+ var par = tokenizer.readToken();
+ if (!matchesPeer(listBeginType, par.type))
+ throw "closing par doesn't match: " + listBeginType
+ + " " + par.type;
+ else
+ return sc_reverseAppendBang(res, cdr);
+
+
+ default:
+ res = sc_cons(this.read(), res);
+ }
+ }
+ };
+ function readQuote() {
+ return sc_cons("quote", sc_cons(this.read(), null));
+ };
+ function readVector() {
+ // opening-parenthesis is already consumed
+ var a = new Array();
+ while (true) {
+ var token = tokenizer.peekToken();
+ switch (token.type) {
+ case 2/*CLOSE_PAR*/:
+ tokenizer.readToken();
+ return a;
+
+ default:
+ a.push(this.read());
+ }
+ }
+ };
+
+ function storeRefence(nb) {
+ var tmp = this.read();
+ this.backref[nb] = tmp;
+ return tmp;
+ };
+
+ function readReference(nb) {
+ if (nb in this.backref)
+ return this.backref[nb];
+ else
+ throw "bad reference: " + nb;
+ };
+
+ var tokenizer = this.tokenizer;
+
+ var token = tokenizer.readToken();
+
+ // handle error
+ if (token.type === 13/*ERROR*/)
+ throw token.val;
+
+ switch (token.type) {
+ case 1/*OPEN_PAR*/:
+ case 3/*OPEN_BRACE*/:
+ case 5/*OPEN_BRACKET*/:
+ return readList.call(this, token.type);
+ case 8/*QUOTE*/:
+ return readQuote.call(this);
+ case 11/*STRING*/:
+ return sc_jsstring2string(token.val);
+ case 20/*CHAR*/:
+ return new sc_Char(token.val);
+ case 14/*VECTOR_BEGIN*/:
+ return readVector.call(this);
+ case 18/*REFERENCE*/:
+ return readReference.call(this, token.val);
+ case 19/*STORE*/:
+ return storeRefence.call(this, token.val);
+ case 9/*ID*/:
+ return sc_jsstring2symbol(token.val);
+ case 0/*EOF*/:
+ case 12/*NUMBER*/:
+ case 15/*TRUE*/:
+ case 16/*FALSE*/:
+ case 17/*UNSPECIFIED*/:
+ return token.val;
+ default:
+ throw "unexpected token " + token.type + " " + token.val;
+ }
+};
+
+/*** META ((export #t)) */
+function sc_read(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var reader = new sc_Reader(new sc_Tokenizer(port));
+ return reader.read();
+}
+/*** META ((export #t)) */
+function sc_readChar(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var t = port.readChar();
+ return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)) */
+function sc_peekChar(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var t = port.peekChar();
+ return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharReady(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ return port.isCharReady();
+}
+/*** META ((export #t)
+ (peephole (postfix ".close()")))
+*/
+function sc_closeInputPort(p) {
+ return p.close();
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_InputPort")))
+*/
+function sc_isInputPort(o) {
+ return (o instanceof sc_InputPort);
+}
+
+/*** META ((export eof-object?)
+ (type bool)
+ (peephole (postfix " === SC_EOF_OBJECT")))
+*/
+function sc_isEOFObject(o) {
+ return o === SC_EOF_OBJECT;
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "SC_DEFAULT_IN")))
+*/
+function sc_currentInputPort() {
+ return SC_DEFAULT_IN;
+}
+
+/* ------------ file operations are not supported -----------*/
+/*** META ((export #t)) */
+function sc_callWithInputFile(s, proc) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_callWithOutputFile(s, proc) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromFile(s, thunk) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToFile(s, thunk) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openInputFile(s) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openOutputFile(s) {
+ throw "can't open " + s;
+}
+
+/* ----------------------------------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_basename(p) {
+ var i = p.lastIndexOf('/');
+
+ if(i >= 0)
+ return p.substring(i + 1, p.length);
+ else
+ return '';
+}
+
+/*** META ((export #t)) */
+function sc_dirname(p) {
+ var i = p.lastIndexOf('/');
+
+ if(i >= 0)
+ return p.substring(0, i);
+ else
+ return '';
+}
+
+/* ----------------------------------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_withInputFromPort(p, thunk) {
+ try {
+ var tmp = SC_DEFAULT_IN; // THREAD: shared var.
+ SC_DEFAULT_IN = p;
+ return thunk();
+ } finally {
+ SC_DEFAULT_IN = tmp;
+ }
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromString(s, thunk) {
+ return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk);
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToPort(p, thunk) {
+ try {
+ var tmp = SC_DEFAULT_OUT; // THREAD: shared var.
+ SC_DEFAULT_OUT = p;
+ return thunk();
+ } finally {
+ SC_DEFAULT_OUT = tmp;
+ }
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToString(thunk) {
+ var p = new sc_StringOutputPort();
+ sc_withOutputToPort(p, thunk);
+ return p.close();
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToProcedure(proc, thunk) {
+ var t = function(s) { proc(sc_jsstring2string(s)); };
+ return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk);
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "new sc_StringOutputPort()")))
+*/
+function sc_openOutputString() {
+ return new sc_StringOutputPort();
+}
+
+/*** META ((export #t)) */
+function sc_openInputString(str) {
+ return new sc_StringInputPort(sc_string2jsstring(str));
+}
+
+/* ----------------------------------------------------------------------------*/
+
+function sc_OutputPort() {
+}
+sc_OutputPort.prototype = new sc_Port();
+sc_OutputPort.prototype.appendJSString = function(obj) {
+ /* do nothing */
+}
+sc_OutputPort.prototype.close = function() {
+ /* do nothing */
+}
+
+function sc_StringOutputPort() {
+ this.res = "";
+}
+sc_StringOutputPort.prototype = new sc_OutputPort();
+sc_StringOutputPort.prototype.appendJSString = function(s) {
+ this.res += s;
+}
+sc_StringOutputPort.prototype.close = function() {
+ return sc_jsstring2string(this.res);
+}
+
+/*** META ((export #t)) */
+function sc_getOutputString(sp) {
+ return sc_jsstring2string(sp.res);
+}
+
+
+function sc_ErrorOutputPort() {
+}
+sc_ErrorOutputPort.prototype = new sc_OutputPort();
+sc_ErrorOutputPort.prototype.appendJSString = function(s) {
+ throw "don't write on ErrorPort!";
+}
+sc_ErrorOutputPort.prototype.close = function() {
+ /* do nothing */
+}
+
+function sc_GenericOutputPort(appendJSString, close) {
+ this.appendJSString = appendJSString;
+ if (close)
+ this.close = close;
+}
+sc_GenericOutputPort.prototype = new sc_OutputPort();
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_OutputPort")))
+*/
+function sc_isOutputPort(o) {
+ return (o instanceof sc_OutputPort);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".close()")))
+*/
+function sc_closeOutputPort(p) {
+ return p.close();
+}
+
+/* ------------------ write ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_write(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toWriteString(o));
+}
+
+function sc_toWriteString(o) {
+ if (o === null)
+ return "()";
+ else if (o === true)
+ return "#t";
+ else if (o === false)
+ return "#f";
+ else if (o === undefined)
+ return "#unspecified";
+ else if (typeof o === 'function')
+ return "#<procedure " + sc_hash(o) + ">";
+ else if (o.sc_toWriteString)
+ return o.sc_toWriteString();
+ else
+ return o.toString();
+}
+
+function sc_escapeWriteString(s) {
+ var res = "";
+ var j = 0;
+ for (i = 0; i < s.length; i++) {
+ switch (s.charAt(i)) {
+ case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break;
+ case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break;
+ case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break;
+ case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break;
+ case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break;
+ case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break;
+ case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break;
+ case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break;
+ case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break;
+ default:
+ var c = s.charAt(i);
+ if ("\a" !== "a" && c == "\a") {
+ res += s.substring(j, i) + "\\a"; j = i + 1; continue;
+ }
+ if ("\v" !== "v" && c == "\v") {
+ res += s.substring(j, i) + "\\v"; j = i + 1; continue;
+ }
+ //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) {
+ // CARE: Manuel is this OK with HOP?
+ if (s.charAt(i) < ' ') {
+ /* non printable character and special chars */
+ res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16);
+ j = i + 1;
+ }
+ // else just let i increase...
+ }
+ }
+ res += s.substring(j, i);
+ return res;
+}
+
+/* ------------------ display ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_display(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toDisplayString(o));
+}
+
+function sc_toDisplayString(o) {
+ if (o === null)
+ return "()";
+ else if (o === true)
+ return "#t";
+ else if (o === false)
+ return "#f";
+ else if (o === undefined)
+ return "#unspecified";
+ else if (typeof o === 'function')
+ return "#<procedure " + sc_hash(o) + ">";
+ else if (o.sc_toDisplayString)
+ return o.sc_toDisplayString();
+ else
+ return o.toString();
+}
+
+/* ------------------ newline ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_newline(p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString("\n");
+}
+
+/* ------------------ write-char ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeChar(c, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(c.val);
+}
+
+/* ------------------ write-circle ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeCircle(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toWriteCircleString(o));
+}
+
+function sc_toWriteCircleString(o) {
+ var symb = sc_gensym("writeCircle");
+ var nbPointer = new Object();
+ nbPointer.nb = 0;
+ sc_prepWriteCircle(o, symb, nbPointer);
+ return sc_genToWriteCircleString(o, symb);
+}
+
+function sc_prepWriteCircle(o, symb, nbPointer) {
+ // TODO sc_Struct
+ if (o instanceof sc_Pair ||
+ o instanceof sc_Vector) {
+ if (o[symb] !== undefined) {
+ // not the first visit.
+ o[symb]++;
+ // unless there is already a number, assign one.
+ if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++;
+ return;
+ }
+ o[symb] = 0;
+ if (o instanceof sc_Pair) {
+ sc_prepWriteCircle(o.car, symb, nbPointer);
+ sc_prepWriteCircle(o.cdr, symb, nbPointer);
+ } else {
+ for (var i = 0; i < o.length; i++)
+ sc_prepWriteCircle(o[i], symb, nbPointer);
+ }
+ }
+}
+
+function sc_genToWriteCircleString(o, symb) {
+ if (!(o instanceof sc_Pair ||
+ o instanceof sc_Vector))
+ return sc_toWriteString(o);
+ return o.sc_toWriteCircleString(symb);
+}
+sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) {
+ if (this[symb + "use"]) { // use-flag is set. Just use it.
+ var nb = this[symb + "nb"];
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+ if (inList)
+ return '. #' + nb + '#';
+ else
+ return '#' + nb + '#';
+ }
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+
+ var res = "";
+
+ if (this[symb] !== undefined) { // implies > 0
+ this[symb + "use"] = true;
+ if (inList)
+ res += '. #' + this[symb + "nb"] + '=';
+ else
+ res += '#' + this[symb + "nb"] + '=';
+ inList = false;
+ }
+
+ if (!inList)
+ res += "(";
+
+ // print car
+ res += sc_genToWriteCircleString(this.car, symb);
+
+ if (sc_isPair(this.cdr)) {
+ res += " " + this.cdr.sc_toWriteCircleString(symb, true);
+ } else if (this.cdr !== null) {
+ res += " . " + sc_genToWriteCircleString(this.cdr, symb);
+ }
+ if (!inList)
+ res += ")";
+ return res;
+};
+sc_Vector.prototype.sc_toWriteCircleString = function(symb) {
+ if (this[symb + "use"]) { // use-flag is set. Just use it.
+ var nb = this[symb + "nb"];
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+ return '#' + nb + '#';
+ }
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+
+ var res = "";
+ if (this[symb] !== undefined) { // implies > 0
+ this[symb + "use"] = true;
+ res += '#' + this[symb + "nb"] + '=';
+ }
+ res += "#(";
+ for (var i = 0; i < this.length; i++) {
+ res += sc_genToWriteCircleString(this[i], symb);
+ if (i < this.length - 1) res += " ";
+ }
+ res += ")";
+ return res;
+};
+
+
+/* ------------------ print ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_print(s) {
+ if (arguments.length === 1) {
+ sc_display(s);
+ sc_newline();
+ }
+ else {
+ for (var i = 0; i < arguments.length; i++)
+ sc_display(arguments[i]);
+ sc_newline();
+ }
+}
+
+/* ------------------ format ---------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_format(s, args) {
+ var len = s.length;
+ var p = new sc_StringOutputPort();
+ var i = 0, j = 1;
+
+ while( i < len ) {
+ var i2 = s.indexOf("~", i);
+
+ if (i2 == -1) {
+ p.appendJSString( s.substring( i, len ) );
+ return p.close();
+ } else {
+ if (i2 > i) {
+ if (i2 == (len - 1)) {
+ p.appendJSString(s.substring(i, len));
+ return p.close();
+ } else {
+ p.appendJSString(s.substring(i, i2));
+ i = i2;
+ }
+ }
+
+ switch(s.charCodeAt(i2 + 1)) {
+ case 65:
+ case 97:
+ // a
+ sc_display(arguments[j], p);
+ i += 2; j++;
+ break;
+
+ case 83:
+ case 115:
+ // s
+ sc_write(arguments[j], p);
+ i += 2; j++;
+ break;
+
+ case 86:
+ case 118:
+ // v
+ sc_display(arguments[j], p);
+ p.appendJSString("\n");
+ i += 2; j++;
+ break;
+
+ case 67:
+ case 99:
+ // c
+ p.appendJSString(String.fromCharCode(arguments[j]));
+ i += 2; j++;
+ break;
+
+ case 88:
+ case 120:
+ // x
+ p.appendJSString(arguments[j].toString(6));
+ i += 2; j++;
+ break;
+
+ case 79:
+ case 111:
+ // o
+ p.appendJSString(arguments[j].toString(8));
+ i += 2; j++;
+ break;
+
+ case 66:
+ case 98:
+ // b
+ p.appendJSString(arguments[j].toString(2));
+ i += 2; j++;
+ break;
+
+ case 37:
+ case 110:
+ // %, n
+ p.appendJSString("\n");
+ i += 2; break;
+
+ case 114:
+ // r
+ p.appendJSString("\r");
+ i += 2; break;
+
+ case 126:
+ // ~
+ p.appendJSString("~");
+ i += 2; break;
+
+ default:
+ sc_error( "format: illegal ~"
+ + String.fromCharCode(s.charCodeAt(i2 + 1))
+ + " sequence" );
+ return "";
+ }
+ }
+ }
+
+ return p.close();
+}
+
+/* ------------------ global ports ---------------------------------------------------*/
+
+var SC_DEFAULT_IN = new sc_ErrorInputPort();
+var SC_DEFAULT_OUT = new sc_ErrorOutputPort();
+var SC_ERROR_OUT = new sc_ErrorOutputPort();
+
+var sc_SYMBOL_PREFIX = "\u1E9C";
+var sc_KEYWORD_PREFIX = "\u1E9D";
+
+/*** META ((export #t)
+ (peephole (id))) */
+function sc_jsstring2string(s) {
+ return s;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_jsstring2symbol(s) {
+ return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_string2jsstring(s) {
+ return s;
+}
+
+/*** META ((export #t)
+ (peephole (symbol2jsstring_immutable)))
+*/
+function sc_symbol2jsstring(s) {
+ return s.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2jsstring(k) {
+ return k.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_jsstring2keyword(s) {
+ return sc_KEYWORD_PREFIX + s;
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isKeyword(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) === sc_KEYWORD_PREFIX);
+}
+
+
+/*** META ((export #t)) */
+var sc_gensym = function() {
+ var counter = 1000;
+ return function(sym) {
+ counter++;
+ if (!sym) sym = sc_SYMBOL_PREFIX;
+ return sym + "s" + counter + "~" + "^sC-GeNsYm ";
+ };
+}();
+
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isEqual(o1, o2) {
+ return ((o1 === o2) ||
+ (sc_isPair(o1) && sc_isPair(o2)
+ && sc_isPairEqual(o1, o2, sc_isEqual)) ||
+ (sc_isVector(o1) && sc_isVector(o2)
+ && sc_isVectorEqual(o1, o2, sc_isEqual)));
+}
+
+/*** META ((export number->symbol integer->symbol)) */
+function sc_number2symbol(x, radix) {
+ return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix);
+}
+
+/*** META ((export number->string integer->string)) */
+var sc_number2string = sc_number2jsstring;
+
+/*** META ((export #t)) */
+function sc_symbol2number(s, radix) {
+ return sc_jsstring2number(s.slice(1), radix);
+}
+
+/*** META ((export #t)) */
+var sc_string2number = sc_jsstring2number;
+
+/*** META ((export #t)
+ (peephole (prefix "+" s)))
+ ;; peephole will only apply if no radix is given.
+*/
+function sc_string2integer(s, radix) {
+ if (!radix) return +s;
+ return parseInt(s, radix);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "+")))
+*/
+function sc_string2real(s) {
+ return +s;
+}
+
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isSymbol(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) === sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)
+ (peephole (symbol2string_immutable)))
+*/
+function sc_symbol2string(s) {
+ return s.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_string2symbol(s) {
+ return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export symbol-append)
+ (peephole (symbolAppend_immutable)))
+*/
+function sc_symbolAppend() {
+ var res = sc_SYMBOL_PREFIX;
+ for (var i = 0; i < arguments.length; i++)
+ res += arguments[i].slice(1);
+ return res;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".val")))
+*/
+function sc_char2string(c) { return c.val; }
+
+/*** META ((export #t)
+ (peephole (hole 1 "'\\u1E9C' + " c ".val")))
+*/
+function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; }
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isString(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) !== sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)) */
+var sc_makeString = sc_makejsString;
+
+
+/*** META ((export #t)) */
+function sc_string() {
+ for (var i = 0; i < arguments.length; i++)
+ arguments[i] = arguments[i].val;
+ return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".length")))
+*/
+function sc_stringLength(s) { return s.length; }
+
+/*** META ((export #t)) */
+function sc_stringRef(s, k) {
+ return new sc_Char(s.charAt(k));
+}
+
+/* there's no stringSet in the immutable version
+function sc_stringSet(s, k, c)
+*/
+
+
+/*** META ((export string=?)
+ (type bool)
+ (peephole (hole 2 str1 " === " str2)))
+*/
+function sc_isStringEqual(s1, s2) {
+ return s1 === s2;
+}
+/*** META ((export string<?)
+ (type bool)
+ (peephole (hole 2 str1 " < " str2)))
+*/
+function sc_isStringLess(s1, s2) {
+ return s1 < s2;
+}
+/*** META ((export string>?)
+ (type bool)
+ (peephole (hole 2 str1 " > " str2)))
+*/
+function sc_isStringGreater(s1, s2) {
+ return s1 > s2;
+}
+/*** META ((export string<=?)
+ (type bool)
+ (peephole (hole 2 str1 " <= " str2)))
+*/
+function sc_isStringLessEqual(s1, s2) {
+ return s1 <= s2;
+}
+/*** META ((export string>=?)
+ (type bool)
+ (peephole (hole 2 str1 " >= " str2)))
+*/
+function sc_isStringGreaterEqual(s1, s2) {
+ return s1 >= s2;
+}
+/*** META ((export string-ci=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIEqual(s1, s2) {
+ return s1.toLowerCase() === s2.toLowerCase();
+}
+/*** META ((export string-ci<?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() < " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILess(s1, s2) {
+ return s1.toLowerCase() < s2.toLowerCase();
+}
+/*** META ((export string-ci>?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreater(s1, s2) {
+ return s1.toLowerCase() > s2.toLowerCase();
+}
+/*** META ((export string-ci<=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILessEqual(s1, s2) {
+ return s1.toLowerCase() <= s2.toLowerCase();
+}
+/*** META ((export string-ci>=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreaterEqual(s1, s2) {
+ return s1.toLowerCase() >= s2.toLowerCase();
+}
+
+/*** META ((export #t)
+ (peephole (hole 3 s ".substring(" start ", " end ")")))
+*/
+function sc_substring(s, start, end) {
+ return s.substring(start, end);
+}
+
+/*** META ((export #t))
+*/
+function sc_isSubstring_at(s1, s2, i) {
+ return s2 == s1.substring(i, i+ s2.length);
+}
+
+/*** META ((export #t)
+ (peephole (infix 0 #f "+" "''")))
+*/
+function sc_stringAppend() {
+ return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)) */
+var sc_string2list = sc_jsstring2list;
+
+/*** META ((export #t)) */
+var sc_list2string = sc_list2jsstring;
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_stringCopy(s) {
+ return s;
+}
+
+/* there's no string-fill in the immutable version
+function sc_stringFill(s, c)
+*/
+
+/*** META ((export #t)
+ (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2string(o) {
+ return o.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_string2keyword(o) {
+ return sc_KEYWORD_PREFIX + o;
+}
+
+String.prototype.sc_toDisplayString = function() {
+ if (this.charAt(0) === sc_SYMBOL_PREFIX)
+ // TODO: care for symbols with spaces (escape-chars symbols).
+ return this.slice(1);
+ else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+ return ":" + this.slice(1);
+ else
+ return this.toString();
+};
+
+String.prototype.sc_toWriteString = function() {
+ if (this.charAt(0) === sc_SYMBOL_PREFIX)
+ // TODO: care for symbols with spaces (escape-chars symbols).
+ return this.slice(1);
+ else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+ return ":" + this.slice(1);
+ else
+ return '"' + sc_escapeWriteString(this) + '"';
+};
+/* Exported Variables */
+var BgL_testzd2boyerzd2;
+var BgL_nboyerzd2benchmarkzd2;
+var BgL_setupzd2boyerzd2;
+/* End Exports */
+
+var translate_term_nboyer;
+var translate_args_nboyer;
+var untranslate_term_nboyer;
+var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer;
+var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer;
+var translate_alist_nboyer;
+var apply_subst_nboyer;
+var apply_subst_lst_nboyer;
+var tautologyp_nboyer;
+var if_constructor_nboyer;
+var rewrite_count_nboyer;
+var rewrite_nboyer;
+var rewrite_args_nboyer;
+var unify_subst_nboyer;
+var one_way_unify1_nboyer;
+var false_term_nboyer;
+var true_term_nboyer;
+var trans_of_implies1_nboyer;
+var is_term_equal_nboyer;
+var is_term_member_nboyer;
+var const_nboyer;
+var sc_const_3_nboyer;
+var sc_const_4_nboyer;
+{
+ (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null)))))));
+ (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null))))))));
+ (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null)))))))))));
+ BgL_nboyerzd2benchmarkzd2 = function() {
+ var args = null;
+ for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+ args = sc_cons(arguments[sc_tmp], args);
+ }
+ var n;
+ return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() {
+ return (BgL_testzd2boyerzd2(n));
+ }, function(rewrites) {
+ if ((sc_isNumber(rewrites)))
+ switch (n) {
+ case (0):
+ return (rewrites===(95024));
+ break;
+ case (1):
+ return (rewrites===(591777));
+ break;
+ case (2):
+ return (rewrites===(1813975));
+ break;
+ case (3):
+ return (rewrites===(5375678));
+ break;
+ case (4):
+ return (rewrites===(16445406));
+ break;
+ case (5):
+ return (rewrites===(51507739));
+ break;
+ default:
+ return true;
+ break;
+ }
+ else
+ return false;
+ })));
+ };
+ BgL_setupzd2boyerzd2 = function() {
+ return true;
+ };
+ BgL_testzd2boyerzd2 = function() {
+ return true;
+ };
+ translate_term_nboyer = function(term) {
+ var lst;
+ return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr))))))))));
+ };
+ translate_args_nboyer = function(lst) {
+ var sc_lst_5;
+ var term;
+ return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr))))))))));
+ };
+ untranslate_term_nboyer = function(term) {
+ var optrOpnd;
+ var tail1131;
+ var L1127;
+ var falseHead1130;
+ var symbol_record;
+ if (!(term instanceof sc_Pair))
+ return term;
+ else
+ {
+ (falseHead1130 = (new sc_Pair(null, null)));
+ (L1127 = (term.cdr));
+ (tail1131 = falseHead1130);
+ while (!(L1127 === null)) {
+ {
+ (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null)));
+ (tail1131 = (tail1131.cdr));
+ (L1127 = (L1127.cdr));
+ }
+ }
+ (optrOpnd = (falseHead1130.cdr));
+ return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd));
+ }
+ };
+ BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) {
+ var r;
+ var x;
+ return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r)));
+ };
+ (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+ translate_alist_nboyer = function(alist) {
+ var sc_alist_6;
+ var term;
+ return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr))))))))));
+ };
+ apply_subst_nboyer = function(alist, term) {
+ var lst;
+ var temp_temp;
+ return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr))))))))));
+ };
+ apply_subst_lst_nboyer = function(alist, lst) {
+ var sc_lst_7;
+ return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr))))))))));
+ };
+ tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) {
+ var tmp1125;
+ var x;
+ var tmp1126;
+ var sc_x_8;
+ var sc_tmp1125_9;
+ var sc_tmp1126_10;
+ var sc_x_11;
+ var true_lst;
+ var false_lst;
+ while (true) {
+ if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false))
+ return true;
+ else
+ if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false))
+ return false;
+ else
+ if (!(sc_x_11 instanceof sc_Pair))
+ return false;
+ else
+ if (((sc_x_11.car)===if_constructor_nboyer))
+ if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false))
+ (sc_x_11 = (sc_x_11.cdr.cdr.car));
+ else
+ if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false))
+ (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+ else
+ if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false))
+ {
+ (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst)));
+ (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+ }
+ else
+ return false;
+ else
+ return false;
+ }
+ };
+ (if_constructor_nboyer = "\u1E9C*");
+ (rewrite_count_nboyer = (0));
+ rewrite_nboyer = function(term) {
+ var term2;
+ var sc_term_12;
+ var lst;
+ var symbol_record;
+ var sc_lst_13;
+ {
+ (++rewrite_count_nboyer);
+ if (!(term instanceof sc_Pair))
+ return term;
+ else
+ {
+ (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr))))))))));
+ (lst = ((symbol_record = (term.car)), (symbol_record[(1)])));
+ while (true) {
+ if ((lst === null))
+ return sc_term_12;
+ else
+ if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false))
+ return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car)))));
+ else
+ (lst = (lst.cdr));
+ }
+ }
+ }
+ };
+ rewrite_args_nboyer = function(lst) {
+ var sc_lst_14;
+ return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr))))))))));
+ };
+ (unify_subst_nboyer = "\u1E9C*");
+ one_way_unify1_nboyer = function(term1, term2) {
+ var lst1;
+ var lst2;
+ var temp_temp;
+ if (!(term2 instanceof sc_Pair))
+ {
+ (temp_temp = (sc_assq(term2, unify_subst_nboyer)));
+ if ((temp_temp!== false))
+ return (is_term_equal_nboyer(term1, (temp_temp.cdr)));
+ else
+ if ((sc_isNumber(term2)))
+ return (sc_isEqual(term1, term2));
+ else
+ {
+ (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer)));
+ return true;
+ }
+ }
+ else
+ if (!(term1 instanceof sc_Pair))
+ return false;
+ else
+ if (((term1.car)===(term2.car)))
+ {
+ (lst1 = (term1.cdr));
+ (lst2 = (term2.cdr));
+ while (true) {
+ if ((lst1 === null))
+ return (lst2 === null);
+ else
+ if ((lst2 === null))
+ return false;
+ else
+ if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false))
+ {
+ (lst1 = (lst1.cdr));
+ (lst2 = (lst2.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ };
+ (false_term_nboyer = "\u1E9C*");
+ (true_term_nboyer = "\u1E9C*");
+ trans_of_implies1_nboyer = function(n) {
+ var sc_n_15;
+ return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1)))))))))));
+ };
+ is_term_equal_nboyer = function(x, y) {
+ var lst1;
+ var lst2;
+ var r2;
+ var r1;
+ if ((x instanceof sc_Pair))
+ if ((y instanceof sc_Pair))
+ if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false))
+ {
+ (lst1 = (x.cdr));
+ (lst2 = (y.cdr));
+ while (true) {
+ if ((lst1 === null))
+ return (lst2 === null);
+ else
+ if ((lst2 === null))
+ return false;
+ else
+ if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false))
+ {
+ (lst1 = (lst1.cdr));
+ (lst2 = (lst2.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ else
+ return false;
+ else
+ return (sc_isEqual(x, y));
+ };
+ is_term_member_nboyer = function(x, lst) {
+ var x;
+ var lst;
+ while (true) {
+ if ((lst === null))
+ return false;
+ else
+ if (((is_term_equal_nboyer(x, (lst.car)))!== false))
+ return true;
+ else
+ (lst = (lst.cdr));
+ }
+ };
+ BgL_setupzd2boyerzd2 = function() {
+ var symbol_record;
+ var value;
+ var BgL_sc_symbolzd2record_16zd2;
+ var sym;
+ var sc_sym_17;
+ var term;
+ var lst;
+ var sc_term_18;
+ var sc_term_19;
+ {
+ (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+ (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif")));
+ (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr))))))));
+ (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr))))))));
+ (lst = sc_const_3_nboyer);
+ while (!(lst === null)) {
+ {
+ (term = (lst.car));
+ if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair))))
+ {
+ (sc_sym_17 = ((term.cdr.car).car));
+ (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)])))));
+ (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17)));
+ (symbol_record[(1)] = value);
+ }
+ else
+ (sc_error("ADD-LEMMA did not like term: ", term));
+ (lst = (lst.cdr));
+ }
+ }
+ return true;
+ }
+ };
+ BgL_testzd2boyerzd2 = function(n) {
+ var optrOpnd;
+ var term;
+ var sc_n_20;
+ var answer;
+ var sc_term_21;
+ var sc_term_22;
+ {
+ (rewrite_count_nboyer = (0));
+ (term = sc_const_4_nboyer);
+ (sc_n_20 = n);
+ while (!(sc_n_20=== 0)) {
+ {
+ (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null)))));
+ (--sc_n_20);
+ }
+ }
+ (sc_term_22 = term);
+ if (!(sc_term_22 instanceof sc_Pair))
+ (optrOpnd = sc_term_22);
+ else
+ (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr))))));
+ (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd)));
+ (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null)));
+ (sc_write(rewrite_count_nboyer));
+ (sc_display(" rewrites"));
+ (sc_newline());
+ if ((answer!== false))
+ return rewrite_count_nboyer;
+ else
+ return false;
+ }
+ };
+}
+/* Exported Variables */
+var BgL_parsezd2ze3nbzd2treesze3;
+var BgL_earleyzd2benchmarkzd2;
+var BgL_parsezd2ze3parsedzf3zc2;
+var test;
+var BgL_parsezd2ze3treesz31;
+var BgL_makezd2parserzd2;
+/* End Exports */
+
+var const_earley;
+{
+ (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null)));
+ BgL_makezd2parserzd2 = function(grammar, lexer) {
+ var i;
+ var parser_descr;
+ var def_loop;
+ var nb_nts;
+ var names;
+ var steps;
+ var predictors;
+ var enders;
+ var starters;
+ var nts;
+ var sc_names_1;
+ var sc_steps_2;
+ var sc_predictors_3;
+ var sc_enders_4;
+ var sc_starters_5;
+ var nb_confs;
+ var BgL_sc_defzd2loop_6zd2;
+ var BgL_sc_nbzd2nts_7zd2;
+ var sc_nts_8;
+ var BgL_sc_defzd2loop_9zd2;
+ var ind;
+ {
+ ind = function(nt, sc_nts_10) {
+ var i;
+ {
+ (i = ((sc_nts_10.length)-(1)));
+ while (true) {
+ if ((i>=(0)))
+ if ((sc_isEqual((sc_nts_10[i]), nt)))
+ return i;
+ else
+ (--i);
+ else
+ return false;
+ }
+ }
+ };
+ (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) {
+ var rule_loop;
+ var head;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) {
+ var nt;
+ var l;
+ var sc_nts_13;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (l = rule);
+ (sc_nts_13 = sc_nts_12);
+ while ((l instanceof sc_Pair)) {
+ {
+ (nt = (l.car));
+ (l = (l.cdr));
+ (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13))));
+ }
+ }
+ return (rule_loop((rules.cdr), sc_nts_13));
+ }
+ else
+ return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12));
+ }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11)))));
+ }), (BgL_sc_defzd2loop_9zd2(grammar, null))));
+ (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length));
+ (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) {
+ var rule_loop;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) {
+ var l;
+ var BgL_sc_nbzd2confs_16zd2;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (l = rule);
+ (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2);
+ while ((l instanceof sc_Pair)) {
+ {
+ (l = (l.cdr));
+ (++BgL_sc_nbzd2confs_16zd2);
+ }
+ }
+ return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1))));
+ }
+ else
+ return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2));
+ }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2);
+ }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2));
+ (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_steps_2 = (sc_makeVector(nb_confs, false)));
+ (sc_names_1 = (sc_makeVector(nb_confs, false)));
+ (nts = sc_nts_8);
+ (starters = sc_starters_5);
+ (enders = sc_enders_4);
+ (predictors = sc_predictors_3);
+ (steps = sc_steps_2);
+ (names = sc_names_1);
+ (nb_nts = (sc_nts_8.length));
+ (i = (nb_nts-(1)));
+ while ((i>=(0))) {
+ {
+ (sc_steps_2[i] = (i-nb_nts));
+ (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0))));
+ (sc_enders_4[i] = (sc_list(i)));
+ (--i);
+ }
+ }
+ def_loop = function(defs, conf) {
+ var rule_loop;
+ var head;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) {
+ var i;
+ var sc_i_17;
+ var nt;
+ var l;
+ var sc_conf_18;
+ var sc_i_19;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (names[conf] = (sc_list(head, rule_num)));
+ (sc_i_19 = (ind(head, nts)));
+ (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19]))));
+ (l = rule);
+ (sc_conf_18 = conf);
+ while ((l instanceof sc_Pair)) {
+ {
+ (nt = (l.car));
+ (steps[sc_conf_18] = (ind(nt, nts)));
+ (sc_i_17 = (ind(nt, nts)));
+ (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17]))));
+ (l = (l.cdr));
+ (++sc_conf_18);
+ }
+ }
+ (steps[sc_conf_18] = ((ind(head, nts))-nb_nts));
+ (i = (ind(head, nts)));
+ (enders[i] = (new sc_Pair(sc_conf_18, (enders[i]))));
+ return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1))));
+ }
+ else
+ return (def_loop((defs.cdr), conf));
+ }), (rule_loop((def.cdr), conf, (1)))):undefined);
+ };
+ (def_loop(grammar, (sc_nts_8.length)));
+ (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]);
+ return function(input) {
+ var optrOpnd;
+ var sc_optrOpnd_20;
+ var sc_optrOpnd_21;
+ var sc_optrOpnd_22;
+ var loop1;
+ var BgL_sc_stateza2_23za2;
+ var toks;
+ var BgL_sc_nbzd2nts_24zd2;
+ var sc_steps_25;
+ var sc_enders_26;
+ var state_num;
+ var BgL_sc_statesza2_27za2;
+ var states;
+ var i;
+ var conf;
+ var l;
+ var tok_nts;
+ var sc_i_28;
+ var sc_i_29;
+ var l1;
+ var l2;
+ var tok;
+ var tail1129;
+ var L1125;
+ var goal_enders;
+ var BgL_sc_statesza2_30za2;
+ var BgL_sc_nbzd2nts_31zd2;
+ var BgL_sc_nbzd2confs_32zd2;
+ var nb_toks;
+ var goal_starters;
+ var sc_states_33;
+ var BgL_sc_nbzd2confs_34zd2;
+ var BgL_sc_nbzd2toks_35zd2;
+ var sc_toks_36;
+ var falseHead1128;
+ var sc_names_37;
+ var sc_steps_38;
+ var sc_predictors_39;
+ var sc_enders_40;
+ var sc_starters_41;
+ var sc_nts_42;
+ var lexer;
+ var sc_ind_43;
+ var make_states;
+ var BgL_sc_confzd2setzd2getza2_44za2;
+ var conf_set_merge_new_bang;
+ var conf_set_adjoin;
+ var BgL_sc_confzd2setzd2adjoinza2_45za2;
+ var BgL_sc_confzd2setzd2adjoinza2za2_46z00;
+ var conf_set_union;
+ var forw;
+ var is_parsed;
+ var deriv_trees;
+ var BgL_sc_derivzd2treesza2_47z70;
+ var nb_deriv_trees;
+ var BgL_sc_nbzd2derivzd2treesza2_48za2;
+ {
+ sc_ind_43 = function(nt, sc_nts_49) {
+ var i;
+ {
+ (i = ((sc_nts_49.length)-(1)));
+ while (true) {
+ if ((i>=(0)))
+ if ((sc_isEqual((sc_nts_49[i]), nt)))
+ return i;
+ else
+ (--i);
+ else
+ return false;
+ }
+ }
+ };
+ make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) {
+ var v;
+ var i;
+ var sc_states_52;
+ {
+ (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false)));
+ (i = BgL_sc_nbzd2toks_50zd2);
+ while ((i>=(0))) {
+ {
+ (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false)));
+ (v[(0)] = (-1));
+ (sc_states_52[i] = v);
+ (--i);
+ }
+ }
+ return sc_states_52;
+ }
+ };
+ BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) {
+ var conf_set;
+ var BgL_sc_confzd2set_55zd2;
+ return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set)));
+ };
+ conf_set_merge_new_bang = function(conf_set) {
+ return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)));
+ };
+ conf_set_adjoin = function(state, conf_set, sc_conf_56, i) {
+ var tail;
+ return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined));
+ };
+ BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) {
+ var conf_set;
+ var sc_conf_59;
+ var l1;
+ var state;
+ {
+ (state = (sc_states_57[BgL_sc_statezd2num_58zd2]));
+ (l1 = l);
+ while ((l1 instanceof sc_Pair)) {
+ {
+ (sc_conf_59 = (l1.car));
+ (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59)));
+ if (((conf_set[(i+(5))])=== false))
+ {
+ (conf_set_adjoin(state, conf_set, sc_conf_59, i));
+ (l1 = (l1.cdr));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ }
+ return undefined;
+ }
+ };
+ BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) {
+ var BgL_sc_confzd2setza2_64z70;
+ var BgL_sc_stateza2_65za2;
+ var conf_set;
+ var state;
+ return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false));
+ };
+ conf_set_union = function(state, conf_set, sc_conf_66, other_set) {
+ var i;
+ {
+ (i = (other_set[(2)]));
+ while ((i>=(0))) {
+ if (((conf_set[(i+(5))])=== false))
+ {
+ (conf_set_adjoin(state, conf_set, sc_conf_66, i));
+ (i = (other_set[(i+(5))]));
+ }
+ else
+ (i = (other_set[(i+(5))]));
+ }
+ return undefined;
+ }
+ };
+ forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) {
+ var next_set;
+ var next;
+ var conf_set;
+ var ender;
+ var l;
+ var starter_set;
+ var starter;
+ var sc_l_74;
+ var sc_loop1_75;
+ var head;
+ var BgL_sc_confzd2set_76zd2;
+ var BgL_sc_statezd2num_77zd2;
+ var state;
+ var sc_states_78;
+ var preds;
+ var BgL_sc_confzd2set_79zd2;
+ var step;
+ var sc_conf_80;
+ var BgL_sc_nbzd2nts_81zd2;
+ var sc_state_82;
+ {
+ (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2]));
+ (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length));
+ while (true) {
+ {
+ (sc_conf_80 = (sc_state_82[(0)]));
+ if ((sc_conf_80>=(0)))
+ {
+ (step = (sc_steps_72[sc_conf_80]));
+ (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))]));
+ (head = (BgL_sc_confzd2set_79zd2[(4)]));
+ (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)]));
+ (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2));
+ if ((step>=(0)))
+ {
+ (sc_l_74 = (sc_starters_69[step]));
+ while ((sc_l_74 instanceof sc_Pair)) {
+ {
+ (starter = (sc_l_74.car));
+ (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter)));
+ if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false))
+ {
+ (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2));
+ (sc_l_74 = (sc_l_74.cdr));
+ }
+ else
+ (sc_l_74 = (sc_l_74.cdr));
+ }
+ }
+ (l = (sc_enders_70[step]));
+ while ((l instanceof sc_Pair)) {
+ {
+ (ender = (l.car));
+ if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false))
+ {
+ (next = (sc_conf_80+(1)));
+ (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next)));
+ (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2));
+ (l = (l.cdr));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ }
+ else
+ {
+ (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)]));
+ (sc_states_78 = sc_states_67);
+ (state = sc_state_82);
+ (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2);
+ (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2);
+ sc_loop1_75 = function(l) {
+ var sc_state_83;
+ var BgL_sc_nextzd2set_84zd2;
+ var sc_next_85;
+ var pred_set;
+ var i;
+ var pred;
+ if ((l instanceof sc_Pair))
+ {
+ (pred = (l.car));
+ (i = head);
+ while ((i>=(0))) {
+ {
+ (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))])));
+ if ((pred_set!== false))
+ {
+ (sc_next_85 = (pred+(1)));
+ (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85)));
+ (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set));
+ }
+ (i = (BgL_sc_confzd2set_76zd2[(i+(5))]));
+ }
+ }
+ return (sc_loop1_75((l.cdr)));
+ }
+ else
+ return undefined;
+ };
+ (sc_loop1_75(preds));
+ }
+ }
+ else
+ return undefined;
+ }
+ }
+ }
+ };
+ is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) {
+ var conf_set;
+ var state;
+ var sc_conf_89;
+ var l;
+ var BgL_sc_ntza2_90za2;
+ {
+ (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86)));
+ if ((BgL_sc_ntza2_90za2!== false))
+ {
+ (sc_nts_86.length);
+ (l = (sc_enders_87[BgL_sc_ntza2_90za2]));
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (sc_conf_89 = (l.car));
+ if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ return true;
+ else
+ (l = (l.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ }
+ };
+ deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) {
+ var sc_loop1_98;
+ var prev;
+ var name;
+ return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91<BgL_sc_nbzd2nts_97zd2)?(sc_list((sc_list(name, ((sc_toks_95[i]).car))))):(sc_list((sc_list(name))))):((prev = (sc_conf_91-(1))), (sc_loop1_98 = function(l1, l2) {
+ var loop2;
+ var ender_set;
+ var state;
+ var ender;
+ var l1;
+ var l2;
+ while (true) {
+ if ((l1 instanceof sc_Pair))
+ {
+ (ender = (l1.car));
+ (ender_set = ((state = (sc_states_96[j])), (state[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ loop2 = function(k, l2) {
+ var loop3;
+ var ender_trees;
+ var prev_trees;
+ var conf_set;
+ var sc_state_99;
+ var k;
+ var l2;
+ while (true) {
+ if ((k>=(0)))
+ if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+ {
+ (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+ (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+ loop3 = function(l3, l2) {
+ var l4;
+ var sc_l2_100;
+ var ender_tree;
+ if ((l3 instanceof sc_Pair))
+ {
+ (ender_tree = (sc_list((l3.car))));
+ (l4 = prev_trees);
+ (sc_l2_100 = l2);
+ while ((l4 instanceof sc_Pair)) {
+ {
+ (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100)));
+ (l4 = (l4.cdr));
+ }
+ }
+ return (loop3((l3.cdr), sc_l2_100));
+ }
+ else
+ return (loop2((ender_set[(k+(5))]), l2));
+ };
+ return (loop3(ender_trees, l2));
+ }
+ else
+ (k = (ender_set[(k+(5))]));
+ else
+ return (sc_loop1_98((l1.cdr), l2));
+ }
+ };
+ return (loop2((ender_set[(2)]), l2));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ else
+ return l2;
+ }
+ }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null)))));
+ };
+ BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) {
+ var conf_set;
+ var state;
+ var sc_conf_107;
+ var l;
+ var trees;
+ var BgL_sc_nbzd2nts_108zd2;
+ var BgL_sc_ntza2_109za2;
+ {
+ (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101)));
+ if ((BgL_sc_ntza2_109za2!== false))
+ {
+ (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length));
+ (l = (sc_enders_102[BgL_sc_ntza2_109za2]));
+ (trees = null);
+ while ((l instanceof sc_Pair)) {
+ {
+ (sc_conf_107 = (l.car));
+ if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ {
+ (l = (l.cdr));
+ (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees)));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ return trees;
+ }
+ else
+ return false;
+ }
+ };
+ nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) {
+ var sc_loop1_116;
+ var tmp1124;
+ var prev;
+ return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110<BgL_sc_nbzd2nts_115zd2)), ((tmp1124!== false)?tmp1124:((sc_steps_112[prev])<(0))))!== false)?(1):((sc_loop1_116 = function(l, sc_n_118) {
+ var nb_ender_trees;
+ var nb_prev_trees;
+ var conf_set;
+ var state;
+ var k;
+ var n;
+ var ender_set;
+ var sc_state_117;
+ var ender;
+ var l;
+ var sc_n_118;
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (ender = (l.car));
+ (ender_set = ((sc_state_117 = (sc_states_114[j])), (sc_state_117[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ (k = (ender_set[(2)]));
+ (n = sc_n_118);
+ while ((k>=(0))) {
+ if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+ {
+ (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+ (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+ (k = (ender_set[(k+(5))]));
+ (n +=(nb_prev_trees*nb_ender_trees));
+ }
+ else
+ (k = (ender_set[(k+(5))]));
+ }
+ return (sc_loop1_116((l.cdr), n));
+ }
+ else
+ (l = (l.cdr));
+ }
+ else
+ return sc_n_118;
+ }
+ }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0))))));
+ };
+ BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) {
+ var conf_set;
+ var state;
+ var sc_conf_124;
+ var l;
+ var nb_trees;
+ var BgL_sc_nbzd2nts_125zd2;
+ var BgL_sc_ntza2_126za2;
+ {
+ (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119)));
+ if ((BgL_sc_ntza2_126za2!== false))
+ {
+ (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length));
+ (l = (sc_enders_120[BgL_sc_ntza2_126za2]));
+ (nb_trees = (0));
+ while ((l instanceof sc_Pair)) {
+ {
+ (sc_conf_124 = (l.car));
+ if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ {
+ (l = (l.cdr));
+ (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ return nb_trees;
+ }
+ else
+ return false;
+ }
+ };
+ (lexer = (parser_descr[(0)]));
+ (sc_nts_42 = (parser_descr[(1)]));
+ (sc_starters_41 = (parser_descr[(2)]));
+ (sc_enders_40 = (parser_descr[(3)]));
+ (sc_predictors_39 = (parser_descr[(4)]));
+ (sc_steps_38 = (parser_descr[(5)]));
+ (sc_names_37 = (parser_descr[(6)]));
+ (falseHead1128 = (new sc_Pair(null, null)));
+ (L1125 = (lexer(input)));
+ (tail1129 = falseHead1128);
+ while (!(L1125 === null)) {
+ {
+ (tok = (L1125.car));
+ (l1 = (tok.cdr));
+ (l2 = null);
+ while ((l1 instanceof sc_Pair)) {
+ {
+ (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42)));
+ if ((sc_i_29!== false))
+ {
+ (l1 = (l1.cdr));
+ (l2 = (new sc_Pair(sc_i_29, l2)));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ }
+ (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2)))));
+ (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null)));
+ (tail1129.cdr = sc_optrOpnd_21);
+ (tail1129 = (tail1129.cdr));
+ (L1125 = (L1125.cdr));
+ }
+ }
+ (sc_optrOpnd_20 = (falseHead1128.cdr));
+ (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20)));
+ (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length));
+ (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length));
+ (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2)));
+ (goal_starters = (sc_starters_41[(0)]));
+ (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0)));
+ (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+ (sc_i_28 = (0));
+ while ((sc_i_28<BgL_sc_nbzd2toks_35zd2)) {
+ {
+ (tok_nts = ((sc_toks_36[sc_i_28]).cdr));
+ (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (sc_i_28+(1)), tok_nts, sc_i_28));
+ (forw(sc_states_33, (sc_i_28+(1)), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+ (++sc_i_28);
+ }
+ }
+ (nb_toks = (sc_toks_36.length));
+ (BgL_sc_nbzd2confs_32zd2 = (sc_steps_38.length));
+ (BgL_sc_nbzd2nts_31zd2 = (sc_nts_42.length));
+ (BgL_sc_statesza2_30za2 = (make_states(nb_toks, BgL_sc_nbzd2confs_32zd2)));
+ (goal_enders = (sc_enders_40[(0)]));
+ (l = goal_enders);
+ while ((l instanceof sc_Pair)) {
+ {
+ (conf = (l.car));
+ (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_33, BgL_sc_statesza2_30za2, nb_toks, conf, (0)));
+ (l = (l.cdr));
+ }
+ }
+ (i = nb_toks);
+ while ((i>=(0))) {
+ {
+ (states = sc_states_33);
+ (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2);
+ (state_num = i);
+ (sc_enders_26 = sc_enders_40);
+ (sc_steps_25 = sc_steps_38);
+ (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2);
+ (toks = sc_toks_36);
+ (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i]));
+ loop1 = function() {
+ var sc_loop1_127;
+ var prev;
+ var BgL_sc_statesza2_128za2;
+ var sc_states_129;
+ var j;
+ var i;
+ var sc_i_130;
+ var head;
+ var conf_set;
+ var sc_conf_131;
+ {
+ (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)]));
+ if ((sc_conf_131>=(0)))
+ {
+ (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))]));
+ (head = (conf_set[(4)]));
+ (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)]));
+ (conf_set_merge_new_bang(conf_set));
+ (sc_i_130 = head);
+ while ((sc_i_130>=(0))) {
+ {
+ (i = sc_i_130);
+ (j = state_num);
+ (sc_states_129 = states);
+ (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2);
+ (prev = (sc_conf_131-(1)));
+ if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0))))
+ {
+ sc_loop1_127 = function(l) {
+ var k;
+ var ender_set;
+ var state;
+ var ender;
+ var l;
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (ender = (l.car));
+ (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ (k = (ender_set[(2)]));
+ while ((k>=(0))) {
+ {
+ if ((k>=i))
+ if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false))
+ (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k));
+ (k = (ender_set[(k+(5))]));
+ }
+ }
+ return (sc_loop1_127((l.cdr)));
+ }
+ else
+ (l = (l.cdr));
+ }
+ else
+ return undefined;
+ }
+ };
+ (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])])));
+ }
+ (sc_i_130 = (conf_set[(sc_i_130+(5))]));
+ }
+ }
+ return (loop1());
+ }
+ else
+ return undefined;
+ }
+ };
+ (loop1());
+ (--i);
+ }
+ }
+ (optrOpnd = BgL_sc_statesza2_30za2);
+ return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2];
+ }
+ };
+ }
+ };
+ BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) {
+ var is_parsed;
+ var states;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states)));
+ };
+ BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) {
+ var BgL_sc_derivzd2treesza2_132z70;
+ var states;
+ var toks;
+ var names;
+ var steps;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states)));
+ };
+ BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) {
+ var BgL_sc_nbzd2derivzd2treesza2_133za2;
+ var states;
+ var toks;
+ var steps;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states)));
+ };
+ test = function(k) {
+ var x;
+ var p;
+ return ((p = (BgL_makezd2parserzd2(const_earley, function(l) {
+ var sc_x_134;
+ var tail1134;
+ var L1130;
+ var falseHead1133;
+ {
+ (falseHead1133 = (new sc_Pair(null, null)));
+ (tail1134 = falseHead1133);
+ (L1130 = l);
+ while (!(L1130 === null)) {
+ {
+ (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null)));
+ (tail1134 = (tail1134.cdr));
+ (L1130 = (L1130.cdr));
+ }
+ }
+ return (falseHead1133.cdr);
+ }
+ }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k)))));
+ };
+ BgL_earleyzd2benchmarkzd2 = function() {
+ var args = null;
+ for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+ args = sc_cons(arguments[sc_tmp], args);
+ }
+ var k;
+ return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() {
+ return (test(k));
+ }, function(result) {
+ return ((sc_display(result)), (sc_newline()), result == 132);
+ })));
+ };
+}
+
+
+/************* END OF GENERATED CODE *************/
+// Invoke this function to run a benchmark.
+// The first argument is a string identifying the benchmark.
+// The second argument is the number of times to run the benchmark.
+// The third argument is a function that runs the benchmark.
+// The fourth argument is a unary function that warns if the result
+// returned by the benchmark is incorrect.
+//
+// Example:
+// RunBenchmark("new Array()",
+// 1,
+// function () { new Array(1000000); }
+// function (v) {
+// return (v instanceof Array) && (v.length == 1000000);
+// });
+
+SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {});
+SC_ERROR_OUT = SC_DEFAULT_OUT;
+
+function RunBenchmark(name, count, run, warn) {
+ for (var n = 0; n < count; ++n) {
+ result = run();
+ if (!warn(result)) {
+ throw new Error("Earley or Boyer did incorrect number of rewrites");
+ }
+ }
+}
+
+var BgL_runzd2benchmarkzd2 = RunBenchmark;
diff --git a/tests/benchmarks/script/v8/tests/raytrace.js b/tests/benchmarks/script/v8/tests/raytrace.js
new file mode 100644
index 0000000000..971ef7218e
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/raytrace.js
@@ -0,0 +1,904 @@
+// The ray tracer code in this file is written by Adam Burmister. It
+// is available in its original form from:
+//
+// http://labs.flog.nz.co/raytracer/
+//
+// It has been modified slightly by Google to work as a standalone
+// benchmark, but the all the computational code remains
+// untouched. This file also contains a copy of parts of the Prototype
+// JavaScript framework which is used by the ray tracer.
+
+var RayTrace = new BenchmarkSuite('RayTrace', 739989, [
+ new Benchmark('RayTrace', renderScene)
+]);
+
+
+// Variable used to hold a number that can be used to verify that
+// the scene was ray traced correctly.
+var checkNumber;
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The following is a copy of parts of the Prototype JavaScript library:
+
+// Prototype JavaScript framework, version 1.5.0
+// (c) 2005-2007 Sam Stephenson
+//
+// Prototype is freely distributable under the terms of an MIT-style license.
+// For details, see the Prototype web site: http://prototype.conio.net/
+
+
+var Class = {
+ create: function() {
+ return function() {
+ this.initialize.apply(this, arguments);
+ }
+ }
+};
+
+
+Object.extend = function(destination, source) {
+ for (var property in source) {
+ destination[property] = source[property];
+ }
+ return destination;
+};
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The rest of this file is the actual ray tracer written by Adam
+// Burmister. It's a concatenation of the following files:
+//
+// flog/color.js
+// flog/light.js
+// flog/vector.js
+// flog/ray.js
+// flog/scene.js
+// flog/material/basematerial.js
+// flog/material/solid.js
+// flog/material/chessboard.js
+// flog/shape/baseshape.js
+// flog/shape/sphere.js
+// flog/shape/plane.js
+// flog/intersectioninfo.js
+// flog/camera.js
+// flog/background.js
+// flog/engine.js
+
+
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Color = Class.create();
+
+Flog.RayTracer.Color.prototype = {
+ red : 0.0,
+ green : 0.0,
+ blue : 0.0,
+
+ initialize : function(r, g, b) {
+ if(!r) r = 0.0;
+ if(!g) g = 0.0;
+ if(!b) b = 0.0;
+
+ this.red = r;
+ this.green = g;
+ this.blue = b;
+ },
+
+ add : function(c1, c2){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red + c2.red;
+ result.green = c1.green + c2.green;
+ result.blue = c1.blue + c2.blue;
+
+ return result;
+ },
+
+ addScalar: function(c1, s){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red + s;
+ result.green = c1.green + s;
+ result.blue = c1.blue + s;
+
+ result.limit();
+
+ return result;
+ },
+
+ subtract: function(c1, c2){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red - c2.red;
+ result.green = c1.green - c2.green;
+ result.blue = c1.blue - c2.blue;
+
+ return result;
+ },
+
+ multiply : function(c1, c2) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red * c2.red;
+ result.green = c1.green * c2.green;
+ result.blue = c1.blue * c2.blue;
+
+ return result;
+ },
+
+ multiplyScalar : function(c1, f) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red * f;
+ result.green = c1.green * f;
+ result.blue = c1.blue * f;
+
+ return result;
+ },
+
+ divideFactor : function(c1, f) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red / f;
+ result.green = c1.green / f;
+ result.blue = c1.blue / f;
+
+ return result;
+ },
+
+ limit: function(){
+ this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0;
+ this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0;
+ this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0;
+ },
+
+ distance : function(color) {
+ var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue);
+ return d;
+ },
+
+ blend: function(c1, c2, w){
+ var result = new Flog.RayTracer.Color(0,0,0);
+ result = Flog.RayTracer.Color.prototype.add(
+ Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w),
+ Flog.RayTracer.Color.prototype.multiplyScalar(c2, w)
+ );
+ return result;
+ },
+
+ brightness : function() {
+ var r = Math.floor(this.red*255);
+ var g = Math.floor(this.green*255);
+ var b = Math.floor(this.blue*255);
+ return (r * 77 + g * 150 + b * 29) >> 8;
+ },
+
+ toString : function () {
+ var r = Math.floor(this.red*255);
+ var g = Math.floor(this.green*255);
+ var b = Math.floor(this.blue*255);
+
+ return "rgb("+ r +","+ g +","+ b +")";
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Light = Class.create();
+
+Flog.RayTracer.Light.prototype = {
+ position: null,
+ color: null,
+ intensity: 10.0,
+
+ initialize : function(pos, color, intensity) {
+ this.position = pos;
+ this.color = color;
+ this.intensity = (intensity ? intensity : 10.0);
+ },
+
+ toString : function () {
+ return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Vector = Class.create();
+
+Flog.RayTracer.Vector.prototype = {
+ x : 0.0,
+ y : 0.0,
+ z : 0.0,
+
+ initialize : function(x, y, z) {
+ this.x = (x ? x : 0);
+ this.y = (y ? y : 0);
+ this.z = (z ? z : 0);
+ },
+
+ copy: function(vector){
+ this.x = vector.x;
+ this.y = vector.y;
+ this.z = vector.z;
+ },
+
+ normalize : function() {
+ var m = this.magnitude();
+ return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m);
+ },
+
+ magnitude : function() {
+ return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));
+ },
+
+ cross : function(w) {
+ return new Flog.RayTracer.Vector(
+ -this.z * w.y + this.y * w.z,
+ this.z * w.x - this.x * w.z,
+ -this.y * w.x + this.x * w.y);
+ },
+
+ dot : function(w) {
+ return this.x * w.x + this.y * w.y + this.z * w.z;
+ },
+
+ add : function(v, w) {
+ return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z);
+ },
+
+ subtract : function(v, w) {
+ if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']';
+ return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z);
+ },
+
+ multiplyVector : function(v, w) {
+ return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z);
+ },
+
+ multiplyScalar : function(v, w) {
+ return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w);
+ },
+
+ toString : function () {
+ return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Ray = Class.create();
+
+Flog.RayTracer.Ray.prototype = {
+ position : null,
+ direction : null,
+ initialize : function(pos, dir) {
+ this.position = pos;
+ this.direction = dir;
+ },
+
+ toString : function () {
+ return 'Ray [' + this.position + ',' + this.direction + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Scene = Class.create();
+
+Flog.RayTracer.Scene.prototype = {
+ camera : null,
+ shapes : [],
+ lights : [],
+ background : null,
+
+ initialize : function() {
+ this.camera = new Flog.RayTracer.Camera(
+ new Flog.RayTracer.Vector(0,0,-5),
+ new Flog.RayTracer.Vector(0,0,1),
+ new Flog.RayTracer.Vector(0,1,0)
+ );
+ this.shapes = new Array();
+ this.lights = new Array();
+ this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2);
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {};
+
+Flog.RayTracer.Material.BaseMaterial = Class.create();
+
+Flog.RayTracer.Material.BaseMaterial.prototype = {
+
+ gloss: 2.0, // [0...infinity] 0 = matt
+ transparency: 0.0, // 0=opaque
+ reflection: 0.0, // [0...infinity] 0 = no reflection
+ refraction: 0.50,
+ hasTexture: false,
+
+ initialize : function() {
+
+ },
+
+ getColor: function(u, v){
+
+ },
+
+ wrapUp: function(t){
+ t = t % 2.0;
+ if(t < -1) t += 2.0;
+ if(t >= 1) t -= 2.0;
+ return t;
+ },
+
+ toString : function () {
+ return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Solid = Class.create();
+
+Flog.RayTracer.Material.Solid.prototype = Object.extend(
+ new Flog.RayTracer.Material.BaseMaterial(), {
+ initialize : function(color, reflection, refraction, transparency, gloss) {
+ this.color = color;
+ this.reflection = reflection;
+ this.transparency = transparency;
+ this.gloss = gloss;
+ this.hasTexture = false;
+ },
+
+ getColor: function(u, v){
+ return this.color;
+ },
+
+ toString : function () {
+ return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+ }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Chessboard = Class.create();
+
+Flog.RayTracer.Material.Chessboard.prototype = Object.extend(
+ new Flog.RayTracer.Material.BaseMaterial(), {
+ colorEven: null,
+ colorOdd: null,
+ density: 0.5,
+
+ initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) {
+ this.colorEven = colorEven;
+ this.colorOdd = colorOdd;
+ this.reflection = reflection;
+ this.transparency = transparency;
+ this.gloss = gloss;
+ this.density = density;
+ this.hasTexture = true;
+ },
+
+ getColor: function(u, v){
+ var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density);
+
+ if(t < 0.0)
+ return this.colorEven;
+ else
+ return this.colorOdd;
+ },
+
+ toString : function () {
+ return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+ }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Sphere = Class.create();
+
+Flog.RayTracer.Shape.Sphere.prototype = {
+ initialize : function(pos, radius, material) {
+ this.radius = radius;
+ this.position = pos;
+ this.material = material;
+ },
+
+ intersect: function(ray){
+ var info = new Flog.RayTracer.IntersectionInfo();
+ info.shape = this;
+
+ var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position);
+
+ var B = dst.dot(ray.direction);
+ var C = dst.dot(dst) - (this.radius * this.radius);
+ var D = (B * B) - C;
+
+ if(D > 0){ // intersection!
+ info.isHit = true;
+ info.distance = (-B) - Math.sqrt(D);
+ info.position = Flog.RayTracer.Vector.prototype.add(
+ ray.position,
+ Flog.RayTracer.Vector.prototype.multiplyScalar(
+ ray.direction,
+ info.distance
+ )
+ );
+ info.normal = Flog.RayTracer.Vector.prototype.subtract(
+ info.position,
+ this.position
+ ).normalize();
+
+ info.color = this.material.getColor(0,0);
+ } else {
+ info.isHit = false;
+ }
+ return info;
+ },
+
+ toString : function () {
+ return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Plane = Class.create();
+
+Flog.RayTracer.Shape.Plane.prototype = {
+ d: 0.0,
+
+ initialize : function(pos, d, material) {
+ this.position = pos;
+ this.d = d;
+ this.material = material;
+ },
+
+ intersect: function(ray){
+ var info = new Flog.RayTracer.IntersectionInfo();
+
+ var Vd = this.position.dot(ray.direction);
+ if(Vd == 0) return info; // no intersection
+
+ var t = -(this.position.dot(ray.position) + this.d) / Vd;
+ if(t <= 0) return info;
+
+ info.shape = this;
+ info.isHit = true;
+ info.position = Flog.RayTracer.Vector.prototype.add(
+ ray.position,
+ Flog.RayTracer.Vector.prototype.multiplyScalar(
+ ray.direction,
+ t
+ )
+ );
+ info.normal = this.position;
+ info.distance = t;
+
+ if(this.material.hasTexture){
+ var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x);
+ var vV = vU.cross(this.position);
+ var u = info.position.dot(vU);
+ var v = info.position.dot(vV);
+ info.color = this.material.getColor(u,v);
+ } else {
+ info.color = this.material.getColor(0,0);
+ }
+
+ return info;
+ },
+
+ toString : function () {
+ return 'Plane [' + this.position + ', d=' + this.d + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.IntersectionInfo = Class.create();
+
+Flog.RayTracer.IntersectionInfo.prototype = {
+ isHit: false,
+ hitCount: 0,
+ shape: null,
+ position: null,
+ normal: null,
+ color: null,
+ distance: null,
+
+ initialize : function() {
+ this.color = new Flog.RayTracer.Color(0,0,0);
+ },
+
+ toString : function () {
+ return 'Intersection [' + this.position + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Camera = Class.create();
+
+Flog.RayTracer.Camera.prototype = {
+ position: null,
+ lookAt: null,
+ equator: null,
+ up: null,
+ screen: null,
+
+ initialize : function(pos, lookAt, up) {
+ this.position = pos;
+ this.lookAt = lookAt;
+ this.up = up;
+ this.equator = lookAt.normalize().cross(this.up);
+ this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt);
+ },
+
+ getRay: function(vx, vy){
+ var pos = Flog.RayTracer.Vector.prototype.subtract(
+ this.screen,
+ Flog.RayTracer.Vector.prototype.subtract(
+ Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx),
+ Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy)
+ )
+ );
+ pos.y = pos.y * -1;
+ var dir = Flog.RayTracer.Vector.prototype.subtract(
+ pos,
+ this.position
+ );
+
+ var ray = new Flog.RayTracer.Ray(pos, dir.normalize());
+
+ return ray;
+ },
+
+ toString : function () {
+ return 'Ray []';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Background = Class.create();
+
+Flog.RayTracer.Background.prototype = {
+ color : null,
+ ambience : 0.0,
+
+ initialize : function(color, ambience) {
+ this.color = color;
+ this.ambience = ambience;
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Engine = Class.create();
+
+Flog.RayTracer.Engine.prototype = {
+ canvas: null, /* 2d context we can render to */
+
+ initialize: function(options){
+ this.options = Object.extend({
+ canvasHeight: 100,
+ canvasWidth: 100,
+ pixelWidth: 2,
+ pixelHeight: 2,
+ renderDiffuse: false,
+ renderShadows: false,
+ renderHighlights: false,
+ renderReflections: false,
+ rayDepth: 2
+ }, options || {});
+
+ this.options.canvasHeight /= this.options.pixelHeight;
+ this.options.canvasWidth /= this.options.pixelWidth;
+
+ /* TODO: dynamically include other scripts */
+ },
+
+ setPixel: function(x, y, color){
+ var pxW, pxH;
+ pxW = this.options.pixelWidth;
+ pxH = this.options.pixelHeight;
+
+ if (this.canvas) {
+ this.canvas.fillStyle = color.toString();
+ this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH);
+ } else {
+ if (x === y) {
+ checkNumber += color.brightness();
+ }
+ // print(x * pxW, y * pxH, pxW, pxH);
+ }
+ },
+
+ renderScene: function(scene, canvas){
+ checkNumber = 0;
+ /* Get canvas */
+ if (canvas) {
+ this.canvas = canvas.getContext("2d");
+ } else {
+ this.canvas = null;
+ }
+
+ var canvasHeight = this.options.canvasHeight;
+ var canvasWidth = this.options.canvasWidth;
+
+ for(var y=0; y < canvasHeight; y++){
+ for(var x=0; x < canvasWidth; x++){
+ var yp = y * 1.0 / canvasHeight * 2 - 1;
+ var xp = x * 1.0 / canvasWidth * 2 - 1;
+
+ var ray = scene.camera.getRay(xp, yp);
+
+ var color = this.getPixelColor(ray, scene);
+
+ this.setPixel(x, y, color);
+ }
+ }
+ if (checkNumber !== 2321) {
+ throw new Error("Scene rendered incorrectly");
+ }
+ },
+
+ getPixelColor: function(ray, scene){
+ var info = this.testIntersection(ray, scene, null);
+ if(info.isHit){
+ var color = this.rayTrace(info, ray, scene, 0);
+ return color;
+ }
+ return scene.background.color;
+ },
+
+ testIntersection: function(ray, scene, exclude){
+ var hits = 0;
+ var best = new Flog.RayTracer.IntersectionInfo();
+ best.distance = 2000;
+
+ for(var i=0; i<scene.shapes.length; i++){
+ var shape = scene.shapes[i];
+
+ if(shape != exclude){
+ var info = shape.intersect(ray);
+ if(info.isHit && info.distance >= 0 && info.distance < best.distance){
+ best = info;
+ hits++;
+ }
+ }
+ }
+ best.hitCount = hits;
+ return best;
+ },
+
+ getReflectionRay: function(P,N,V){
+ var c1 = -N.dot(V);
+ var R1 = Flog.RayTracer.Vector.prototype.add(
+ Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1),
+ V
+ );
+ return new Flog.RayTracer.Ray(P, R1);
+ },
+
+ rayTrace: function(info, ray, scene, depth){
+ // Calc ambient
+ var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience);
+ var oldColor = color;
+ var shininess = Math.pow(10, info.shape.material.gloss + 1);
+
+ for(var i=0; i<scene.lights.length; i++){
+ var light = scene.lights[i];
+
+ // Calc diffuse lighting
+ var v = Flog.RayTracer.Vector.prototype.subtract(
+ light.position,
+ info.position
+ ).normalize();
+
+ if(this.options.renderDiffuse){
+ var L = v.dot(info.normal);
+ if(L > 0.0){
+ color = Flog.RayTracer.Color.prototype.add(
+ color,
+ Flog.RayTracer.Color.prototype.multiply(
+ info.color,
+ Flog.RayTracer.Color.prototype.multiplyScalar(
+ light.color,
+ L
+ )
+ )
+ );
+ }
+ }
+
+ // The greater the depth the more accurate the colours, but
+ // this is exponentially (!) expensive
+ if(depth <= this.options.rayDepth){
+ // calculate reflection ray
+ if(this.options.renderReflections && info.shape.material.reflection > 0)
+ {
+ var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction);
+ var refl = this.testIntersection(reflectionRay, scene, info.shape);
+
+ if (refl.isHit && refl.distance > 0){
+ refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1);
+ } else {
+ refl.color = scene.background.color;
+ }
+
+ color = Flog.RayTracer.Color.prototype.blend(
+ color,
+ refl.color,
+ info.shape.material.reflection
+ );
+ }
+
+ // Refraction
+ /* TODO */
+ }
+
+ /* Render shadows and highlights */
+
+ var shadowInfo = new Flog.RayTracer.IntersectionInfo();
+
+ if(this.options.renderShadows){
+ var shadowRay = new Flog.RayTracer.Ray(info.position, v);
+
+ shadowInfo = this.testIntersection(shadowRay, scene, info.shape);
+ if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){
+ var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5);
+ var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5));
+ color = Flog.RayTracer.Color.prototype.addScalar(vA,dB);
+ }
+ }
+
+ // Phong specular highlights
+ if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){
+ var Lv = Flog.RayTracer.Vector.prototype.subtract(
+ info.shape.position,
+ light.position
+ ).normalize();
+
+ var E = Flog.RayTracer.Vector.prototype.subtract(
+ scene.camera.position,
+ info.shape.position
+ ).normalize();
+
+ var H = Flog.RayTracer.Vector.prototype.subtract(
+ E,
+ Lv
+ ).normalize();
+
+ var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess);
+ color = Flog.RayTracer.Color.prototype.add(
+ Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight),
+ color
+ );
+ }
+ }
+ color.limit();
+ return color;
+ }
+};
+
+
+function renderScene(){
+ var scene = new Flog.RayTracer.Scene();
+
+ scene.camera = new Flog.RayTracer.Camera(
+ new Flog.RayTracer.Vector(0, 0, -15),
+ new Flog.RayTracer.Vector(-0.2, 0, 5),
+ new Flog.RayTracer.Vector(0, 1, 0)
+ );
+
+ scene.background = new Flog.RayTracer.Background(
+ new Flog.RayTracer.Color(0.5, 0.5, 0.5),
+ 0.4
+ );
+
+ var sphere = new Flog.RayTracer.Shape.Sphere(
+ new Flog.RayTracer.Vector(-1.5, 1.5, 2),
+ 1.5,
+ new Flog.RayTracer.Material.Solid(
+ new Flog.RayTracer.Color(0,0.5,0.5),
+ 0.3,
+ 0.0,
+ 0.0,
+ 2.0
+ )
+ );
+
+ var sphere1 = new Flog.RayTracer.Shape.Sphere(
+ new Flog.RayTracer.Vector(1, 0.25, 1),
+ 0.5,
+ new Flog.RayTracer.Material.Solid(
+ new Flog.RayTracer.Color(0.9,0.9,0.9),
+ 0.1,
+ 0.0,
+ 0.0,
+ 1.5
+ )
+ );
+
+ var plane = new Flog.RayTracer.Shape.Plane(
+ new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(),
+ 1.2,
+ new Flog.RayTracer.Material.Chessboard(
+ new Flog.RayTracer.Color(1,1,1),
+ new Flog.RayTracer.Color(0,0,0),
+ 0.2,
+ 0.0,
+ 1.0,
+ 0.7
+ )
+ );
+
+ scene.shapes.push(plane);
+ scene.shapes.push(sphere);
+ scene.shapes.push(sphere1);
+
+ var light = new Flog.RayTracer.Light(
+ new Flog.RayTracer.Vector(5, 10, -1),
+ new Flog.RayTracer.Color(0.8, 0.8, 0.8)
+ );
+
+ var light1 = new Flog.RayTracer.Light(
+ new Flog.RayTracer.Vector(-3, 5, -15),
+ new Flog.RayTracer.Color(0.8, 0.8, 0.8),
+ 100
+ );
+
+ scene.lights.push(light);
+ scene.lights.push(light1);
+
+ var imageWidth = 100; // $F('imageWidth');
+ var imageHeight = 100; // $F('imageHeight');
+ var pixelSize = "5,5".split(','); // $F('pixelSize').split(',');
+ var renderDiffuse = true; // $F('renderDiffuse');
+ var renderShadows = true; // $F('renderShadows');
+ var renderHighlights = true; // $F('renderHighlights');
+ var renderReflections = true; // $F('renderReflections');
+ var rayDepth = 2;//$F('rayDepth');
+
+ var raytracer = new Flog.RayTracer.Engine(
+ {
+ canvasWidth: imageWidth,
+ canvasHeight: imageHeight,
+ pixelWidth: pixelSize[0],
+ pixelHeight: pixelSize[1],
+ "renderDiffuse": renderDiffuse,
+ "renderHighlights": renderHighlights,
+ "renderShadows": renderShadows,
+ "renderReflections": renderReflections,
+ "rayDepth": rayDepth
+ }
+ );
+
+ raytracer.renderScene(scene, null, 0);
+}
diff --git a/tests/benchmarks/script/v8/tests/regexp.js b/tests/benchmarks/script/v8/tests/regexp.js
new file mode 100644
index 0000000000..71b9e6362c
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/regexp.js
@@ -0,0 +1,1764 @@
+// Copyright 2010 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Automatically generated on 2009-01-30. Manually updated on 2010-09-17.
+
+// This benchmark is generated by loading 50 of the most popular pages
+// on the web and logging all regexp operations performed. Each
+// operation is given a weight that is calculated from an estimate of
+// the popularity of the pages where it occurs and the number of times
+// it is executed while loading each page. Furthermore the literal
+// letters in the data are encoded using ROT13 in a way that does not
+// affect how the regexps match their input. Finally the strings are
+// scrambled to exercise the regexp engine on different input strings.
+
+
+var RegExp = new BenchmarkSuite('RegExp', 910985, [
+ new Benchmark("RegExp", RegExpRun, RegExpSetup, RegExpTearDown)
+]);
+
+var regExpBenchmark = null;
+
+function RegExpSetup() {
+ regExpBenchmark = new RegExpBenchmark();
+ RegExpRun(); // run once to get system initialized
+}
+
+function RegExpRun() {
+ regExpBenchmark.run();
+}
+
+function RegExpTearDown() {
+ regExpBenchmark = null;
+}
+
+// Returns an array of n different variants of the input string str.
+// The variants are computed by randomly rotating one random
+// character.
+function computeInputVariants(str, n) {
+ var variants = [ str ];
+ for (var i = 1; i < n; i++) {
+ var pos = Math.floor(Math.random() * str.length);
+ var chr = String.fromCharCode((str.charCodeAt(pos) + Math.floor(Math.random() * 128)) % 128);
+ variants[i] = str.substring(0, pos) + chr + str.substring(pos + 1, str.length);
+ }
+ return variants;
+}
+
+function RegExpBenchmark() {
+ var re0 = /^ba/;
+ var re1 = /(((\w+):\/\/)([^\/:]*)(:(\d+))?)?([^#?]*)(\?([^#]*))?(#(.*))?/;
+ var re2 = /^\s*|\s*$/g;
+ var re3 = /\bQBZPbageby_cynprubyqre\b/;
+ var re4 = /,/;
+ var re5 = /\bQBZPbageby_cynprubyqre\b/g;
+ var re6 = /^[\s\xa0]+|[\s\xa0]+$/g;
+ var re7 = /(\d*)(\D*)/g;
+ var re8 = /=/;
+ var re9 = /(^|\s)lhv\-h(\s|$)/;
+ var str0 = 'Zbmvyyn/5.0 (Jvaqbjf; H; Jvaqbjf AG 5.1; ra-HF) NccyrJroXvg/528.9 (XUGZY, yvxr Trpxb) Puebzr/2.0.157.0 Fnsnev/528.9';
+ var re10 = /\#/g;
+ var re11 = /\./g;
+ var re12 = /'/g;
+ var re13 = /\?[\w\W]*(sevraqvq|punaaryvq|tebhcvq)=([^\&\?#]*)/i;
+ var str1 = 'Fubpxjnir Synfu 9.0 e115';
+ var re14 = /\s+/g;
+ var re15 = /^\s*(\S*(\s+\S+)*)\s*$/;
+ var re16 = /(-[a-z])/i;
+
+ var s0 = computeInputVariants('pyvpx', 6511);
+ var s1 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 1844);
+ var s2 = computeInputVariants('QBZPbageby_cynprubyqre', 739);
+ var s3 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 598);
+ var s4 = computeInputVariants('uggc://jjj.snprobbx.pbz/fepu.cuc', 454);
+ var s5 = computeInputVariants('qqqq, ZZZ q, llll', 352);
+ var s6 = computeInputVariants('vachggrkg QBZPbageby_cynprubyqre', 312);
+ var s7 = computeInputVariants('/ZlFcnprUbzrcntr/Vaqrk-FvgrUbzr,10000000', 282);
+ var s8 = computeInputVariants('vachggrkg', 177);
+ var s9 = computeInputVariants('528.9', 170);
+ var s10 = computeInputVariants('528', 170);
+ var s11 = computeInputVariants('VCPhygher=ra-HF', 156);
+ var s12 = computeInputVariants('CersreerqPhygher=ra-HF', 156);
+ var s13 = computeInputVariants('xrlcerff', 144);
+ var s14 = computeInputVariants('521', 139);
+ var s15 = computeInputVariants(str0, 139);
+ var s16 = computeInputVariants('qvi .so_zrah', 137);
+ var s17 = computeInputVariants('qvi.so_zrah', 137);
+ var s18 = computeInputVariants('uvqqra_ryrz', 117);
+ var s19 = computeInputVariants('sevraqfgre_naba=nvq%3Qn6ss9p85n868ro9s059pn854735956o3%26ers%3Q%26df%3Q%26vpgl%3QHF', 95);
+ var s20 = computeInputVariants('uggc://ubzr.zlfcnpr.pbz/vaqrk.psz', 93);
+ var s21 = computeInputVariants(str1, 92);
+ var s22 = computeInputVariants('svefg', 85);
+ var s23 = computeInputVariants('uggc://cebsvyr.zlfcnpr.pbz/vaqrk.psz', 85);
+ var s24 = computeInputVariants('ynfg', 85);
+ var s25 = computeInputVariants('qvfcynl', 85);
+
+ function runBlock0() {
+ for (var i = 0; i < 6511; i++) {
+ re0.exec(s0[i]);
+ }
+ for (var i = 0; i < 1844; i++) {
+ re1.exec(s1[i]);
+ }
+ for (var i = 0; i < 739; i++) {
+ s2[i].replace(re2, '');
+ }
+ for (var i = 0; i < 598; i++) {
+ re1.exec(s3[i]);
+ }
+ for (var i = 0; i < 454; i++) {
+ re1.exec(s4[i]);
+ }
+ for (var i = 0; i < 352; i++) {
+ /qqqq|qqq|qq|q|ZZZZ|ZZZ|ZZ|Z|llll|ll|l|uu|u|UU|U|zz|z|ff|f|gg|g|sss|ss|s|mmm|mm|m/g.exec(s5[i]);
+ }
+ for (var i = 0; i < 312; i++) {
+ re3.exec(s6[i]);
+ }
+ for (var i = 0; i < 282; i++) {
+ re4.exec(s7[i]);
+ }
+ for (var i = 0; i < 177; i++) {
+ s8[i].replace(re5, '');
+ }
+ for (var i = 0; i < 170; i++) {
+ s9[i].replace(re6, '');
+ re7.exec(s10[i]);
+ }
+ for (var i = 0; i < 156; i++) {
+ re8.exec(s11[i]);
+ re8.exec(s12[i]);
+ }
+ for (var i = 0; i < 144; i++) {
+ re0.exec(s13[i]);
+ }
+ for (var i = 0; i < 139; i++) {
+ s14[i].replace(re6, '');
+ re7.exec(s14[i]);
+ re9.exec('');
+ /JroXvg\/(\S+)/.exec(s15[i]);
+ }
+ for (var i = 0; i < 137; i++) {
+ s16[i].replace(re10, '');
+ s16[i].replace(/\[/g, '');
+ s17[i].replace(re11, '');
+ }
+ for (var i = 0; i < 117; i++) {
+ s18[i].replace(re2, '');
+ }
+ for (var i = 0; i < 95; i++) {
+ /(?:^|;)\s*sevraqfgre_ynat=([^;]*)/.exec(s19[i]);
+ }
+ for (var i = 0; i < 93; i++) {
+ s20[i].replace(re12, '');
+ re13.exec(s20[i]);
+ }
+ for (var i = 0; i < 92; i++) {
+ s21[i].replace(/([a-zA-Z]|\s)+/, '');
+ }
+ for (var i = 0; i < 85; i++) {
+ s22[i].replace(re14, '');
+ s22[i].replace(re15, '');
+ s23[i].replace(re12, '');
+ s24[i].replace(re14, '');
+ s24[i].replace(re15, '');
+ re16.exec(s25[i]);
+ re13.exec(s23[i]);
+ }
+ }
+ var re17 = /(^|[^\\])\"\\\/Qngr\((-?[0-9]+)\)\\\/\"/g;
+ var str2 = '{"anzr":"","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":gehr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"\xa4","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":gehr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, qq ZZZZ llll UU:zz:ff","YbatQngrCnggrea":"qqqq, qq ZZZZ llll","YbatGvzrCnggrea":"UU:zz:ff","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"ZZ/qq/llll","FubegGvzrCnggrea":"UU:zz","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"llll ZZZZ","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":gehr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+ var str3 = '{"anzr":"ra-HF","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":snyfr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"$","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":snyfr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, ZZZZ qq, llll u:zz:ff gg","YbatQngrCnggrea":"qqqq, ZZZZ qq, llll","YbatGvzrCnggrea":"u:zz:ff gg","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"Z/q/llll","FubegGvzrCnggrea":"u:zz gg","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"ZZZZ, llll","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":snyfr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+ var str4 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str5 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re18 = /^\s+|\s+$/g;
+ var str6 = 'uggc://jjj.snprobbx.pbz/vaqrk.cuc';
+ var re19 = /(?:^|\s+)ba(?:\s+|$)/;
+ var re20 = /[+, ]/;
+ var re21 = /ybnqrq|pbzcyrgr/;
+ var str7 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(d1)c=d1.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+d1.Cnaryf[c].Jvqgu,o=g+d1.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(d1&&d1.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(d1)d1.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(d1)d1.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;d1.IjTc=d2(n,c){ine nq=d1;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;d1.IjTpy=d2(n,c,p){ine cn=d1.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;d1.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;d1.IjYvzvg1=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;d1.IjYvzvg0=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;d1.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",d1.rvsg);};;d1.IjNavzSHC=d2(n,c){ine nq=d1;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;d1.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;d1.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;d1.IjPnapryNyyGvzrbhgf=d2(n){vs(d1.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<d1.bac;c++)IjPnapryGvzrbhg(n,c);};;d1.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;d1.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;d1.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<d1.bac;c++)IjErfrgGvzrbhg(n,c);};;d1.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;d1.IjPyrnaHc=d2(n){IjCvat(n,"G");ine nq=d1;sbe(ine v=0;v<nq.Cnaryf.yratgu;v++){IjUvqrCnary(n,v,gehr);}gel{IjTrgBow(nq.gya).vaareUGZY="";}pngpu(r){}vs(nq.gya!=nq.gya2)gel{IjTrgBow(nq.gya2).vaareUGZY="";}pngpu(r){}gel{d1=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"haybnq","IjHayNQ_VQ");}pngpu(r){}gel{jvaqbj.IjHayNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"fpebyy","IjFeNQ_VQ");}pngpu(r){}gel{jvaqbj.IjFeNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"erfvmr","IjEmNQ_VQ");}pngpu(r){}gel{jvaqbj.IjEmNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n';
+ var str8 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=shapgvba(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=shapgvba(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=shapgvba(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=shapgvba(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=shapgvba(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=shapgvba(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=shapgvba(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=shapgvba(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbir';
+ var str9 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=d2(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=d2(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjPyrna';
+
+ var s26 = computeInputVariants('VC=74.125.75.1', 81);
+ var s27 = computeInputVariants('9.0 e115', 78);
+ var s28 = computeInputVariants('k',78);
+ var s29 = computeInputVariants(str2, 81);
+ var s30 = computeInputVariants(str3, 81);
+ var s31 = computeInputVariants('144631658', 78);
+ var s32 = computeInputVariants('Pbhagel=IIZ%3Q', 78);
+ var s33 = computeInputVariants('Pbhagel=IIZ=', 78);
+ var s34 = computeInputVariants('CersreerqPhygherCraqvat=', 78);
+ var s35 = computeInputVariants(str4, 78);
+ var s36 = computeInputVariants(str5, 78);
+ var s37 = computeInputVariants('__hgzp=144631658', 78);
+ var s38 = computeInputVariants('gvzrMbar=-8', 78);
+ var s39 = computeInputVariants('gvzrMbar=0', 78);
+ // var s40 = computeInputVariants(s15[i], 78);
+ var s41 = computeInputVariants('vachggrkg QBZPbageby_cynprubyqre', 78);
+ var s42 = computeInputVariants('xrlqbja', 78);
+ var s43 = computeInputVariants('xrlhc', 78);
+ var s44 = computeInputVariants('uggc://zrffntvat.zlfcnpr.pbz/vaqrk.psz', 77);
+ var s45 = computeInputVariants('FrffvbaFgbentr=%7O%22GnoThvq%22%3N%7O%22thvq%22%3N1231367125017%7Q%7Q', 73);
+ var s46 = computeInputVariants(str6, 72);
+ var s47 = computeInputVariants('3.5.0.0', 70);
+ var s48 = computeInputVariants(str7, 70);
+ var s49 = computeInputVariants(str8, 70);
+ var s50 = computeInputVariants(str9, 70);
+ var s51 = computeInputVariants('NI%3Q1_CI%3Q1_PI%3Q1_EI%3Q1_HI%3Q1_HP%3Q1_IC%3Q0.0.0.0_IH%3Q0', 70);
+ var s52 = computeInputVariants('svz_zlfcnpr_ubzrcntr_abgybttrqva,svz_zlfcnpr_aba_HTP,svz_zlfcnpr_havgrq-fgngrf', 70);
+ var s53 = computeInputVariants('ybnqvat', 70);
+ var s54 = computeInputVariants('#', 68);
+ var s55 = computeInputVariants('ybnqrq', 68);
+ var s56 = computeInputVariants('pbybe', 49);
+ var s57 = computeInputVariants('uggc://sevraqf.zlfcnpr.pbz/vaqrk.psz', 44);
+
+ function runBlock1() {
+ for (var i = 0; i < 81; i++) {
+ re8.exec(s26[i]);
+ }
+ for (var i = 0; i < 78; i++) {
+ s27[i].replace(/(\s)+e/, '');
+ s28[i].replace(/./, '');
+ s29[i].replace(re17, '');
+ s30[i].replace(re17, '');
+ re8.exec(s31[i]);
+ re8.exec(s32[i]);
+ re8.exec(s33[i]);
+ re8.exec(s34[i]);
+ re8.exec(s35[i]);
+ re8.exec(s36[i]);
+ re8.exec(s37[i]);
+ re8.exec(s38[i]);
+ re8.exec(s39[i]);
+ /Fnsnev\/(\d+\.\d+)/.exec(s15[i]);
+ re3.exec(s41[i]);
+ re0.exec(s42[i]);
+ re0.exec(s43[i]);
+ }
+ for (var i = 0; i < 77; i++) {
+ s44[i].replace(re12, '');
+ re13.exec(s44[i]);
+ }
+ for (var i = 0; i < 73; i++) {
+ s45[i].replace(re18, '');
+ }
+ for (var i = 0; i < 72; i++) {
+ re1.exec(s46[i]);
+ }
+ for (var i = 0; i < 71; i++) {
+ re19.exec('');
+ }
+ for (var i = 0; i < 70; i++) {
+ s47[i].replace(re11, '');
+ s48[i].replace(/d1/g, '');
+ s49[i].replace(/NQ_VQ/g, '');
+ s50[i].replace(/d2/g, '');
+ s51[i].replace(/_/g, '');
+ s52[i].split(re20);
+ re21.exec(s53[i]);
+ }
+ for (var i = 0; i < 68; i++) {
+ re1.exec(s54[i]);
+ /(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))/.exec(s15[i]);
+ /(Znp BF K)|(Jvaqbjf;)/.exec(s15[i]);
+ /Trpxb\/([0-9]+)/.exec(s15[i]);
+ re21.exec(s55[i]);
+ }
+ for (var i = 0; i < 49; i++) {
+ re16.exec(s56[i]);
+ }
+ for (var i = 0; i < 44; i++) {
+ s57[i].replace(re12, '');
+ re13.exec(s57[i]);
+ }
+ }
+ var re22 = /\bso_zrah\b/;
+ var re23 = /^(?:(?:[^:\/?#]+):)?(?:\/\/(?:[^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/;
+ var re24 = /uggcf?:\/\/([^\/]+\.)?snprobbx\.pbz\//;
+ var re25 = /"/g;
+ var re26 = /^([^?#]+)(?:\?([^#]*))?(#.*)?/;
+ var s57a = computeInputVariants('fryrpgrq', 40);
+ var s58 = computeInputVariants('vachggrkg uvqqra_ryrz', 40);
+ var s59 = computeInputVariants('vachggrkg ', 40);
+ var s60 = computeInputVariants('vachggrkg', 40);
+ var s61 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 40);
+ var s62 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 40);
+ var s63 = computeInputVariants('Funer guvf tnqtrg', 40);
+ var s64 = computeInputVariants('uggc://jjj.tbbtyr.pbz/vt/qverpgbel', 40);
+ var s65 = computeInputVariants('419', 40);
+ var s66 = computeInputVariants('gvzrfgnzc', 40);
+
+ function runBlock2() {
+ for (var i = 0; i < 40; i++) {
+ s57a[i].replace(re14, '');
+ s57a[i].replace(re15, '');
+ }
+ for (var i = 0; i < 39; i++) {
+ s58[i].replace(/\buvqqra_ryrz\b/g, '');
+ re3.exec(s59[i]);
+ re3.exec(s60[i]);
+ re22.exec('HVYvaxOhggba');
+ re22.exec('HVYvaxOhggba_E');
+ re22.exec('HVYvaxOhggba_EJ');
+ re22.exec('zrah_ybtva_pbagnvare');
+ /\buvqqra_ryrz\b/.exec('vachgcnffjbeq');
+ }
+ for (var i = 0; i < 37; i++) {
+ re8.exec('111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+ re8.exec('SbeprqRkcvengvba=633669315660164980');
+ re8.exec('FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+ }
+ for (var i = 0; i < 35; i++) {
+ 'puvyq p1 svefg'.replace(re14, '');
+ 'puvyq p1 svefg'.replace(re15, '');
+ 'sylbhg pybfrq'.replace(re14, '');
+ 'sylbhg pybfrq'.replace(re15, '');
+ }
+ for (var i = 0; i < 34; i++) {
+ re19.exec('gno2');
+ re19.exec('gno3');
+ re8.exec('44132r503660');
+ re8.exec('SbeprqRkcvengvba=633669316860113296');
+ re8.exec('AFP_zp_dfctwzs-aowb_80=44132r503660');
+ re8.exec('FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+ re8.exec('s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+ }
+ for (var i = 0; i < 32; i++) {
+ /puebzr/i.exec(s15[i]);
+ }
+ for (var i = 0; i < 31; i++) {
+ s61[i].replace(re23, '');
+ re8.exec('SbeprqRkcvengvba=633669358527244818');
+ re8.exec('VC=66.249.85.130');
+ re8.exec('FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+ re8.exec('s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+ re24.exec(s61[i]);
+ }
+ for (var i = 0; i < 30; i++) {
+ s65[i].replace(re6, '');
+ /(?:^|\s+)gvzrfgnzc(?:\s+|$)/.exec(s66[i]);
+ re7.exec(s65[i]);
+ }
+ for (var i = 0; i < 29; i++) {
+ s62[i].replace(re23, '');
+ }
+ for (var i = 0; i < 28; i++) {
+ s63[i].replace(re25, '');
+ s63[i].replace(re12, '');
+ re26.exec(s64[i]);
+ }
+ }
+ var re27 = /-\D/g;
+ var re28 = /\bnpgvingr\b/;
+ var re29 = /%2R/gi;
+ var re30 = /%2S/gi;
+ var re31 = /^(mu-(PA|GJ)|wn|xb)$/;
+ var re32 = /\s?;\s?/;
+ var re33 = /%\w?$/;
+ var re34 = /TNQP=([^;]*)/i;
+ var str10 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str11 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; __hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1; __hgzo=144631658.0.10.1231363570; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str12 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363514065&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363514065&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Subzr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1326469221.1231363557&tn_fvq=1231363557&tn_uvq=1114636509&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str13 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str14 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re35 = /[<>]/g;
+ var str15 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=44132r503660';
+ var str16 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; AFP_zp_dfctwzs-aowb_80=44132r503660; __hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1; __hgzo=144631658.0.10.1231363638; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str17 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363621014&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363621014&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=348699119.1231363624&tn_fvq=1231363624&tn_uvq=895511034&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str18 = 'uggc://jjj.yrobapbva.se/yv';
+ var str19 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str20 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+
+ var s67 = computeInputVariants('e115', 27);
+ var s68 = computeInputVariants('qvfcynl', 27);
+ var s69 = computeInputVariants('cbfvgvba', 27);
+ var s70 = computeInputVariants('uggc://jjj.zlfcnpr.pbz/', 27);
+ var s71 = computeInputVariants('cntrivrj', 27);
+ var s72 = computeInputVariants('VC=74.125.75.3', 27);
+ var s73 = computeInputVariants('ra', 27);
+ var s74 = computeInputVariants(str10, 27);
+ var s75 = computeInputVariants(str11, 27);
+ var s76 = computeInputVariants(str12, 27);
+ var s77 = computeInputVariants(str17, 27);
+ var s78 = computeInputVariants(str18, 27);
+
+ function runBlock3() {
+ for (var i = 0; i < 27; i++) {
+ s67[i].replace(/[A-Za-z]/g, '');
+ }
+ for (var i = 0; i < 23; i++) {
+ s68[i].replace(re27, '');
+ s69[i].replace(re27, '');
+ }
+ for (var i = 0; i < 22; i++) {
+ 'unaqyr'.replace(re14, '');
+ 'unaqyr'.replace(re15, '');
+ 'yvar'.replace(re14, '');
+ 'yvar'.replace(re15, '');
+ 'cnerag puebzr6 fvatyr1 gno'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno'.replace(re15, '');
+ 'fyvqre'.replace(re14, '');
+ 'fyvqre'.replace(re15, '');
+ re28.exec('');
+ }
+ for (var i = 0; i < 21; i++) {
+ s70[i].replace(re12, '');
+ re13.exec(s70[i]);
+ }
+ for (var i = 0; i < 20; i++) {
+ s71[i].replace(re29, '');
+ s71[i].replace(re30, '');
+ re19.exec('ynfg');
+ re19.exec('ba svefg');
+ re8.exec(s72[i]);
+ }
+ for (var i = 0; i < 19; i++) {
+ re31.exec(s73[i]);
+ }
+ for (var i = 0; i < 18; i++) {
+ s74[i].split(re32);
+ s75[i].split(re32);
+ s76[i].replace(re33, '');
+ re8.exec('144631658.0.10.1231363570');
+ re8.exec('144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+ re8.exec(str13);
+ re8.exec(str14);
+ re8.exec('__hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+ re8.exec('__hgzo=144631658.0.10.1231363570');
+ re8.exec('__hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s74[i]);
+ re34.exec(s75[i]);
+ }
+ for (var i = 0; i < 17; i++) {
+ s15[i].match(/zfvr/gi);
+ s15[i].match(/bcren/gi);
+ str15.split(re32);
+ str16.split(re32);
+ 'ohggba'.replace(re14, '');
+ 'ohggba'.replace(re15, '');
+ 'puvyq p1 svefg sylbhg pybfrq'.replace(re14, '');
+ 'puvyq p1 svefg sylbhg pybfrq'.replace(re15, '');
+ 'pvgvrf'.replace(re14, '');
+ 'pvgvrf'.replace(re15, '');
+ 'pybfrq'.replace(re14, '');
+ 'pybfrq'.replace(re15, '');
+ 'qry'.replace(re14, '');
+ 'qry'.replace(re15, '');
+ 'uqy_zba'.replace(re14, '');
+ 'uqy_zba'.replace(re15, '');
+ s77[i].replace(re33, '');
+ s78[i].replace(/%3P/g, '');
+ s78[i].replace(/%3R/g, '');
+ s78[i].replace(/%3q/g, '');
+ s78[i].replace(re35, '');
+ 'yvaxyvfg16'.replace(re14, '');
+ 'yvaxyvfg16'.replace(re15, '');
+ 'zvahf'.replace(re14, '');
+ 'zvahf'.replace(re15, '');
+ 'bcra'.replace(re14, '');
+ 'bcra'.replace(re15, '');
+ 'cnerag puebzr5 fvatyr1 ps NU'.replace(re14, '');
+ 'cnerag puebzr5 fvatyr1 ps NU'.replace(re15, '');
+ 'cynlre'.replace(re14, '');
+ 'cynlre'.replace(re15, '');
+ 'cyhf'.replace(re14, '');
+ 'cyhf'.replace(re15, '');
+ 'cb_uqy'.replace(re14, '');
+ 'cb_uqy'.replace(re15, '');
+ 'hyJVzt'.replace(re14, '');
+ 'hyJVzt'.replace(re15, '');
+ re8.exec('144631658.0.10.1231363638');
+ re8.exec('144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+ re8.exec('4413268q3660');
+ re8.exec('4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+ re8.exec('SbeprqRkcvengvba=633669321699093060');
+ re8.exec('VC=74.125.75.20');
+ re8.exec(str19);
+ re8.exec(str20);
+ re8.exec('AFP_zp_tfwsbrg-aowb_80=4413268q3660');
+ re8.exec('FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+ re8.exec('__hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+ re8.exec('__hgzo=144631658.0.10.1231363638');
+ re8.exec('__hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str15);
+ re34.exec(str16);
+ }
+ }
+ var re36 = /uers|fep|fryrpgrq/;
+ var re37 = /\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g;
+ var re38 = /^(\w+|\*)$/;
+ var str21 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str22 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; __hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1; __hgzo=144631658.0.10.1231367822; __hgzp=144631658; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str23 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367803797&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367803797&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Szrffntvat.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1192552091.1231367807&tn_fvq=1231367807&tn_uvq=1155446857&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str24 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str25 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str26 = 'hy.ynat-fryrpgbe';
+ var re39 = /\\/g;
+ var re40 = / /g;
+ var re41 = /\/\xc4\/t/;
+ var re42 = /\/\xd6\/t/;
+ var re43 = /\/\xdc\/t/;
+ var re44 = /\/\xdf\/t/;
+ var re45 = /\/\xe4\/t/;
+ var re46 = /\/\xf6\/t/;
+ var re47 = /\/\xfc\/t/;
+ var re48 = /\W/g;
+ var re49 = /uers|fep|fglyr/;
+ var s79 = computeInputVariants(str21, 16);
+ var s80 = computeInputVariants(str22, 16);
+ var s81 = computeInputVariants(str23, 16);
+ var s82 = computeInputVariants(str26, 16);
+
+ function runBlock4() {
+ for (var i = 0; i < 16; i++) {
+ ''.replace(/\*/g, '');
+ /\bnpgvir\b/.exec('npgvir');
+ /sversbk/i.exec(s15[i]);
+ re36.exec('glcr');
+ /zfvr/i.exec(s15[i]);
+ /bcren/i.exec(s15[i]);
+ }
+ for (var i = 0; i < 15; i++) {
+ s79[i].split(re32);
+ s80[i].split(re32);
+ 'uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+ s81[i].replace(re33, '');
+ 'yv'.replace(re37, '');
+ 'yv'.replace(re18, '');
+ re8.exec('144631658.0.10.1231367822');
+ re8.exec('144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+ re8.exec(str24);
+ re8.exec(str25);
+ re8.exec('__hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+ re8.exec('__hgzo=144631658.0.10.1231367822');
+ re8.exec('__hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s79[i]);
+ re34.exec(s80[i]);
+ /\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g.exec(s82[i]);
+ re13.exec('uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz');
+ re38.exec('yv');
+ }
+ for (var i = 0; i < 14; i++) {
+ ''.replace(re18, '');
+ '9.0 e115'.replace(/(\s+e|\s+o[0-9]+)/, '');
+ 'Funer guvf tnqtrg'.replace(/</g, '');
+ 'Funer guvf tnqtrg'.replace(/>/g, '');
+ 'Funer guvf tnqtrg'.replace(re39, '');
+ 'uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+ 'grnfre'.replace(re40, '');
+ 'grnfre'.replace(re41, '');
+ 'grnfre'.replace(re42, '');
+ 'grnfre'.replace(re43, '');
+ 'grnfre'.replace(re44, '');
+ 'grnfre'.replace(re45, '');
+ 'grnfre'.replace(re46, '');
+ 'grnfre'.replace(re47, '');
+ 'grnfre'.replace(re48, '');
+ re16.exec('znetva-gbc');
+ re16.exec('cbfvgvba');
+ re19.exec('gno1');
+ re9.exec('qz');
+ re9.exec('qg');
+ re9.exec('zbqobk');
+ re9.exec('zbqobkva');
+ re9.exec('zbqgvgyr');
+ re13.exec('uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz');
+ re26.exec('/vt/znvytnqtrg');
+ re49.exec('glcr');
+ }
+ }
+ var re50 = /(?:^|\s+)fryrpgrq(?:\s+|$)/;
+ var re51 = /\&/g;
+ var re52 = /\+/g;
+ var re53 = /\?/g;
+ var re54 = /\t/g;
+ var re55 = /(\$\{nqiHey\})|(\$nqiHey\b)/g;
+ var re56 = /(\$\{cngu\})|(\$cngu\b)/g;
+ function runBlock5() {
+ for (var i = 0; i < 13; i++) {
+ 'purpx'.replace(re14, '');
+ 'purpx'.replace(re15, '');
+ 'pvgl'.replace(re14, '');
+ 'pvgl'.replace(re15, '');
+ 'qrpe fyvqrgrkg'.replace(re14, '');
+ 'qrpe fyvqrgrkg'.replace(re15, '');
+ 'svefg fryrpgrq'.replace(re14, '');
+ 'svefg fryrpgrq'.replace(re15, '');
+ 'uqy_rag'.replace(re14, '');
+ 'uqy_rag'.replace(re15, '');
+ 'vape fyvqrgrkg'.replace(re14, '');
+ 'vape fyvqrgrkg'.replace(re15, '');
+ 'vachggrkg QBZPbageby_cynprubyqre'.replace(re5, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re15, '');
+ 'cb_guz'.replace(re14, '');
+ 'cb_guz'.replace(re15, '');
+ 'fhozvg'.replace(re14, '');
+ 'fhozvg'.replace(re15, '');
+ re50.exec('');
+ /NccyrJroXvg\/([^\s]*)/.exec(s15[i]);
+ /XUGZY/.exec(s15[i]);
+ }
+ for (var i = 0; i < 12; i++) {
+ '${cebg}://${ubfg}${cngu}/${dz}'.replace(/(\$\{cebg\})|(\$cebg\b)/g, '');
+ '1'.replace(re40, '');
+ '1'.replace(re10, '');
+ '1'.replace(re51, '');
+ '1'.replace(re52, '');
+ '1'.replace(re53, '');
+ '1'.replace(re39, '');
+ '1'.replace(re54, '');
+ '9.0 e115'.replace(/^(.*)\..*$/, '');
+ '9.0 e115'.replace(/^.*e(.*)$/, '');
+ '<!-- ${nqiHey} -->'.replace(re55, '');
+ '<fpevcg glcr="grkg/wninfpevcg" fep="${nqiHey}"></fpevcg>'.replace(re55, '');
+ s21[i].replace(/^.*\s+(\S+\s+\S+$)/, '');
+ 'tzk%2Subzrcntr%2Sfgneg%2Sqr%2S'.replace(re30, '');
+ 'tzk'.replace(re30, '');
+ 'uggc://${ubfg}${cngu}/${dz}'.replace(/(\$\{ubfg\})|(\$ubfg\b)/g, '');
+ 'uggc://nqpyvrag.hvzfrei.arg${cngu}/${dz}'.replace(re56, '');
+ 'uggc://nqpyvrag.hvzfrei.arg/wf.at/${dz}'.replace(/(\$\{dz\})|(\$dz\b)/g, '');
+ 'frpgvba'.replace(re29, '');
+ 'frpgvba'.replace(re30, '');
+ 'fvgr'.replace(re29, '');
+ 'fvgr'.replace(re30, '');
+ 'fcrpvny'.replace(re29, '');
+ 'fcrpvny'.replace(re30, '');
+ re36.exec('anzr');
+ /e/.exec('9.0 e115');
+ }
+ }
+ var re57 = /##yv4##/gi;
+ var re58 = /##yv16##/gi;
+ var re59 = /##yv19##/gi;
+ var str27 = '<hy pynff="nqi">##yv4##Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str28 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str29 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str30 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str31 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> ##N##Yrnea zber##/N##</hy>';
+ var str32 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> <n uers="uggc://znvy.yvir.pbz/znvy/nobhg.nfck" gnetrg="_oynax">Yrnea zber##/N##</hy>';
+ var str33 = 'Bar Jvaqbjf Yvir VQ trgf lbh vagb <o>Ubgznvy</o>, <o>Zrffratre</o>, <o>Kobk YVIR</o> \u2014 naq bgure cynprf lbh frr #~#argjbexybtb#~#';
+ var re60 = /(?:^|\s+)bss(?:\s+|$)/;
+ var re61 = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/;
+ var re62 = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
+ var str34 = '${1}://${2}${3}${4}${5}';
+ var str35 = ' O=6gnyg0g4znrrn&o=3&f=gc; Q=_lyu=K3bQZGSxnT4lZzD3OS9GNmV3ZGLkAQxRpTyxNmRlZmRmAmNkAQLRqTImqNZjOUEgpTjQnJ5xMKtgoN--; SCF=qy';
+ var s83 = computeInputVariants(str27, 11);
+ var s84 = computeInputVariants(str28, 11);
+ var s85 = computeInputVariants(str29, 11);
+ var s86 = computeInputVariants(str30, 11);
+ var s87 = computeInputVariants(str31, 11);
+ var s88 = computeInputVariants(str32, 11);
+ var s89 = computeInputVariants(str33, 11);
+ var s90 = computeInputVariants(str34, 11);
+
+ function runBlock6() {
+ for (var i = 0; i < 11; i++) {
+ s83[i].replace(/##yv0##/gi, '');
+ s83[i].replace(re57, '');
+ s84[i].replace(re58, '');
+ s85[i].replace(re59, '');
+ s86[i].replace(/##\/o##/gi, '');
+ s86[i].replace(/##\/v##/gi, '');
+ s86[i].replace(/##\/h##/gi, '');
+ s86[i].replace(/##o##/gi, '');
+ s86[i].replace(/##oe##/gi, '');
+ s86[i].replace(/##v##/gi, '');
+ s86[i].replace(/##h##/gi, '');
+ s87[i].replace(/##n##/gi, '');
+ s88[i].replace(/##\/n##/gi, '');
+ s89[i].replace(/#~#argjbexybtb#~#/g, '');
+ / Zbovyr\//.exec(s15[i]);
+ /##yv1##/gi.exec(s83[i]);
+ /##yv10##/gi.exec(s84[i]);
+ /##yv11##/gi.exec(s84[i]);
+ /##yv12##/gi.exec(s84[i]);
+ /##yv13##/gi.exec(s84[i]);
+ /##yv14##/gi.exec(s84[i]);
+ /##yv15##/gi.exec(s84[i]);
+ re58.exec(s84[i]);
+ /##yv17##/gi.exec(s85[i]);
+ /##yv18##/gi.exec(s85[i]);
+ re59.exec(s85[i]);
+ /##yv2##/gi.exec(s83[i]);
+ /##yv20##/gi.exec(s86[i]);
+ /##yv21##/gi.exec(s86[i]);
+ /##yv22##/gi.exec(s86[i]);
+ /##yv23##/gi.exec(s86[i]);
+ /##yv3##/gi.exec(s83[i]);
+ re57.exec(s83[i]);
+ /##yv5##/gi.exec(s84[i]);
+ /##yv6##/gi.exec(s84[i]);
+ /##yv7##/gi.exec(s84[i]);
+ /##yv8##/gi.exec(s84[i]);
+ /##yv9##/gi.exec(s84[i]);
+ re8.exec('473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+ re8.exec('SbeprqRkcvengvba=633669325184628362');
+ re8.exec('FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+ /AbxvnA[^\/]*/.exec(s15[i]);
+ }
+ for (var i = 0; i < 10; i++) {
+ ' bss'.replace(/(?:^|\s+)bss(?:\s+|$)/g, '');
+ s90[i].replace(/(\$\{0\})|(\$0\b)/g, '');
+ s90[i].replace(/(\$\{1\})|(\$1\b)/g, '');
+ s90[i].replace(/(\$\{pbzcyrgr\})|(\$pbzcyrgr\b)/g, '');
+ s90[i].replace(/(\$\{sentzrag\})|(\$sentzrag\b)/g, '');
+ s90[i].replace(/(\$\{ubfgcbeg\})|(\$ubfgcbeg\b)/g, '');
+ s90[i].replace(re56, '');
+ s90[i].replace(/(\$\{cebgbpby\})|(\$cebgbpby\b)/g, '');
+ s90[i].replace(/(\$\{dhrel\})|(\$dhrel\b)/g, '');
+ 'nqfvmr'.replace(re29, '');
+ 'nqfvmr'.replace(re30, '');
+ 'uggc://${2}${3}${4}${5}'.replace(/(\$\{2\})|(\$2\b)/g, '');
+ 'uggc://wf.hv-cbegny.qr${3}${4}${5}'.replace(/(\$\{3\})|(\$3\b)/g, '');
+ 'arjf'.replace(re40, '');
+ 'arjf'.replace(re41, '');
+ 'arjf'.replace(re42, '');
+ 'arjf'.replace(re43, '');
+ 'arjf'.replace(re44, '');
+ 'arjf'.replace(re45, '');
+ 'arjf'.replace(re46, '');
+ 'arjf'.replace(re47, '');
+ 'arjf'.replace(re48, '');
+ / PC=i=(\d+)&oe=(.)/.exec(str35);
+ re60.exec(' ');
+ re60.exec(' bss');
+ re60.exec('');
+ re19.exec(' ');
+ re19.exec('svefg ba');
+ re19.exec('ynfg vtaber');
+ re19.exec('ba');
+ re9.exec('scnq so ');
+ re9.exec('zrqvgobk');
+ re9.exec('hsgy');
+ re9.exec('lhv-h');
+ /Fnsnev|Xbadhrebe|XUGZY/gi.exec(s15[i]);
+ re61.exec('uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+ re62.exec('#Ybtva_rznvy');
+ }
+ }
+ var re63 = /\{0\}/g;
+ var str36 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_tfwsbrg-aowb_80=4413268q3660';
+ var str37 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; AFP_zp_tfwsbrg-aowb_80=4413268q3660; __hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1; __hgzo=144631658.0.10.1231364074; __hgzp=144631658; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str38 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231364057761&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364057761&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Ssevraqf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1667363813.1231364061&tn_fvq=1231364061&tn_uvq=1917563877&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str39 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str40 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var s91 = computeInputVariants(str36, 9);
+ var s92 = computeInputVariants(str37, 9);
+ var s93 = computeInputVariants(str38, 9);
+ function runBlock7() {
+ for (var i = 0; i < 9; i++) {
+ '0'.replace(re40, '');
+ '0'.replace(re10, '');
+ '0'.replace(re51, '');
+ '0'.replace(re52, '');
+ '0'.replace(re53, '');
+ '0'.replace(re39, '');
+ '0'.replace(re54, '');
+ 'Lrf'.replace(re40, '');
+ 'Lrf'.replace(re10, '');
+ 'Lrf'.replace(re51, '');
+ 'Lrf'.replace(re52, '');
+ 'Lrf'.replace(re53, '');
+ 'Lrf'.replace(re39, '');
+ 'Lrf'.replace(re54, '');
+ }
+ for (var i = 0; i < 8; i++) {
+ 'Pybfr {0}'.replace(re63, '');
+ 'Bcra {0}'.replace(re63, '');
+ s91[i].split(re32);
+ s92[i].split(re32);
+ 'puvyq p1 svefg gnournqref'.replace(re14, '');
+ 'puvyq p1 svefg gnournqref'.replace(re15, '');
+ 'uqy_fcb'.replace(re14, '');
+ 'uqy_fcb'.replace(re15, '');
+ 'uvag'.replace(re14, '');
+ 'uvag'.replace(re15, '');
+ s93[i].replace(re33, '');
+ 'yvfg'.replace(re14, '');
+ 'yvfg'.replace(re15, '');
+ 'at_bhgre'.replace(re30, '');
+ 'cnerag puebzr5 qbhoyr2 NU'.replace(re14, '');
+ 'cnerag puebzr5 qbhoyr2 NU'.replace(re15, '');
+ 'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re14, '');
+ 'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re15, '');
+ 'cnerag puebzr6 fvatyr1'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1'.replace(re15, '');
+ 'cb_qrs'.replace(re14, '');
+ 'cb_qrs'.replace(re15, '');
+ 'gnopbagrag'.replace(re14, '');
+ 'gnopbagrag'.replace(re15, '');
+ 'iv_svefg_gvzr'.replace(re30, '');
+ /(^|.)(ronl|qri-ehf3.wbg)(|fgberf|zbgbef|yvirnhpgvbaf|jvxv|rkcerff|punggre).(pbz(|.nh|.pa|.ux|.zl|.ft|.oe|.zk)|pb(.hx|.xe|.am)|pn|qr|se|vg|ay|or|ng|pu|vr|va|rf|cy|cu|fr)$/i.exec('cntrf.ronl.pbz');
+ re8.exec('144631658.0.10.1231364074');
+ re8.exec('144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+ re8.exec('4413241q3660');
+ re8.exec('SbeprqRkcvengvba=633669357391353591');
+ re8.exec(str39);
+ re8.exec(str40);
+ re8.exec('AFP_zp_kkk-gdzogv_80=4413241q3660');
+ re8.exec('FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+ re8.exec('__hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+ re8.exec('__hgzo=144631658.0.10.1231364074');
+ re8.exec('__hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+ re34.exec(s91[i]);
+ re34.exec(s92[i]);
+ }
+ }
+ var re64 = /\b[a-z]/g;
+ var re65 = /^uggc:\/\//;
+ var re66 = /(?:^|\s+)qvfnoyrq(?:\s+|$)/;
+ var str41 = 'uggc://cebsvyr.zlfcnpr.pbz/Zbqhyrf/Nccyvpngvbaf/Cntrf/Pnainf.nfck';
+ function runBlock8() {
+ for (var i = 0; i < 7; i++) {
+ s21[i].match(/\d+/g);
+ 'nsgre'.replace(re64, '');
+ 'orsber'.replace(re64, '');
+ 'obggbz'.replace(re64, '');
+ 'ohvygva_jrngure.kzy'.replace(re65, '');
+ 'ohggba'.replace(re37, '');
+ 'ohggba'.replace(re18, '');
+ 'qngrgvzr.kzy'.replace(re65, '');
+ 'uggc://eff.paa.pbz/eff/paa_gbcfgbevrf.eff'.replace(re65, '');
+ 'vachg'.replace(re37, '');
+ 'vachg'.replace(re18, '');
+ 'vafvqr'.replace(re64, '');
+ 'cbvagre'.replace(re27, '');
+ 'cbfvgvba'.replace(/[A-Z]/g, '');
+ 'gbc'.replace(re27, '');
+ 'gbc'.replace(re64, '');
+ 'hy'.replace(re37, '');
+ 'hy'.replace(re18, '');
+ str26.replace(re37, '');
+ str26.replace(re18, '');
+ 'lbhghor_vtbbtyr/i2/lbhghor.kzy'.replace(re65, '');
+ 'm-vaqrk'.replace(re27, '');
+ /#([\w-]+)/.exec(str26);
+ re16.exec('urvtug');
+ re16.exec('znetvaGbc');
+ re16.exec('jvqgu');
+ re19.exec('gno0 svefg ba');
+ re19.exec('gno0 ba');
+ re19.exec('gno4 ynfg');
+ re19.exec('gno4');
+ re19.exec('gno5');
+ re19.exec('gno6');
+ re19.exec('gno7');
+ re19.exec('gno8');
+ /NqborNVE\/([^\s]*)/.exec(s15[i]);
+ /NccyrJroXvg\/([^ ]*)/.exec(s15[i]);
+ /XUGZY/gi.exec(s15[i]);
+ /^(?:obql|ugzy)$/i.exec('YV');
+ re38.exec('ohggba');
+ re38.exec('vachg');
+ re38.exec('hy');
+ re38.exec(str26);
+ /^(\w+|\*)/.exec(str26);
+ /znp|jva|yvahk/i.exec('Jva32');
+ /eton?\([\d\s,]+\)/.exec('fgngvp');
+ }
+ for (var i = 0; i < 6; i++) {
+ ''.replace(/\r/g, '');
+ '/'.replace(re40, '');
+ '/'.replace(re10, '');
+ '/'.replace(re51, '');
+ '/'.replace(re52, '');
+ '/'.replace(re53, '');
+ '/'.replace(re39, '');
+ '/'.replace(re54, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/{0}?[NDO]&{1}&{2}&[NDR]'.replace(re63, '');
+ str41.replace(re12, '');
+ 'uggc://jjj.snprobbx.pbz/fepu.cuc'.replace(re23, '');
+ 'freivpr'.replace(re40, '');
+ 'freivpr'.replace(re41, '');
+ 'freivpr'.replace(re42, '');
+ 'freivpr'.replace(re43, '');
+ 'freivpr'.replace(re44, '');
+ 'freivpr'.replace(re45, '');
+ 'freivpr'.replace(re46, '');
+ 'freivpr'.replace(re47, '');
+ 'freivpr'.replace(re48, '');
+ /((ZFVR\s+([6-9]|\d\d)\.))/.exec(s15[i]);
+ re66.exec('');
+ re50.exec('fryrpgrq');
+ re8.exec('8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+ re8.exec('SbeprqRkcvengvba=633669340386893867');
+ re8.exec('VC=74.125.75.17');
+ re8.exec('FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+ /Xbadhrebe|Fnsnev|XUGZY/.exec(s15[i]);
+ re13.exec(str41);
+ re49.exec('unfsbphf');
+ }
+ }
+ var re67 = /zrah_byq/g;
+ var str42 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str43 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; __hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1; __hgzo=144631658.0.10.1231364380; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str44 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_vzntrf_wf&qg=1231364373088&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364373088&punaary=svz_zlfcnpr_hfre-ivrj-pbzzragf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Spbzzrag.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1158737789.1231364375&tn_fvq=1231364375&tn_uvq=415520832&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str45 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str46 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re68 = /^([#.]?)((?:[\w\u0128-\uffff*_-]|\\.)*)/;
+ var re69 = /\{1\}/g;
+ var re70 = /\s+/;
+ var re71 = /(\$\{4\})|(\$4\b)/g;
+ var re72 = /(\$\{5\})|(\$5\b)/g;
+ var re73 = /\{2\}/g;
+ var re74 = /[^+>] [^+>]/;
+ var re75 = /\bucpyv\s*=\s*([^;]*)/i;
+ var re76 = /\bucuvqr\s*=\s*([^;]*)/i;
+ var re77 = /\bucfie\s*=\s*([^;]*)/i;
+ var re78 = /\bhfucjrn\s*=\s*([^;]*)/i;
+ var re79 = /\bmvc\s*=\s*([^;]*)/i;
+ var re80 = /^((?:[\w\u0128-\uffff*_-]|\\.)+)(#)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re81 = /^([>+~])\s*(\w*)/i;
+ var re82 = /^>\s*((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re83 = /^[\s[]?shapgvba/;
+ var re84 = /v\/g.tvs#(.*)/i;
+ var str47 = '#Zbq-Vasb-Vasb-WninFpevcgUvag';
+ var str48 = ',n.svryqOgaPnapry';
+ var str49 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_kkk-gdzogv_80=4413241q3660';
+ var str50 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; AFP_zp_kkk-gdzogv_80=4413241q3660; AFP_zp_kkk-aowb_80=4413235p3660; __hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1; __hgzo=144631658.0.10.1231367708; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str51 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367691141&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367691141&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sjjj.zlfcnpr.pbz%2S&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=320757904.1231367694&tn_fvq=1231367694&tn_uvq=1758792003&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str52 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N38%3N42%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=1024k768&p=24&x=L&oj=994&ou=634&uc=A&{2}&[NDR]';
+ var str53 = 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq qbhoyr2 ps';
+ var str54 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str55 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str56 = 'ne;ng;nh;or;oe;pn;pu;py;pa;qr;qx;rf;sv;se;to;ux;vq;vr;va;vg;wc;xe;zk;zl;ay;ab;am;cu;cy;cg;eh;fr;ft;gu;ge;gj;mn;';
+ var str57 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886&GHVQ=1';
+ var str58 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886';
+ var str59 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1';
+ var str60 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF';
+ var str61 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/29/4RQP4969777N048NPS4RRR3PO2S7S.wct';
+ var str62 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/OQ/63NP9O94NS5OQP1249Q9S1ROP7NS3.wct';
+ var str63 = 'zbmvyyn/5.0 (jvaqbjf; h; jvaqbjf ag 5.1; ra-hf) nccyrjroxvg/528.9 (xugzy, yvxr trpxb) puebzr/2.0.157.0 fnsnev/528.9';
+ var s94 = computeInputVariants(str42, 5);
+ var s95 = computeInputVariants(str43, 5);
+ var s96 = computeInputVariants(str44, 5);
+ var s97 = computeInputVariants(str47, 5);
+ var s98 = computeInputVariants(str48, 5);
+ var s99 = computeInputVariants(str49, 5);
+ var s100 = computeInputVariants(str50, 5);
+ var s101 = computeInputVariants(str51, 5);
+ var s102 = computeInputVariants(str52, 5);
+ var s103 = computeInputVariants(str53, 5);
+
+ function runBlock9() {
+ for (var i = 0; i < 5; i++) {
+ s94[i].split(re32);
+ s95[i].split(re32);
+ 'svz_zlfcnpr_hfre-ivrj-pbzzragf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+ s96[i].replace(re33, '');
+ 'zrah_arj zrah_arj_gbttyr zrah_gbttyr'.replace(re67, '');
+ 'zrah_byq zrah_byq_gbttyr zrah_gbttyr'.replace(re67, '');
+ re8.exec('102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+ re8.exec('144631658.0.10.1231364380');
+ re8.exec('144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+ re8.exec('441326q33660');
+ re8.exec('SbeprqRkcvengvba=633669341278771470');
+ re8.exec(str45);
+ re8.exec(str46);
+ re8.exec('AFP_zp_dfctwzssrwh-aowb_80=441326q33660');
+ re8.exec('FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+ re8.exec('__hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+ re8.exec('__hgzo=144631658.0.10.1231364380');
+ re8.exec('__hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ }
+ for (var i = 0; i < 4; i++) {
+ ' yvfg1'.replace(re14, '');
+ ' yvfg1'.replace(re15, '');
+ ' yvfg2'.replace(re14, '');
+ ' yvfg2'.replace(re15, '');
+ ' frneputebhc1'.replace(re14, '');
+ ' frneputebhc1'.replace(re15, '');
+ s97[i].replace(re68, '');
+ s97[i].replace(re18, '');
+ ''.replace(/&/g, '');
+ ''.replace(re35, '');
+ '(..-{0})(\|(\d+)|)'.replace(re63, '');
+ s98[i].replace(re18, '');
+ '//vzt.jro.qr/vij/FC/${cngu}/${anzr}/${inyhr}?gf=${abj}'.replace(re56, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/${anzr}/${inyhr}?gf=${abj}'.replace(/(\$\{anzr\})|(\$anzr\b)/g, '');
+ '<fcna pynff="urnq"><o>Jvaqbjf Yvir Ubgznvy</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re69, '');
+ '<fcna pynff="urnq"><o>{0}</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re63, '');
+ '<fcna pynff="fvtahc"><n uers=uggc://jjj.ubgznvy.pbz><o>{1}</o></n></fcna>'.replace(re69, '');
+ '<fcna pynff="fvtahc"><n uers={0}><o>{1}</o></n></fcna>'.replace(re63, '');
+ 'Vzntrf'.replace(re15, '');
+ 'ZFA'.replace(re15, '');
+ 'Zncf'.replace(re15, '');
+ 'Zbq-Vasb-Vasb-WninFpevcgUvag'.replace(re39, '');
+ 'Arjf'.replace(re15, '');
+ s99[i].split(re32);
+ s100[i].split(re32);
+ 'Ivqrb'.replace(re15, '');
+ 'Jro'.replace(re15, '');
+ 'n'.replace(re39, '');
+ 'nwnkFgneg'.split(re70);
+ 'nwnkFgbc'.split(re70);
+ 'ovaq'.replace(re14, '');
+ 'ovaq'.replace(re15, '');
+ 'oevatf lbh zber. Zber fcnpr (5TO), zber frphevgl, fgvyy serr.'.replace(re63, '');
+ 'puvyq p1 svefg qrpx'.replace(re14, '');
+ 'puvyq p1 svefg qrpx'.replace(re15, '');
+ 'puvyq p1 svefg qbhoyr2'.replace(re14, '');
+ 'puvyq p1 svefg qbhoyr2'.replace(re15, '');
+ 'puvyq p2 ynfg'.replace(re14, '');
+ 'puvyq p2 ynfg'.replace(re15, '');
+ 'puvyq p2'.replace(re14, '');
+ 'puvyq p2'.replace(re15, '');
+ 'puvyq p3'.replace(re14, '');
+ 'puvyq p3'.replace(re15, '');
+ 'puvyq p4 ynfg'.replace(re14, '');
+ 'puvyq p4 ynfg'.replace(re15, '');
+ 'pbclevtug'.replace(re14, '');
+ 'pbclevtug'.replace(re15, '');
+ 'qZFAZR_1'.replace(re14, '');
+ 'qZFAZR_1'.replace(re15, '');
+ 'qbhoyr2 ps'.replace(re14, '');
+ 'qbhoyr2 ps'.replace(re15, '');
+ 'qbhoyr2'.replace(re14, '');
+ 'qbhoyr2'.replace(re15, '');
+ 'uqy_arj'.replace(re14, '');
+ 'uqy_arj'.replace(re15, '');
+ 'uc_fubccvatobk'.replace(re30, '');
+ 'ugzy%2Rvq'.replace(re29, '');
+ 'ugzy%2Rvq'.replace(re30, '');
+ s101[i].replace(re33, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${5}'.replace(re72, '');
+ s102[i].replace(re73, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+ 'vztZFSG'.replace(re14, '');
+ 'vztZFSG'.replace(re15, '');
+ 'zfasbbg1 ps'.replace(re14, '');
+ 'zfasbbg1 ps'.replace(re15, '');
+ s103[i].replace(re14, '');
+ s103[i].replace(re15, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re15, '');
+ 'cevznel'.replace(re14, '');
+ 'cevznel'.replace(re15, '');
+ 'erpgnatyr'.replace(re30, '');
+ 'frpbaqnel'.replace(re14, '');
+ 'frpbaqnel'.replace(re15, '');
+ 'haybnq'.split(re70);
+ '{0}{1}1'.replace(re63, '');
+ '|{1}1'.replace(re69, '');
+ /(..-HF)(\|(\d+)|)/i.exec('xb-xe,ra-va,gu-gu');
+ re4.exec('/ZlFcnprNccf/NccPnainf,45000012');
+ re8.exec('144631658.0.10.1231367708');
+ re8.exec('144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+ re8.exec('4413235p3660');
+ re8.exec('441327q73660');
+ re8.exec('9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+ re8.exec('SbeprqRkcvengvba=633669350559478880');
+ re8.exec(str54);
+ re8.exec(str55);
+ re8.exec('AFP_zp_dfctwzs-aowb_80=441327q73660');
+ re8.exec('AFP_zp_kkk-aowb_80=4413235p3660');
+ re8.exec('FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+ re8.exec('__hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+ re8.exec('__hgzo=144631658.0.10.1231367708');
+ re8.exec('__hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s99[i]);
+ re34.exec(s100[i]);
+ /ZFVR\s+5[.]01/.exec(s15[i]);
+ /HF(?=;)/i.exec(str56);
+ re74.exec(s97[i]);
+ re28.exec('svefg npgvir svefgNpgvir');
+ re28.exec('ynfg');
+ /\bp:(..)/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF');
+ re75.exec(str57);
+ re75.exec(str58);
+ re76.exec(str57);
+ re76.exec(str58);
+ re77.exec(str57);
+ re77.exec(str58);
+ /\bhfucce\s*=\s*([^;]*)/i.exec(str59);
+ re78.exec(str57);
+ re78.exec(str58);
+ /\bjci\s*=\s*([^;]*)/i.exec(str59);
+ re79.exec(str58);
+ re79.exec(str60);
+ re79.exec(str59);
+ /\|p:([a-z]{2})/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1');
+ re80.exec(s97[i]);
+ re61.exec('cebgbglcr.wf');
+ re68.exec(s97[i]);
+ re81.exec(s97[i]);
+ re82.exec(s97[i]);
+ /^Fubpxjnir Synfu (\d)/.exec(s21[i]);
+ /^Fubpxjnir Synfu (\d+)/.exec(s21[i]);
+ re83.exec('[bowrpg tybony]');
+ re62.exec(s97[i]);
+ re84.exec(str61);
+ re84.exec(str62);
+ /jroxvg/.exec(str63);
+ }
+ }
+ var re85 = /eaq_zbqobkva/;
+ var str64 = '1231365729213';
+ var str65 = '74.125.75.3-1057165600.29978900';
+ var str66 = '74.125.75.3-1057165600.29978900.1231365730214';
+ var str67 = 'Frnepu%20Zvpebfbsg.pbz';
+ var str68 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str69 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; __hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1; __hgzo=144631658.0.10.1231365779; __hgzp=144631658; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str70 = 'I=3%26THVQ=757q3ss871q44o7o805n8113n5p72q52';
+ var str71 = 'I=3&THVQ=757q3ss871q44o7o805n8113n5p72q52';
+ var str72 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365765292&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365765292&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sohyyrgvaf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1579793869.1231365768&tn_fvq=1231365768&tn_uvq=2056210897&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str73 = 'frnepu.zvpebfbsg.pbz';
+ var str74 = 'frnepu.zvpebfbsg.pbz/';
+ var str75 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str76 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ function runBlock10() {
+ for (var i = 0; i < 3; i++) {
+ '%3Szxg=ra-HF'.replace(re39, '');
+ '-8'.replace(re40, '');
+ '-8'.replace(re10, '');
+ '-8'.replace(re51, '');
+ '-8'.replace(re52, '');
+ '-8'.replace(re53, '');
+ '-8'.replace(re39, '');
+ '-8'.replace(re54, '');
+ '1.5'.replace(re40, '');
+ '1.5'.replace(re10, '');
+ '1.5'.replace(re51, '');
+ '1.5'.replace(re52, '');
+ '1.5'.replace(re53, '');
+ '1.5'.replace(re39, '');
+ '1.5'.replace(re54, '');
+ '1024k768'.replace(re40, '');
+ '1024k768'.replace(re10, '');
+ '1024k768'.replace(re51, '');
+ '1024k768'.replace(re52, '');
+ '1024k768'.replace(re53, '');
+ '1024k768'.replace(re39, '');
+ '1024k768'.replace(re54, '');
+ str64.replace(re40, '');
+ str64.replace(re10, '');
+ str64.replace(re51, '');
+ str64.replace(re52, '');
+ str64.replace(re53, '');
+ str64.replace(re39, '');
+ str64.replace(re54, '');
+ '14'.replace(re40, '');
+ '14'.replace(re10, '');
+ '14'.replace(re51, '');
+ '14'.replace(re52, '');
+ '14'.replace(re53, '');
+ '14'.replace(re39, '');
+ '14'.replace(re54, '');
+ '24'.replace(re40, '');
+ '24'.replace(re10, '');
+ '24'.replace(re51, '');
+ '24'.replace(re52, '');
+ '24'.replace(re53, '');
+ '24'.replace(re39, '');
+ '24'.replace(re54, '');
+ str65.replace(re40, '');
+ str65.replace(re10, '');
+ str65.replace(re51, '');
+ str65.replace(re52, '');
+ str65.replace(re53, '');
+ str65.replace(re39, '');
+ str65.replace(re54, '');
+ str66.replace(re40, '');
+ str66.replace(re10, '');
+ str66.replace(re51, '');
+ str66.replace(re52, '');
+ str66.replace(re53, '');
+ str66.replace(re39, '');
+ str66.replace(re54, '');
+ '9.0'.replace(re40, '');
+ '9.0'.replace(re10, '');
+ '9.0'.replace(re51, '');
+ '9.0'.replace(re52, '');
+ '9.0'.replace(re53, '');
+ '9.0'.replace(re39, '');
+ '9.0'.replace(re54, '');
+ '994k634'.replace(re40, '');
+ '994k634'.replace(re10, '');
+ '994k634'.replace(re51, '');
+ '994k634'.replace(re52, '');
+ '994k634'.replace(re53, '');
+ '994k634'.replace(re39, '');
+ '994k634'.replace(re54, '');
+ '?zxg=ra-HF'.replace(re40, '');
+ '?zxg=ra-HF'.replace(re10, '');
+ '?zxg=ra-HF'.replace(re51, '');
+ '?zxg=ra-HF'.replace(re52, '');
+ '?zxg=ra-HF'.replace(re53, '');
+ '?zxg=ra-HF'.replace(re54, '');
+ 'PAA.pbz'.replace(re25, '');
+ 'PAA.pbz'.replace(re12, '');
+ 'PAA.pbz'.replace(re39, '');
+ 'Qngr & Gvzr'.replace(re25, '');
+ 'Qngr & Gvzr'.replace(re12, '');
+ 'Qngr & Gvzr'.replace(re39, '');
+ 'Frnepu Zvpebfbsg.pbz'.replace(re40, '');
+ 'Frnepu Zvpebfbsg.pbz'.replace(re54, '');
+ str67.replace(re10, '');
+ str67.replace(re51, '');
+ str67.replace(re52, '');
+ str67.replace(re53, '');
+ str67.replace(re39, '');
+ str68.split(re32);
+ str69.split(re32);
+ str70.replace(re52, '');
+ str70.replace(re53, '');
+ str70.replace(re39, '');
+ str71.replace(re40, '');
+ str71.replace(re10, '');
+ str71.replace(re51, '');
+ str71.replace(re54, '');
+ 'Jrngure'.replace(re25, '');
+ 'Jrngure'.replace(re12, '');
+ 'Jrngure'.replace(re39, '');
+ 'LbhGhor'.replace(re25, '');
+ 'LbhGhor'.replace(re12, '');
+ 'LbhGhor'.replace(re39, '');
+ str72.replace(re33, '');
+ 'erzbgr_vsenzr_1'.replace(/^erzbgr_vsenzr_/, '');
+ str73.replace(re40, '');
+ str73.replace(re10, '');
+ str73.replace(re51, '');
+ str73.replace(re52, '');
+ str73.replace(re53, '');
+ str73.replace(re39, '');
+ str73.replace(re54, '');
+ str74.replace(re40, '');
+ str74.replace(re10, '');
+ str74.replace(re51, '');
+ str74.replace(re52, '');
+ str74.replace(re53, '');
+ str74.replace(re39, '');
+ str74.replace(re54, '');
+ 'lhv-h'.replace(/\-/g, '');
+ re9.exec('p');
+ re9.exec('qz p');
+ re9.exec('zbqynory');
+ re9.exec('lhv-h svefg');
+ re8.exec('144631658.0.10.1231365779');
+ re8.exec('144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+ re8.exec(str75);
+ re8.exec(str76);
+ re8.exec('__hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+ re8.exec('__hgzo=144631658.0.10.1231365779');
+ re8.exec('__hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str68);
+ re34.exec(str69);
+ /^$/.exec('');
+ re31.exec('qr');
+ /^znk\d+$/.exec('');
+ /^zva\d+$/.exec('');
+ /^erfgber$/.exec('');
+ re85.exec('zbqobkva zbqobk_abcnqqvat ');
+ re85.exec('zbqgvgyr');
+ re85.exec('eaq_zbqobkva ');
+ re85.exec('eaq_zbqgvgyr ');
+ /frpgvba\d+_pbagragf/.exec('obggbz_ani');
+ }
+ }
+ var re86 = /;\s*/;
+ var re87 = /(\$\{inyhr\})|(\$inyhr\b)/g;
+ var re88 = /(\$\{abj\})|(\$abj\b)/g;
+ var re89 = /\s+$/;
+ var re90 = /^\s+/;
+ var re91 = /(\\\"|\x00-|\x1f|\x7f-|\x9f|\u00ad|\u0600-|\u0604|\u070f|\u17b4|\u17b5|\u200c-|\u200f|\u2028-|\u202f|\u2060-|\u206f|\ufeff|\ufff0-|\uffff)/g;
+ var re92 = /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/;
+ var re93 = /^([:.#]*)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re94 = /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/;
+ var str77 = '#fubhgobk .pybfr';
+ var str78 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzssrwh-aowb_80=441326q33660';
+ var str79 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; AFP_zp_dfctwzssrwh-aowb_80=441326q33660; __hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1; __hgzo=144631658.0.10.1231365869; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str80 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=441327q73660';
+ var str81 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; AFP_zp_dfctwzs-aowb_80=441327q73660; __hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1; __hgzo=144631658.0.10.1231367054; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str82 = '[glcr=fhozvg]';
+ var str83 = 'n.svryqOga,n.svryqOgaPnapry';
+ var str84 = 'n.svryqOgaPnapry';
+ var str85 = 'oyvpxchaxg';
+ var str86 = 'qvi.bow-nppbeqvba qg';
+ var str87 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_nccf_wf&qg=1231367052227&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367052227&punaary=svz_zlfcnpr_nccf-pnainf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2SZbqhyrf%2SNccyvpngvbaf%2SCntrf%2SPnainf.nfck&nq_glcr=grkg&rvq=6083027&rn=0&sez=1&tn_ivq=716357910.1231367056&tn_fvq=1231367056&tn_uvq=1387206491&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str88 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365851658&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365851658&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyrrqvg.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1979828129.1231365855&tn_fvq=1231365855&tn_uvq=2085229649&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str89 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N12%3N47%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=0k0&p=43835816&x=A&oj=994&ou=634&uc=A&{2}&[NDR]';
+ var str90 = 'zrgn[anzr=nwnkHey]';
+ var str91 = 'anpuevpugra';
+ var str92 = 'b oS={\'oT\':1.1};x $8n(B){z(B!=o9)};x $S(B){O(!$8n(B))z A;O(B.4L)z\'T\';b S=7t B;O(S==\'2P\'&&B.p4){23(B.7f){12 1:z\'T\';12 3:z/\S/.2g(B.8M)?\'ox\':\'oh\'}}O(S==\'2P\'||S==\'x\'){23(B.nE){12 2V:z\'1O\';12 7I:z\'5a\';12 18:z\'4B\'}O(7t B.I==\'4F\'){O(B.3u)z\'pG\';O(B.8e)z\'1p\'}}z S};x $2p(){b 4E={};Z(b v=0;v<1p.I;v++){Z(b X 1o 1p[v]){b nc=1p[v][X];b 6E=4E[X];O(6E&&$S(nc)==\'2P\'&&$S(6E)==\'2P\')4E[X]=$2p(6E,nc);17 4E[X]=nc}}z 4E};b $E=7p.E=x(){b 1d=1p;O(!1d[1])1d=[p,1d[0]];Z(b X 1o 1d[1])1d[0][X]=1d[1][X];z 1d[0]};b $4D=7p.pJ=x(){Z(b v=0,y=1p.I;v<y;v++){1p[v].E=x(1J){Z(b 1I 1o 1J){O(!p.1Y[1I])p.1Y[1I]=1J[1I];O(!p[1I])p[1I]=$4D.6C(1I)}}}};$4D.6C=x(1I){z x(L){z p.1Y[1I].3H(L,2V.1Y.nV.1F(1p,1))}};$4D(7F,2V,6J,nb);b 3l=x(B){B=B||{};B.E=$E;z B};b pK=Y 3l(H);b pZ=Y 3l(C);C.6f=C.35(\'6f\')[0];x $2O(B){z!!(B||B===0)};x $5S(B,n8){z $8n(B)?B:n8};x $7K(3c,1m){z 1q.na(1q.7K()*(1m-3c+1)+3c)};x $3N(){z Y 97().os()};x $4M(1U){pv(1U);pa(1U);z 1S};H.43=!!(C.5Z);O(H.nB)H.31=H[H.7q?\'py\':\'nL\']=1r;17 O(C.9N&&!C.om&&!oy.oZ)H.pF=H.4Z=H[H.43?\'pt\':\'65\']=1r;17 O(C.po!=1S)H.7J=1r;O(7t 5B==\'o9\'){b 5B=x(){};O(H.4Z)C.nd("pW");5B.1Y=(H.4Z)?H["[[oN.1Y]]"]:{}}5B.1Y.4L=1r;O(H.nL)5s{C.oX("pp",A,1r)}4K(r){};b 18=x(1X){b 63=x(){z(1p[0]!==1S&&p.1w&&$S(p.1w)==\'x\')?p.1w.3H(p,1p):p};$E(63,p);63.1Y=1X;63.nE=18;z 63};18.1z=x(){};18.1Y={E:x(1X){b 7x=Y p(1S);Z(b X 1o 1X){b nC=7x[X];7x[X]=18.nY(nC,1X[X])}z Y 18(7x)},3d:x(){Z(b v=0,y=1p.I;v<y;v++)$E(p.1Y,1p[v])}};18.nY=x(2b,2n){O(2b&&2b!=2n){b S=$S(2n);O(S!=$S(2b))z 2n;23(S){12\'x\':b 7R=x(){p.1e=1p.8e.1e;z 2n.3H(p,1p)};7R.1e=2b;z 7R;12\'2P\':z $2p(2b,2n)}}z 2n};b 8o=Y 18({oQ:x(J){p.4w=p.4w||[];p.4w.1x(J);z p},7g:x(){O(p.4w&&p.4w.I)p.4w.9J().2x(10,p)},oP:x(){p.4w=[]}});b 2d=Y 18({1V:x(S,J){O(J!=18.1z){p.$19=p.$19||{};p.$19[S]=p.$19[S]||[];p.$19[S].5j(J)}z p},1v:x(S,1d,2x){O(p.$19&&p.$19[S]){p.$19[S].1b(x(J){J.3n({\'L\':p,\'2x\':2x,\'1p\':1d})()},p)}z p},3M:x(S,J){O(p.$19&&p.$19[S])p.$19[S].2U(J);z p}});b 4v=Y 18({2H:x(){p.P=$2p.3H(1S,[p.P].E(1p));O(!p.1V)z p;Z(b 3O 1o p.P){O($S(p.P[3O]==\'x\')&&3O.2g(/^5P[N-M]/))p.1V(3O,p.P[3O])}z p}});2V.E({7y:x(J,L){Z(b v=0,w=p.I;v<w;v++)J.1F(L,p[v],v,p)},3s:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))54.1x(p[v])}z 54},2X:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++)54[v]=J.1F(L,p[v],v,p);z 54},4i:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(!J.1F(L,p[v],v,p))z A}z 1r},ob:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))z 1r}z A},3F:x(3u,15){b 3A=p.I;Z(b v=(15<0)?1q.1m(0,3A+15):15||0;v<3A;v++){O(p[v]===3u)z v}z-1},8z:x(1u,I){1u=1u||0;O(1u<0)1u=p.I+1u;I=I||(p.I-1u);b 89=[];Z(b v=0;v<I;v++)89[v]=p[1u++];z 89},2U:x(3u){b v=0;b 3A=p.I;6L(v<3A){O(p[v]===3u){p.6l(v,1);3A--}17{v++}}z p},1y:x(3u,15){z p.3F(3u,15)!=-1},oz:x(1C){b B={},I=1q.3c(p.I,1C.I);Z(b v=0;v<I;v++)B[1C[v]]=p[v];z B},E:x(1O){Z(b v=0,w=1O.I;v<w;v++)p.1x(1O[v]);z p},2p:x(1O){Z(b v=0,y=1O.I;v<y;v++)p.5j(1O[v]);z p},5j:x(3u){O(!p.1y(3u))p.1x(3u);z p},oc:x(){z p[$7K(0,p.I-1)]||A},7L:x(){z p[p.I-1]||A}});2V.1Y.1b=2V.1Y.7y;2V.1Y.2g=2V.1Y.1y;x $N(1O){z 2V.8z(1O)};x $1b(3J,J,L){O(3J&&7t 3J.I==\'4F\'&&$S(3J)!=\'2P\')2V.7y(3J,J,L);17 Z(b 1j 1o 3J)J.1F(L||3J,3J[1j],1j)};6J.E({2g:x(6b,2F){z(($S(6b)==\'2R\')?Y 7I(6b,2F):6b).2g(p)},3p:x(){z 5K(p,10)},o4:x(){z 69(p)},7A:x(){z p.3y(/-\D/t,x(2G){z 2G.7G(1).nW()})},9b:x(){z p.3y(/\w[N-M]/t,x(2G){z(2G.7G(0)+\'-\'+2G.7G(1).5O())})},8V:x(){z p.3y(/\b[n-m]/t,x(2G){z 2G.nW()})},5L:x(){z p.3y(/^\s+|\s+$/t,\'\')},7j:x(){z p.3y(/\s{2,}/t,\' \').5L()},5V:x(1O){b 1i=p.2G(/\d{1,3}/t);z(1i)?1i.5V(1O):A},5U:x(1O){b 3P=p.2G(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);z(3P)?3P.nV(1).5U(1O):A},1y:x(2R,f){z(f)?(f+p+f).3F(f+2R+f)>-1:p.3F(2R)>-1},nX:x(){z p.3y(/([.*+?^${}()|[\]\/\\])/t,\'\\$1\')}});2V.E({5V:x(1O){O(p.I<3)z A;O(p.I==4&&p[3]==0&&!1O)z\'p5\';b 3P=[];Z(b v=0;v<3;v++){b 52=(p[v]-0).4h(16);3P.1x((52.I==1)?\'0\'+52:52)}z 1O?3P:\'#\'+3P.2u(\'\')},5U:x(1O){O(p.I!=3)z A;b 1i=[];Z(b v=0;v<3;v++){1i.1x(5K((p[v].I==1)?p[v]+p[v]:p[v],16))}z 1O?1i:\'1i(\'+1i.2u(\',\')+\')\'}});7F.E({3n:x(P){b J=p;P=$2p({\'L\':J,\'V\':A,\'1p\':1S,\'2x\':A,\'4s\':A,\'6W\':A},P);O($2O(P.1p)&&$S(P.1p)!=\'1O\')P.1p=[P.1p];z x(V){b 1d;O(P.V){V=V||H.V;1d=[(P.V===1r)?V:Y P.V(V)];O(P.1p)1d.E(P.1p)}17 1d=P.1p||1p;b 3C=x(){z J.3H($5S(P';
+ var str93 = 'hagreunyghat';
+ var str94 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str95 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str96 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str97 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str98 = 'shapgvba (){Cuk.Nccyvpngvba.Frghc.Pber();Cuk.Nccyvpngvba.Frghc.Nwnk();Cuk.Nccyvpngvba.Frghc.Synfu();Cuk.Nccyvpngvba.Frghc.Zbqhyrf()}';
+ function runBlock11() {
+ for (var i = 0; i < 2; i++) {
+ ' .pybfr'.replace(re18, '');
+ ' n.svryqOgaPnapry'.replace(re18, '');
+ ' qg'.replace(re18, '');
+ str77.replace(re68, '');
+ str77.replace(re18, '');
+ ''.replace(re39, '');
+ ''.replace(/^/, '');
+ ''.split(re86);
+ '*'.replace(re39, '');
+ '*'.replace(re68, '');
+ '*'.replace(re18, '');
+ '.pybfr'.replace(re68, '');
+ '.pybfr'.replace(re18, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/fperra/${inyhr}?gf=${abj}'.replace(re87, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/fperra/1024?gf=${abj}'.replace(re88, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/${inyhr}?gf=${abj}'.replace(re87, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/992/608?gf=${abj}'.replace(re88, '');
+ '300k120'.replace(re30, '');
+ '300k250'.replace(re30, '');
+ '310k120'.replace(re30, '');
+ '310k170'.replace(re30, '');
+ '310k250'.replace(re30, '');
+ '9.0 e115'.replace(/^.*\.(.*)\s.*$/, '');
+ 'Nppbeqvba'.replace(re2, '');
+ 'Nxghryy\x0a'.replace(re89, '');
+ 'Nxghryy\x0a'.replace(re90, '');
+ 'Nccyvpngvba'.replace(re2, '');
+ 'Oyvpxchaxg\x0a'.replace(re89, '');
+ 'Oyvpxchaxg\x0a'.replace(re90, '');
+ 'Svanamra\x0a'.replace(re89, '');
+ 'Svanamra\x0a'.replace(re90, '');
+ 'Tnzrf\x0a'.replace(re89, '');
+ 'Tnzrf\x0a'.replace(re90, '');
+ 'Ubebfxbc\x0a'.replace(re89, '');
+ 'Ubebfxbc\x0a'.replace(re90, '');
+ 'Xvab\x0a'.replace(re89, '');
+ 'Xvab\x0a'.replace(re90, '');
+ 'Zbqhyrf'.replace(re2, '');
+ 'Zhfvx\x0a'.replace(re89, '');
+ 'Zhfvx\x0a'.replace(re90, '');
+ 'Anpuevpugra\x0a'.replace(re89, '');
+ 'Anpuevpugra\x0a'.replace(re90, '');
+ 'Cuk'.replace(re2, '');
+ 'ErdhrfgSvavfu'.split(re70);
+ 'ErdhrfgSvavfu.NWNK.Cuk'.split(re70);
+ 'Ebhgr\x0a'.replace(re89, '');
+ 'Ebhgr\x0a'.replace(re90, '');
+ str78.split(re32);
+ str79.split(re32);
+ str80.split(re32);
+ str81.split(re32);
+ 'Fcbeg\x0a'.replace(re89, '');
+ 'Fcbeg\x0a'.replace(re90, '');
+ 'GI-Fcbg\x0a'.replace(re89, '');
+ 'GI-Fcbg\x0a'.replace(re90, '');
+ 'Gbhe\x0a'.replace(re89, '');
+ 'Gbhe\x0a'.replace(re90, '');
+ 'Hagreunyghat\x0a'.replace(re89, '');
+ 'Hagreunyghat\x0a'.replace(re90, '');
+ 'Ivqrb\x0a'.replace(re89, '');
+ 'Ivqrb\x0a'.replace(re90, '');
+ 'Jrggre\x0a'.replace(re89, '');
+ 'Jrggre\x0a'.replace(re90, '');
+ str82.replace(re68, '');
+ str82.replace(re18, '');
+ str83.replace(re68, '');
+ str83.replace(re18, '');
+ str84.replace(re68, '');
+ str84.replace(re18, '');
+ 'nqiFreivprObk'.replace(re30, '');
+ 'nqiFubccvatObk'.replace(re30, '');
+ 'nwnk'.replace(re39, '');
+ 'nxghryy'.replace(re40, '');
+ 'nxghryy'.replace(re41, '');
+ 'nxghryy'.replace(re42, '');
+ 'nxghryy'.replace(re43, '');
+ 'nxghryy'.replace(re44, '');
+ 'nxghryy'.replace(re45, '');
+ 'nxghryy'.replace(re46, '');
+ 'nxghryy'.replace(re47, '');
+ 'nxghryy'.replace(re48, '');
+ str85.replace(re40, '');
+ str85.replace(re41, '');
+ str85.replace(re42, '');
+ str85.replace(re43, '');
+ str85.replace(re44, '');
+ str85.replace(re45, '');
+ str85.replace(re46, '');
+ str85.replace(re47, '');
+ str85.replace(re48, '');
+ 'pngrtbel'.replace(re29, '');
+ 'pngrtbel'.replace(re30, '');
+ 'pybfr'.replace(re39, '');
+ 'qvi'.replace(re39, '');
+ str86.replace(re68, '');
+ str86.replace(re18, '');
+ 'qg'.replace(re39, '');
+ 'qg'.replace(re68, '');
+ 'qg'.replace(re18, '');
+ 'rzorq'.replace(re39, '');
+ 'rzorq'.replace(re68, '');
+ 'rzorq'.replace(re18, '');
+ 'svryqOga'.replace(re39, '');
+ 'svryqOgaPnapry'.replace(re39, '');
+ 'svz_zlfcnpr_nccf-pnainf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+ 'svanamra'.replace(re40, '');
+ 'svanamra'.replace(re41, '');
+ 'svanamra'.replace(re42, '');
+ 'svanamra'.replace(re43, '');
+ 'svanamra'.replace(re44, '');
+ 'svanamra'.replace(re45, '');
+ 'svanamra'.replace(re46, '');
+ 'svanamra'.replace(re47, '');
+ 'svanamra'.replace(re48, '');
+ 'sbphf'.split(re70);
+ 'sbphf.gno sbphfva.gno'.split(re70);
+ 'sbphfva'.split(re70);
+ 'sbez'.replace(re39, '');
+ 'sbez.nwnk'.replace(re68, '');
+ 'sbez.nwnk'.replace(re18, '');
+ 'tnzrf'.replace(re40, '');
+ 'tnzrf'.replace(re41, '');
+ 'tnzrf'.replace(re42, '');
+ 'tnzrf'.replace(re43, '');
+ 'tnzrf'.replace(re44, '');
+ 'tnzrf'.replace(re45, '');
+ 'tnzrf'.replace(re46, '');
+ 'tnzrf'.replace(re47, '');
+ 'tnzrf'.replace(re48, '');
+ 'ubzrcntr'.replace(re30, '');
+ 'ubebfxbc'.replace(re40, '');
+ 'ubebfxbc'.replace(re41, '');
+ 'ubebfxbc'.replace(re42, '');
+ 'ubebfxbc'.replace(re43, '');
+ 'ubebfxbc'.replace(re44, '');
+ 'ubebfxbc'.replace(re45, '');
+ 'ubebfxbc'.replace(re46, '');
+ 'ubebfxbc'.replace(re47, '');
+ 'ubebfxbc'.replace(re48, '');
+ 'uc_cebzbobk_ugzy%2Puc_cebzbobk_vzt'.replace(re30, '');
+ 'uc_erpgnatyr'.replace(re30, '');
+ str87.replace(re33, '');
+ str88.replace(re33, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${5}'.replace(re72, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${5}'.replace(re72, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${5}'.replace(re72, '');
+ str89.replace(re73, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+ str6.replace(re23, '');
+ 'xvab'.replace(re40, '');
+ 'xvab'.replace(re41, '');
+ 'xvab'.replace(re42, '');
+ 'xvab'.replace(re43, '');
+ 'xvab'.replace(re44, '');
+ 'xvab'.replace(re45, '');
+ 'xvab'.replace(re46, '');
+ 'xvab'.replace(re47, '');
+ 'xvab'.replace(re48, '');
+ 'ybnq'.split(re70);
+ 'zrqvnzbqgno lhv-anifrg lhv-anifrg-gbc'.replace(re18, '');
+ 'zrgn'.replace(re39, '');
+ str90.replace(re68, '');
+ str90.replace(re18, '');
+ 'zbhfrzbir'.split(re70);
+ 'zbhfrzbir.gno'.split(re70);
+ str63.replace(/^.*jroxvg\/(\d+(\.\d+)?).*$/, '');
+ 'zhfvx'.replace(re40, '');
+ 'zhfvx'.replace(re41, '');
+ 'zhfvx'.replace(re42, '');
+ 'zhfvx'.replace(re43, '');
+ 'zhfvx'.replace(re44, '');
+ 'zhfvx'.replace(re45, '');
+ 'zhfvx'.replace(re46, '');
+ 'zhfvx'.replace(re47, '');
+ 'zhfvx'.replace(re48, '');
+ 'zlfcnpr_nccf_pnainf'.replace(re52, '');
+ str91.replace(re40, '');
+ str91.replace(re41, '');
+ str91.replace(re42, '');
+ str91.replace(re43, '');
+ str91.replace(re44, '');
+ str91.replace(re45, '');
+ str91.replace(re46, '');
+ str91.replace(re47, '');
+ str91.replace(re48, '');
+ 'anzr'.replace(re39, '');
+ str92.replace(/\b\w+\b/g, '');
+ 'bow-nppbeqvba'.replace(re39, '');
+ 'bowrpg'.replace(re39, '');
+ 'bowrpg'.replace(re68, '');
+ 'bowrpg'.replace(re18, '');
+ 'cnenzf%2Rfglyrf'.replace(re29, '');
+ 'cnenzf%2Rfglyrf'.replace(re30, '');
+ 'cbchc'.replace(re30, '');
+ 'ebhgr'.replace(re40, '');
+ 'ebhgr'.replace(re41, '');
+ 'ebhgr'.replace(re42, '');
+ 'ebhgr'.replace(re43, '');
+ 'ebhgr'.replace(re44, '');
+ 'ebhgr'.replace(re45, '');
+ 'ebhgr'.replace(re46, '');
+ 'ebhgr'.replace(re47, '');
+ 'ebhgr'.replace(re48, '');
+ 'freivprobk_uc'.replace(re30, '');
+ 'fubccvatobk_uc'.replace(re30, '');
+ 'fubhgobk'.replace(re39, '');
+ 'fcbeg'.replace(re40, '');
+ 'fcbeg'.replace(re41, '');
+ 'fcbeg'.replace(re42, '');
+ 'fcbeg'.replace(re43, '');
+ 'fcbeg'.replace(re44, '');
+ 'fcbeg'.replace(re45, '');
+ 'fcbeg'.replace(re46, '');
+ 'fcbeg'.replace(re47, '');
+ 'fcbeg'.replace(re48, '');
+ 'gbhe'.replace(re40, '');
+ 'gbhe'.replace(re41, '');
+ 'gbhe'.replace(re42, '');
+ 'gbhe'.replace(re43, '');
+ 'gbhe'.replace(re44, '');
+ 'gbhe'.replace(re45, '');
+ 'gbhe'.replace(re46, '');
+ 'gbhe'.replace(re47, '');
+ 'gbhe'.replace(re48, '');
+ 'gi-fcbg'.replace(re40, '');
+ 'gi-fcbg'.replace(re41, '');
+ 'gi-fcbg'.replace(re42, '');
+ 'gi-fcbg'.replace(re43, '');
+ 'gi-fcbg'.replace(re44, '');
+ 'gi-fcbg'.replace(re45, '');
+ 'gi-fcbg'.replace(re46, '');
+ 'gi-fcbg'.replace(re47, '');
+ 'gi-fcbg'.replace(re48, '');
+ 'glcr'.replace(re39, '');
+ 'haqrsvarq'.replace(/\//g, '');
+ str93.replace(re40, '');
+ str93.replace(re41, '');
+ str93.replace(re42, '');
+ str93.replace(re43, '');
+ str93.replace(re44, '');
+ str93.replace(re45, '');
+ str93.replace(re46, '');
+ str93.replace(re47, '');
+ str93.replace(re48, '');
+ 'ivqrb'.replace(re40, '');
+ 'ivqrb'.replace(re41, '');
+ 'ivqrb'.replace(re42, '');
+ 'ivqrb'.replace(re43, '');
+ 'ivqrb'.replace(re44, '');
+ 'ivqrb'.replace(re45, '');
+ 'ivqrb'.replace(re46, '');
+ 'ivqrb'.replace(re47, '');
+ 'ivqrb'.replace(re48, '');
+ 'ivfvgf=1'.split(re86);
+ 'jrggre'.replace(re40, '');
+ 'jrggre'.replace(re41, '');
+ 'jrggre'.replace(re42, '');
+ 'jrggre'.replace(re43, '');
+ 'jrggre'.replace(re44, '');
+ 'jrggre'.replace(re45, '');
+ 'jrggre'.replace(re46, '');
+ 'jrggre'.replace(re47, '');
+ 'jrggre'.replace(re48, '');
+ /#[a-z0-9]+$/i.exec('uggc://jjj.fpuhryreim.arg/Qrsnhyg');
+ re66.exec('fryrpgrq');
+ /(?:^|\s+)lhv-ani(?:\s+|$)/.exec('sff lhv-ani');
+ /(?:^|\s+)lhv-anifrg(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+ /(?:^|\s+)lhv-anifrg-gbc(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+ re91.exec('GnoThvq');
+ re91.exec('thvq');
+ /(pbzcngvoyr|jroxvg)/.exec(str63);
+ /.+(?:ei|vg|en|vr)[\/: ]([\d.]+)/.exec(str63);
+ re8.exec('144631658.0.10.1231365869');
+ re8.exec('144631658.0.10.1231367054');
+ re8.exec('144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+ re8.exec('144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+ re8.exec(str94);
+ re8.exec(str95);
+ re8.exec(str96);
+ re8.exec(str97);
+ re8.exec('__hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+ re8.exec('__hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+ re8.exec('__hgzo=144631658.0.10.1231365869');
+ re8.exec('__hgzo=144631658.0.10.1231367054');
+ re8.exec('__hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('__hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str78);
+ re34.exec(str79);
+ re34.exec(str81);
+ re74.exec(str77);
+ re74.exec('*');
+ re74.exec(str82);
+ re74.exec(str83);
+ re74.exec(str86);
+ re74.exec('rzorq');
+ re74.exec('sbez.nwnk');
+ re74.exec(str90);
+ re74.exec('bowrpg');
+ /\/onfr.wf(\?.+)?$/.exec('/uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+ re28.exec('uvag ynfgUvag ynfg');
+ re75.exec('');
+ re76.exec('');
+ re77.exec('');
+ re78.exec('');
+ re80.exec(str77);
+ re80.exec('*');
+ re80.exec('.pybfr');
+ re80.exec(str82);
+ re80.exec(str83);
+ re80.exec(str84);
+ re80.exec(str86);
+ re80.exec('qg');
+ re80.exec('rzorq');
+ re80.exec('sbez.nwnk');
+ re80.exec(str90);
+ re80.exec('bowrpg');
+ re61.exec('qlaYvo.wf');
+ re61.exec('rssrpgYvo.wf');
+ re61.exec('uggc://jjj.tzk.arg/qr/?fgnghf=uvajrvf');
+ re92.exec(' .pybfr');
+ re92.exec(' n.svryqOgaPnapry');
+ re92.exec(' qg');
+ re92.exec(str48);
+ re92.exec('.nwnk');
+ re92.exec('.svryqOga,n.svryqOgaPnapry');
+ re92.exec('.svryqOgaPnapry');
+ re92.exec('.bow-nppbeqvba qg');
+ re68.exec(str77);
+ re68.exec('*');
+ re68.exec('.pybfr');
+ re68.exec(str82);
+ re68.exec(str83);
+ re68.exec(str84);
+ re68.exec(str86);
+ re68.exec('qg');
+ re68.exec('rzorq');
+ re68.exec('sbez.nwnk');
+ re68.exec(str90);
+ re68.exec('bowrpg');
+ re93.exec(' .pybfr');
+ re93.exec(' n.svryqOgaPnapry');
+ re93.exec(' qg');
+ re93.exec(str48);
+ re93.exec('.nwnk');
+ re93.exec('.svryqOga,n.svryqOgaPnapry');
+ re93.exec('.svryqOgaPnapry');
+ re93.exec('.bow-nppbeqvba qg');
+ re81.exec(str77);
+ re81.exec('*');
+ re81.exec(str48);
+ re81.exec('.pybfr');
+ re81.exec(str82);
+ re81.exec(str83);
+ re81.exec(str84);
+ re81.exec(str86);
+ re81.exec('qg');
+ re81.exec('rzorq');
+ re81.exec('sbez.nwnk');
+ re81.exec(str90);
+ re81.exec('bowrpg');
+ re94.exec(' .pybfr');
+ re94.exec(' n.svryqOgaPnapry');
+ re94.exec(' qg');
+ re94.exec(str48);
+ re94.exec('.nwnk');
+ re94.exec('.svryqOga,n.svryqOgaPnapry');
+ re94.exec('.svryqOgaPnapry');
+ re94.exec('.bow-nppbeqvba qg');
+ re94.exec('[anzr=nwnkHey]');
+ re94.exec(str82);
+ re31.exec('rf');
+ re31.exec('wn');
+ re82.exec(str77);
+ re82.exec('*');
+ re82.exec(str48);
+ re82.exec('.pybfr');
+ re82.exec(str82);
+ re82.exec(str83);
+ re82.exec(str84);
+ re82.exec(str86);
+ re82.exec('qg');
+ re82.exec('rzorq');
+ re82.exec('sbez.nwnk');
+ re82.exec(str90);
+ re82.exec('bowrpg');
+ re83.exec(str98);
+ re83.exec('shapgvba sbphf() { [angvir pbqr] }');
+ re62.exec('#Ybtva');
+ re62.exec('#Ybtva_cnffjbeq');
+ re62.exec(str77);
+ re62.exec('#fubhgobkWf');
+ re62.exec('#fubhgobkWfReebe');
+ re62.exec('#fubhgobkWfFhpprff');
+ re62.exec('*');
+ re62.exec(str82);
+ re62.exec(str83);
+ re62.exec(str86);
+ re62.exec('rzorq');
+ re62.exec('sbez.nwnk');
+ re62.exec(str90);
+ re62.exec('bowrpg');
+ re49.exec('pbagrag');
+ re24.exec(str6);
+ /xbadhrebe/.exec(str63);
+ /znp/.exec('jva32');
+ /zbmvyyn/.exec(str63);
+ /zfvr/.exec(str63);
+ /ag\s5\.1/.exec(str63);
+ /bcren/.exec(str63);
+ /fnsnev/.exec(str63);
+ /jva/.exec('jva32');
+ /jvaqbjf/.exec(str63);
+ }
+ }
+
+ function run() {
+ for (var i = 0; i < 5; i++) {
+ runBlock0();
+ runBlock1();
+ runBlock2();
+ runBlock3();
+ runBlock4();
+ runBlock5();
+ runBlock6();
+ runBlock7();
+ runBlock8();
+ runBlock9();
+ runBlock10();
+ runBlock11();
+ }
+ }
+
+ this.run = run;
+}
diff --git a/tests/benchmarks/script/v8/tests/richards.js b/tests/benchmarks/script/v8/tests/richards.js
new file mode 100644
index 0000000000..054928db16
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/richards.js
@@ -0,0 +1,539 @@
+// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// This is a JavaScript implementation of the Richards
+// benchmark from:
+//
+// http://www.cl.cam.ac.uk/~mr10/Bench.html
+//
+// The benchmark was originally implemented in BCPL by
+// Martin Richards.
+
+
+var Richards = new BenchmarkSuite('Richards', 35302, [
+ new Benchmark("Richards", runRichards)
+]);
+
+
+/**
+ * The Richards benchmark simulates the task dispatcher of an
+ * operating system.
+ **/
+function runRichards() {
+ var scheduler = new Scheduler();
+ scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
+
+ var queue = new Packet(null, ID_WORKER, KIND_WORK);
+ queue = new Packet(queue, ID_WORKER, KIND_WORK);
+ scheduler.addWorkerTask(ID_WORKER, 1000, queue);
+
+ queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
+ scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
+
+ queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
+ scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
+
+ scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
+
+ scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
+
+ scheduler.schedule();
+
+ if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
+ scheduler.holdCount != EXPECTED_HOLD_COUNT) {
+ var msg =
+ "Error during execution: queueCount = " + scheduler.queueCount +
+ ", holdCount = " + scheduler.holdCount + ".";
+ throw new Error(msg);
+ }
+}
+
+var COUNT = 1000;
+
+/**
+ * These two constants specify how many times a packet is queued and
+ * how many times a task is put on hold in a correct run of richards.
+ * They don't have any meaning a such but are characteristic of a
+ * correct run so if the actual queue or hold count is different from
+ * the expected there must be a bug in the implementation.
+ **/
+var EXPECTED_QUEUE_COUNT = 2322;
+var EXPECTED_HOLD_COUNT = 928;
+
+
+/**
+ * A scheduler can be used to schedule a set of tasks based on their relative
+ * priorities. Scheduling is done by maintaining a list of task control blocks
+ * which holds tasks and the data queue they are processing.
+ * @constructor
+ */
+function Scheduler() {
+ this.queueCount = 0;
+ this.holdCount = 0;
+ this.blocks = new Array(NUMBER_OF_IDS);
+ this.list = null;
+ this.currentTcb = null;
+ this.currentId = null;
+}
+
+var ID_IDLE = 0;
+var ID_WORKER = 1;
+var ID_HANDLER_A = 2;
+var ID_HANDLER_B = 3;
+var ID_DEVICE_A = 4;
+var ID_DEVICE_B = 5;
+var NUMBER_OF_IDS = 6;
+
+var KIND_DEVICE = 0;
+var KIND_WORK = 1;
+
+/**
+ * Add an idle task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {int} count the number of times to schedule the task
+ */
+Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {
+ this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));
+};
+
+/**
+ * Add a work task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addWorkerTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addHandlerTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new HandlerTask(this));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addDeviceTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new DeviceTask(this))
+};
+
+/**
+ * Add the specified task and mark it as running.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {
+ this.addTask(id, priority, queue, task);
+ this.currentTcb.setRunning();
+};
+
+/**
+ * Add the specified task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addTask = function (id, priority, queue, task) {
+ this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);
+ this.list = this.currentTcb;
+ this.blocks[id] = this.currentTcb;
+};
+
+/**
+ * Execute the tasks managed by this scheduler.
+ */
+Scheduler.prototype.schedule = function () {
+ this.currentTcb = this.list;
+ while (this.currentTcb != null) {
+ if (this.currentTcb.isHeldOrSuspended()) {
+ this.currentTcb = this.currentTcb.link;
+ } else {
+ this.currentId = this.currentTcb.id;
+ this.currentTcb = this.currentTcb.run();
+ }
+ }
+};
+
+/**
+ * Release a task that is currently blocked and return the next block to run.
+ * @param {int} id the id of the task to suspend
+ */
+Scheduler.prototype.release = function (id) {
+ var tcb = this.blocks[id];
+ if (tcb == null) return tcb;
+ tcb.markAsNotHeld();
+ if (tcb.priority > this.currentTcb.priority) {
+ return tcb;
+ } else {
+ return this.currentTcb;
+ }
+};
+
+/**
+ * Block the currently executing task and return the next task control block
+ * to run. The blocked task will not be made runnable until it is explicitly
+ * released, even if new work is added to it.
+ */
+Scheduler.prototype.holdCurrent = function () {
+ this.holdCount++;
+ this.currentTcb.markAsHeld();
+ return this.currentTcb.link;
+};
+
+/**
+ * Suspend the currently executing task and return the next task control block
+ * to run. If new work is added to the suspended task it will be made runnable.
+ */
+Scheduler.prototype.suspendCurrent = function () {
+ this.currentTcb.markAsSuspended();
+ return this.currentTcb;
+};
+
+/**
+ * Add the specified packet to the end of the worklist used by the task
+ * associated with the packet and make the task runnable if it is currently
+ * suspended.
+ * @param {Packet} packet the packet to add
+ */
+Scheduler.prototype.queue = function (packet) {
+ var t = this.blocks[packet.id];
+ if (t == null) return t;
+ this.queueCount++;
+ packet.link = null;
+ packet.id = this.currentId;
+ return t.checkPriorityAdd(this.currentTcb, packet);
+};
+
+/**
+ * A task control block manages a task and the queue of work packages associated
+ * with it.
+ * @param {TaskControlBlock} link the preceding block in the linked block list
+ * @param {int} id the id of this block
+ * @param {int} priority the priority of this block
+ * @param {Packet} queue the queue of packages to be processed by the task
+ * @param {Task} task the task
+ * @constructor
+ */
+function TaskControlBlock(link, id, priority, queue, task) {
+ this.link = link;
+ this.id = id;
+ this.priority = priority;
+ this.queue = queue;
+ this.task = task;
+ if (queue == null) {
+ this.state = STATE_SUSPENDED;
+ } else {
+ this.state = STATE_SUSPENDED_RUNNABLE;
+ }
+}
+
+/**
+ * The task is running and is currently scheduled.
+ */
+var STATE_RUNNING = 0;
+
+/**
+ * The task has packets left to process.
+ */
+var STATE_RUNNABLE = 1;
+
+/**
+ * The task is not currently running. The task is not blocked as such and may
+* be started by the scheduler.
+ */
+var STATE_SUSPENDED = 2;
+
+/**
+ * The task is blocked and cannot be run until it is explicitly released.
+ */
+var STATE_HELD = 4;
+
+var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;
+var STATE_NOT_HELD = ~STATE_HELD;
+
+TaskControlBlock.prototype.setRunning = function () {
+ this.state = STATE_RUNNING;
+};
+
+TaskControlBlock.prototype.markAsNotHeld = function () {
+ this.state = this.state & STATE_NOT_HELD;
+};
+
+TaskControlBlock.prototype.markAsHeld = function () {
+ this.state = this.state | STATE_HELD;
+};
+
+TaskControlBlock.prototype.isHeldOrSuspended = function () {
+ return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED);
+};
+
+TaskControlBlock.prototype.markAsSuspended = function () {
+ this.state = this.state | STATE_SUSPENDED;
+};
+
+TaskControlBlock.prototype.markAsRunnable = function () {
+ this.state = this.state | STATE_RUNNABLE;
+};
+
+/**
+ * Runs this task, if it is ready to be run, and returns the next task to run.
+ */
+TaskControlBlock.prototype.run = function () {
+ var packet;
+ if (this.state == STATE_SUSPENDED_RUNNABLE) {
+ packet = this.queue;
+ this.queue = packet.link;
+ if (this.queue == null) {
+ this.state = STATE_RUNNING;
+ } else {
+ this.state = STATE_RUNNABLE;
+ }
+ } else {
+ packet = null;
+ }
+ return this.task.run(packet);
+};
+
+/**
+ * Adds a packet to the worklist of this block's task, marks this as runnable if
+ * necessary, and returns the next runnable object to run (the one
+ * with the highest priority).
+ */
+TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {
+ if (this.queue == null) {
+ this.queue = packet;
+ this.markAsRunnable();
+ if (this.priority > task.priority) return this;
+ } else {
+ this.queue = packet.addTo(this.queue);
+ }
+ return task;
+};
+
+TaskControlBlock.prototype.toString = function () {
+ return "tcb { " + this.task + "@" + this.state + " }";
+};
+
+/**
+ * An idle task doesn't do any work itself but cycles control between the two
+ * device tasks.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed value that controls how the device tasks are scheduled
+ * @param {int} count the number of times this task should be scheduled
+ * @constructor
+ */
+function IdleTask(scheduler, v1, count) {
+ this.scheduler = scheduler;
+ this.v1 = v1;
+ this.count = count;
+}
+
+IdleTask.prototype.run = function (packet) {
+ this.count--;
+ if (this.count == 0) return this.scheduler.holdCurrent();
+ if ((this.v1 & 1) == 0) {
+ this.v1 = this.v1 >> 1;
+ return this.scheduler.release(ID_DEVICE_A);
+ } else {
+ this.v1 = (this.v1 >> 1) ^ 0xD008;
+ return this.scheduler.release(ID_DEVICE_B);
+ }
+};
+
+IdleTask.prototype.toString = function () {
+ return "IdleTask"
+};
+
+/**
+ * A task that suspends itself after each time it has been run to simulate
+ * waiting for data from an external device.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function DeviceTask(scheduler) {
+ this.scheduler = scheduler;
+ this.v1 = null;
+}
+
+DeviceTask.prototype.run = function (packet) {
+ if (packet == null) {
+ if (this.v1 == null) return this.scheduler.suspendCurrent();
+ var v = this.v1;
+ this.v1 = null;
+ return this.scheduler.queue(v);
+ } else {
+ this.v1 = packet;
+ return this.scheduler.holdCurrent();
+ }
+};
+
+DeviceTask.prototype.toString = function () {
+ return "DeviceTask";
+};
+
+/**
+ * A task that manipulates work packets.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed used to specify how work packets are manipulated
+ * @param {int} v2 another seed used to specify how work packets are manipulated
+ * @constructor
+ */
+function WorkerTask(scheduler, v1, v2) {
+ this.scheduler = scheduler;
+ this.v1 = v1;
+ this.v2 = v2;
+}
+
+WorkerTask.prototype.run = function (packet) {
+ if (packet == null) {
+ return this.scheduler.suspendCurrent();
+ } else {
+ if (this.v1 == ID_HANDLER_A) {
+ this.v1 = ID_HANDLER_B;
+ } else {
+ this.v1 = ID_HANDLER_A;
+ }
+ packet.id = this.v1;
+ packet.a1 = 0;
+ for (var i = 0; i < DATA_SIZE; i++) {
+ this.v2++;
+ if (this.v2 > 26) this.v2 = 1;
+ packet.a2[i] = this.v2;
+ }
+ return this.scheduler.queue(packet);
+ }
+};
+
+WorkerTask.prototype.toString = function () {
+ return "WorkerTask";
+};
+
+/**
+ * A task that manipulates work packets and then suspends itself.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function HandlerTask(scheduler) {
+ this.scheduler = scheduler;
+ this.v1 = null;
+ this.v2 = null;
+}
+
+HandlerTask.prototype.run = function (packet) {
+ if (packet != null) {
+ if (packet.kind == KIND_WORK) {
+ this.v1 = packet.addTo(this.v1);
+ } else {
+ this.v2 = packet.addTo(this.v2);
+ }
+ }
+ if (this.v1 != null) {
+ var count = this.v1.a1;
+ var v;
+ if (count < DATA_SIZE) {
+ if (this.v2 != null) {
+ v = this.v2;
+ this.v2 = this.v2.link;
+ v.a1 = this.v1.a2[count];
+ this.v1.a1 = count + 1;
+ return this.scheduler.queue(v);
+ }
+ } else {
+ v = this.v1;
+ this.v1 = this.v1.link;
+ return this.scheduler.queue(v);
+ }
+ }
+ return this.scheduler.suspendCurrent();
+};
+
+HandlerTask.prototype.toString = function () {
+ return "HandlerTask";
+};
+
+/* --- *
+ * P a c k e t
+ * --- */
+
+var DATA_SIZE = 4;
+
+/**
+ * A simple package of data that is manipulated by the tasks. The exact layout
+ * of the payload data carried by a packet is not importaint, and neither is the
+ * nature of the work performed on packets by the tasks.
+ *
+ * Besides carrying data, packets form linked lists and are hence used both as
+ * data and worklists.
+ * @param {Packet} link the tail of the linked list of packets
+ * @param {int} id an ID for this packet
+ * @param {int} kind the type of this packet
+ * @constructor
+ */
+function Packet(link, id, kind) {
+ this.link = link;
+ this.id = id;
+ this.kind = kind;
+ this.a1 = 0;
+ this.a2 = new Array(DATA_SIZE);
+}
+
+/**
+ * Add this packet to the end of a worklist, and return the worklist.
+ * @param {Packet} queue the worklist to add this packet to
+ */
+Packet.prototype.addTo = function (queue) {
+ this.link = null;
+ if (queue == null) return this;
+ var peek, next = queue;
+ while ((peek = next.link) != null)
+ next = peek;
+ next.link = this;
+ return queue;
+};
+
+Packet.prototype.toString = function () {
+ return "Packet";
+};
diff --git a/tests/benchmarks/script/v8/tests/splay.js b/tests/benchmarks/script/v8/tests/splay.js
new file mode 100644
index 0000000000..6b4f56d321
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/splay.js
@@ -0,0 +1,394 @@
+// Copyright 2009 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This benchmark is based on a JavaScript log processing module used
+// by the V8 profiler to generate execution time profiles for runs of
+// JavaScript applications, and it effectively measures how fast the
+// JavaScript engine is at allocating nodes and reclaiming the memory
+// used for old nodes. Because of the way splay trees work, the engine
+// also has to deal with a lot of changes to the large tree object
+// graph.
+
+var Splay = new BenchmarkSuite('Splay', 81491, [
+ new Benchmark("Splay", SplayRun, SplaySetup, SplayTearDown)
+]);
+
+
+// Configuration.
+var kSplayTreeSize = 8000;
+var kSplayTreeModifications = 80;
+var kSplayTreePayloadDepth = 5;
+
+var splayTree = null;
+
+
+function GeneratePayloadTree(depth, tag) {
+ if (depth == 0) {
+ return {
+ array : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ string : 'String for key ' + tag + ' in leaf node'
+ };
+ } else {
+ return {
+ left: GeneratePayloadTree(depth - 1, tag),
+ right: GeneratePayloadTree(depth - 1, tag)
+ };
+ }
+}
+
+
+function GenerateKey() {
+ // The benchmark framework guarantees that Math.random is
+ // deterministic; see base.js.
+ return Math.random();
+}
+
+
+function InsertNewNode() {
+ // Insert new node with a unique key.
+ var key;
+ do {
+ key = GenerateKey();
+ } while (splayTree.find(key) != null);
+ var payload = GeneratePayloadTree(kSplayTreePayloadDepth, String(key));
+ splayTree.insert(key, payload);
+ return key;
+}
+
+
+
+function SplaySetup() {
+ splayTree = new SplayTree();
+ for (var i = 0; i < kSplayTreeSize; i++) InsertNewNode();
+}
+
+
+function SplayTearDown() {
+ // Allow the garbage collector to reclaim the memory
+ // used by the splay tree no matter how we exit the
+ // tear down function.
+ var keys = splayTree.exportKeys();
+ splayTree = null;
+
+ // Verify that the splay tree has the right size.
+ var length = keys.length;
+ if (length != kSplayTreeSize) {
+ throw new Error("Splay tree has wrong size");
+ }
+
+ // Verify that the splay tree has sorted, unique keys.
+ for (var i = 0; i < length - 1; i++) {
+ if (keys[i] >= keys[i + 1]) {
+ throw new Error("Splay tree not sorted");
+ }
+ }
+}
+
+
+function SplayRun() {
+ // Replace a few nodes in the splay tree.
+ for (var i = 0; i < kSplayTreeModifications; i++) {
+ var key = InsertNewNode();
+ var greatest = splayTree.findGreatestLessThan(key);
+ if (greatest == null) splayTree.remove(key);
+ else splayTree.remove(greatest.key);
+ }
+}
+
+
+/**
+ * Constructs a Splay tree. A splay tree is a self-balancing binary
+ * search tree with the additional property that recently accessed
+ * elements are quick to access again. It performs basic operations
+ * such as insertion, look-up and removal in O(log(n)) amortized time.
+ *
+ * @constructor
+ */
+function SplayTree() {
+};
+
+
+/**
+ * Pointer to the root node of the tree.
+ *
+ * @type {SplayTree.Node}
+ * @private
+ */
+SplayTree.prototype.root_ = null;
+
+
+/**
+ * @return {boolean} Whether the tree is empty.
+ */
+SplayTree.prototype.isEmpty = function() {
+ return !this.root_;
+};
+
+
+/**
+ * Inserts a node into the tree with the specified key and value if
+ * the tree does not already contain a node with the specified key. If
+ * the value is inserted, it becomes the root of the tree.
+ *
+ * @param {number} key Key to insert into the tree.
+ * @param {*} value Value to insert into the tree.
+ */
+SplayTree.prototype.insert = function(key, value) {
+ if (this.isEmpty()) {
+ this.root_ = new SplayTree.Node(key, value);
+ return;
+ }
+ // Splay on the key to move the last node on the search path for
+ // the key to the root of the tree.
+ this.splay_(key);
+ if (this.root_.key == key) {
+ return;
+ }
+ var node = new SplayTree.Node(key, value);
+ if (key > this.root_.key) {
+ node.left = this.root_;
+ node.right = this.root_.right;
+ this.root_.right = null;
+ } else {
+ node.right = this.root_;
+ node.left = this.root_.left;
+ this.root_.left = null;
+ }
+ this.root_ = node;
+};
+
+
+/**
+ * Removes a node with the specified key from the tree if the tree
+ * contains a node with this key. The removed node is returned. If the
+ * key is not found, an exception is thrown.
+ *
+ * @param {number} key Key to find and remove from the tree.
+ * @return {SplayTree.Node} The removed node.
+ */
+SplayTree.prototype.remove = function(key) {
+ if (this.isEmpty()) {
+ throw Error('Key not found: ' + key);
+ }
+ this.splay_(key);
+ if (this.root_.key != key) {
+ throw Error('Key not found: ' + key);
+ }
+ var removed = this.root_;
+ if (!this.root_.left) {
+ this.root_ = this.root_.right;
+ } else {
+ var right = this.root_.right;
+ this.root_ = this.root_.left;
+ // Splay to make sure that the new root has an empty right child.
+ this.splay_(key);
+ // Insert the original right child as the right child of the new
+ // root.
+ this.root_.right = right;
+ }
+ return removed;
+};
+
+
+/**
+ * Returns the node having the specified key or null if the tree doesn't contain
+ * a node with the specified key.
+ *
+ * @param {number} key Key to find in the tree.
+ * @return {SplayTree.Node} Node having the specified key.
+ */
+SplayTree.prototype.find = function(key) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ this.splay_(key);
+ return this.root_.key == key ? this.root_ : null;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value.
+ */
+SplayTree.prototype.findMax = function(opt_startNode) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ var current = opt_startNode || this.root_;
+ while (current.right) {
+ current = current.right;
+ }
+ return current;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value that
+ * is less than the specified key value.
+ */
+SplayTree.prototype.findGreatestLessThan = function(key) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ // Splay on the key to move the node with the given key or the last
+ // node on the search path to the top of the tree.
+ this.splay_(key);
+ // Now the result is either the root node or the greatest node in
+ // the left subtree.
+ if (this.root_.key < key) {
+ return this.root_;
+ } else if (this.root_.left) {
+ return this.findMax(this.root_.left);
+ } else {
+ return null;
+ }
+};
+
+
+/**
+ * @return {Array<*>} An array containing all the keys of tree's nodes.
+ */
+SplayTree.prototype.exportKeys = function() {
+ var result = [];
+ if (!this.isEmpty()) {
+ this.root_.traverse_(function(node) { result.push(node.key); });
+ }
+ return result;
+};
+
+
+/**
+ * Perform the splay operation for the given key. Moves the node with
+ * the given key to the top of the tree. If no node has the given
+ * key, the last node on the search path is moved to the top of the
+ * tree. This is the simplified top-down splaying algorithm from:
+ * "Self-adjusting Binary Search Trees" by Sleator and Tarjan
+ *
+ * @param {number} key Key to splay the tree on.
+ * @private
+ */
+SplayTree.prototype.splay_ = function(key) {
+ if (this.isEmpty()) {
+ return;
+ }
+ // Create a dummy node. The use of the dummy node is a bit
+ // counter-intuitive: The right child of the dummy node will hold
+ // the L tree of the algorithm. The left child of the dummy node
+ // will hold the R tree of the algorithm. Using a dummy node, left
+ // and right will always be nodes and we avoid special cases.
+ var dummy, left, right;
+ dummy = left = right = new SplayTree.Node(null, null);
+ var current = this.root_;
+ while (true) {
+ if (key < current.key) {
+ if (!current.left) {
+ break;
+ }
+ if (key < current.left.key) {
+ // Rotate right.
+ var tmp = current.left;
+ current.left = tmp.right;
+ tmp.right = current;
+ current = tmp;
+ if (!current.left) {
+ break;
+ }
+ }
+ // Link right.
+ right.left = current;
+ right = current;
+ current = current.left;
+ } else if (key > current.key) {
+ if (!current.right) {
+ break;
+ }
+ if (key > current.right.key) {
+ // Rotate left.
+ var tmp = current.right;
+ current.right = tmp.left;
+ tmp.left = current;
+ current = tmp;
+ if (!current.right) {
+ break;
+ }
+ }
+ // Link left.
+ left.right = current;
+ left = current;
+ current = current.right;
+ } else {
+ break;
+ }
+ }
+ // Assemble.
+ left.right = current.left;
+ right.left = current.right;
+ current.left = dummy.right;
+ current.right = dummy.left;
+ this.root_ = current;
+};
+
+
+/**
+ * Constructs a Splay tree node.
+ *
+ * @param {number} key Key.
+ * @param {*} value Value.
+ */
+SplayTree.Node = function(key, value) {
+ this.key = key;
+ this.value = value;
+};
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.left = null;
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.right = null;
+
+
+/**
+ * Performs an ordered traversal of the subtree starting at
+ * this SplayTree.Node.
+ *
+ * @param {function(SplayTree.Node)} f Visitor function.
+ * @private
+ */
+SplayTree.Node.prototype.traverse_ = function(f) {
+ var current = this;
+ while (current) {
+ var left = current.left;
+ if (left) left.traverse_(f);
+ f(current);
+ current = current.right;
+ }
+};
diff --git a/tests/benchmarks/script/v8/tst_v8.cpp b/tests/benchmarks/script/v8/tst_v8.cpp
new file mode 100644
index 0000000000..f8297e2a13
--- /dev/null
+++ b/tests/benchmarks/script/v8/tst_v8.cpp
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtCore/qdir.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtextstream.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+//TESTED_FILES=
+
+static QString readFile(const QString &filename)
+{
+ QFile file(filename);
+ if (!file.open(QFile::ReadOnly))
+ return QString();
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ return stream.readAll();
+}
+
+class tst_V8 : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_V8();
+ virtual ~tst_V8();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void benchmark_data();
+ void benchmark();
+
+private:
+ QDir testsDir;
+};
+
+tst_V8::tst_V8()
+{
+ testsDir = QDir(SRCDIR);
+ bool testsFound = testsDir.cd("tests");
+ if (!testsFound)
+ qWarning("*** no tests/ dir!");
+}
+
+tst_V8::~tst_V8()
+{
+}
+
+void tst_V8::init()
+{
+}
+
+void tst_V8::cleanup()
+{
+}
+
+void tst_V8::benchmark_data()
+{
+ QTest::addColumn<QString>("testName");
+ QFileInfoList testFileInfos = testsDir.entryInfoList(QStringList() << "*.js", QDir::Files);
+ foreach (QFileInfo tfi, testFileInfos) {
+ QString name = tfi.baseName();
+ if (name == QString::fromLatin1("base")) {
+ // base.js contains the benchmark library, it's not a test.
+ continue;
+ }
+ QTest::newRow(name.toLatin1().constData()) << name;
+ }
+}
+
+void tst_V8::benchmark()
+{
+ QFETCH(QString, testName);
+
+ QString baseDotJsContents = readFile(testsDir.absoluteFilePath("base.js"));
+ QVERIFY(!baseDotJsContents.isEmpty());
+
+ QString testContents = readFile(testsDir.absoluteFilePath(testName + ".js"));
+ QVERIFY(!testContents.isEmpty());
+
+ QScriptEngine engine;
+ engine.evaluate(baseDotJsContents);
+ QVERIFY(!engine.hasUncaughtException());
+ engine.evaluate(testContents);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QBENCHMARK {
+ engine.evaluate("BenchmarkSuite.RunSuites({})");
+ }
+ QVERIFY(!engine.hasUncaughtException());
+}
+
+QTEST_MAIN(tst_V8)
+#include "tst_v8.moc"
diff --git a/tests/benchmarks/script/v8/v8.pro b/tests/benchmarks/script/v8/v8.pro
new file mode 100644
index 0000000000..e55fd7fd2c
--- /dev/null
+++ b/tests/benchmarks/script/v8/v8.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_v8
+
+SOURCES += tst_v8.cpp
+
+QT = core script
+
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+wince*|symbian: {
+testFiles.sources = tests
+testFiles.path = .
+DEPLOYMENT += testFiles
+}
+
+symbian* {
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
+ TARGET.EPOCSTACKSIZE = 0x14000
+}
diff --git a/tests/benchmarks/svg/svg.pro b/tests/benchmarks/svg/svg.pro
index cdc2ca5716..d84eb7187a 100644
--- a/tests/benchmarks/svg/svg.pro
+++ b/tests/benchmarks/svg/svg.pro
@@ -1,3 +1,5 @@
TEMPLATE = subdirs
SUBDIRS = \
qsvgrenderer
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/trusted-benchmarks.pri b/tests/benchmarks/trusted-benchmarks.pri
new file mode 100644
index 0000000000..632dcff6d2
--- /dev/null
+++ b/tests/benchmarks/trusted-benchmarks.pri
@@ -0,0 +1,8 @@
+# Edit the list of trusted benchmarks in each of the sub-targets
+
+check-trusted.depends = qmake
+for(benchmark, TRUSTED_BENCHMARKS) {
+ check-trusted.commands += (cd $$benchmark && $(MAKE) -f $(MAKEFILE) check);
+}
+
+QMAKE_EXTRA_TARGETS += check-trusted
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 8520cf75be..4896272d9b 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -2498,8 +2498,8 @@ void MainWindow::updateDanger(const MultiDataIndex &index, bool verbose)
}
if (m_ui.actionPlaceMarkerMatches->isChecked()) {
- // Stores the occurence count of the place markers in the map placeMarkerIndexes.
- // i.e. the occurence count of %1 is stored at placeMarkerIndexes[1],
+ // Stores the occurrence count of the place markers in the map placeMarkerIndexes.
+ // i.e. the occurrence count of %1 is stored at placeMarkerIndexes[1],
// count of %2 is stored at placeMarkerIndexes[2] etc.
// In the first pass, it counts all place markers in the sourcetext.
// In the second pass it (de)counts all place markers in the translation.
diff --git a/tools/linguist/linguist/printout.cpp b/tools/linguist/linguist/printout.cpp
index 581dc0022b..7ec6875dab 100644
--- a/tools/linguist/linguist/printout.cpp
+++ b/tools/linguist/linguist/printout.cpp
@@ -130,7 +130,7 @@ void PrintOut::addBox(int percent, const QString &text, Style style, Qt::Alignme
cp.rect.setSize(QSize(cp.rect.width() + wd, qMax(cp.rect.height(), ht)));
}
-// use init if inital vsize should be calculated (first breakPage call)
+// use init if initial vsize should be calculated (first breakPage call)
void PrintOut::breakPage(bool init)
{
static const int LeftAlign = Qt::AlignLeft | Qt::AlignTop;
diff --git a/tools/linguist/shared/ts.dtd b/tools/linguist/shared/ts.dtd
index 4d2cdeb0b5..12d3562014 100644
--- a/tools/linguist/shared/ts.dtd
+++ b/tools/linguist/shared/ts.dtd
@@ -4,8 +4,6 @@
!
! The location element is set as optional since it was introduced first in Qt 4.2.
! The userdata element is set as optional since it was introduced first in Qt 4.4.
- ! The source and translation elements are optional starting with version 3.0
- ! (Qt 4.6) to support S60 blank messages.
!
-->
<!--
@@ -36,13 +34,10 @@
language CDATA #IMPLIED>
<!-- The encoding to use in the QM file by default. Default is ISO-8859-1. -->
<!ELEMENT defaultcodec (#PCDATA) >
-<!ELEMENT context (name?, comment?, (context|message)+) >
+<!ELEMENT context (name, comment?, (context|message)+) >
<!ATTLIST context
encoding CDATA #IMPLIED>
<!ELEMENT name %evilstring; >
-<!-- If "no", then the context nesting is for informational puposes only -->
-<!ATTLIST name
- nest (yes|no) "yes">
<!-- This is "disambiguation" in the (new) API, or "msgctxt" in gettext speak -->
<!ELEMENT comment %evilstring; >
<!-- Previous content of comment (result of merge) -->
@@ -53,12 +48,13 @@
<!ELEMENT translatorcomment %evilstring; >
<!ELEMENT message (location*, source?, oldsource?, comment?, oldcomment?, extracomment?, translatorcomment?, translation?, userdata?, extra-**) >
<!--
- ! If utf8 is true, the defaultcodec is overridden and the message is encoded
- ! in UTF-8 in the QM file.
+ ! If utf8 is "true", the defaultcodec is overridden and the message is encoded
+ ! in UTF-8 in the QM file. If it is "both", both source encodings are stored
+ ! in the QM file.
-->
<!ATTLIST message
id CDATA #IMPLIED
- utf8 (true|false) "false"
+ utf8 (true|false|both) "false"
numerus (yes|no) "no">
<!ELEMENT location EMPTY>
<!--
@@ -100,14 +96,5 @@
-->
<!ELEMENT numerusform (#PCDATA|byte|lengthvariant)* >
<!ATTLIST numerusform
- plurality (nullar|singular|dual|trial|paucal|greaterpaucal|plural|greaterplural) #IMPLIED>
variants (yes|no) "no">
<!ELEMENT lengthvariant %evilstring; >
-<!--
- ! The translation variants have a priority between 1 ("highest") and 9 ("lowest")
- ! Typically longer translations get a higher priority.
- ! If omitted, the order of appearance of the variants in the TS files is used.
- -->
-<!ATTLIST lengthvariant
- priority (1|2|3|4|5|6|7|8|9) #IMPLIED>
-
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index 52cf04b162..c7d23c011f 100644
--- a/tools/macdeployqt/shared/shared.cpp
+++ b/tools/macdeployqt/shared/shared.cpp
@@ -388,7 +388,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks,
foreach (FrameworkInfo dependency, dependencies) {
changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath);
- // Deploy framework if neccesary.
+ // Deploy framework if necessary.
if (copiedFrameworks.contains(dependency.frameworkName) == false && frameworks.contains(dependency) == false) {
frameworks.append(dependency);
}
diff --git a/tools/porting/src/preprocessorcontrol.cpp b/tools/porting/src/preprocessorcontrol.cpp
index 673ed08009..31adc32ca1 100644
--- a/tools/porting/src/preprocessorcontrol.cpp
+++ b/tools/porting/src/preprocessorcontrol.cpp
@@ -154,7 +154,7 @@ QByteArray PreprocessorCache::readFile(const QString &filename) const
// read the file for us.
if (receivers(SIGNAL(readFile(QByteArray&,QString))) > 0) {
QByteArray array;
- // Workaround for "not beeing able to emit from const function"
+ // Workaround for "not being able to emit from const function"
PreprocessorCache *cache = const_cast<PreprocessorCache *>(this);
emit cache->readFile(array, filename);
return array;
diff --git a/tools/porting/src/textreplacement.h b/tools/porting/src/textreplacement.h
index f90fb82bd9..f3515525a6 100644
--- a/tools/porting/src/textreplacement.h
+++ b/tools/porting/src/textreplacement.h
@@ -53,7 +53,7 @@ class TextReplacement
public:
QByteArray newText;
int insertPosition;
- int currentLenght; //lenght of the text that is going to be replaced.
+ int currentLenght; //length of the text that is going to be replaced.
bool operator<(const TextReplacement &other) const
{
return (insertPosition < other.insertPosition);
@@ -70,7 +70,7 @@ public:
insert maintains the TextReplacement list in sorted order.
- Returns true if the insert was successfull, false otherwise;
+ Returns true if the insert was successful, false otherwise;
*/
bool insert(QByteArray newText, int insertPosition, int currentLenght);
void clear();
diff --git a/tools/qconfig/qconfig.pro b/tools/qconfig/qconfig.pro
index efbfcf2de1..171924fa49 100644
--- a/tools/qconfig/qconfig.pro
+++ b/tools/qconfig/qconfig.pro
@@ -6,5 +6,4 @@ build_all:!build_pass {
}
HEADERS = feature.h featuretreemodel.h graphics.h
SOURCES = main.cpp feature.cpp featuretreemodel.cpp
-INTERFACES =
TARGET = qconfig
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index a83a3214ef..d43ad96c6d 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -2015,7 +2015,7 @@ void DitaXmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *mark
}
/*!
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
@@ -2101,7 +2101,7 @@ void DitaXmlGenerator::generateTableOfContents(const Node *node,
/*!
Revised for the new doc format.
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
diff --git a/tools/qdoc3/doc/qdoc-manual.qdocconf b/tools/qdoc3/doc/qdoc-manual.qdocconf
index 5a725b9c23..9514d63b8d 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdocconf
+++ b/tools/qdoc3/doc/qdoc-manual.qdocconf
@@ -1,7 +1,7 @@
project = QDoc
description = QDoc3 Manual
-indexes = $QTDIR/doc/html/qt.index
+indexes = ../../../doc/html/qt.index
outputdir = html
@@ -9,41 +9,226 @@ sources = qdoc-manual.qdoc
sourcedirs = $PWD
exampledirs += $PWD \
- $QTDIR/examples
+ ../../../examples
imagedirs += images
extraimages.HTML = qt-logo
-HTML.stylesheets = classic.css
-
-HTML.style = "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }\n" \
- "a:link { color: #004faf; text-decoration: none }\n" \
- "a:visited { color: #672967; text-decoration: none }\n" \
- "td.postheader { font-family: sans-serif }\n" \
- "tr.address { font-family: sans-serif }\n" \
- "body { background: #ffffff; color: black; }"
-
-HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"5\" width=\"100%\">\n" \
- "<tr>\n" \
- "<td align=\"left\" valign=\"top\" width=\"32\">" \
- "<a href=\"http://qt.nokia.com/\"><img src=\"images/qt-logo.png\" align=\"left\" border=\"0\" /></a>" \
- "</td>\n" \
- "<td class=\"postheader\" valign=\"center\">" \
- "<a href=\"01-qdoc-manual.html\">" \
- "<font color=\"#004faf\">Home: QDoc Manual</font></a>&nbsp;&middot;" \
- "<a href=\"http://qt.nokia.com/doc/4.8\">" \
- "<font color=\"#004faf\"> Qt Reference Documentation</font></a>" \
- "</td>\n" \
- "</tr></table>"
-
-HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
- "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"40%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
- "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
- "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
- "</tr></table></div></address>"
-
-spurious += "Missing '\\}'"
-spurious += "Cannot use .*"
-spurious += "Unexpected .*"
+HTML.stylesheets = style/style.css \
+ style/OfflineStyle.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style_ie6.css
+
+HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <div id=\"nav-logo\">\n" \
+ " <a href=\"index.html\">Home</a></div>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"></div>\n" \
+ " <div id=\"nav-topright\">\n" \
+ " <ul>\n" \
+ " <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
+ " <li class=\"nav-topright-dev\"><a href=\"http://developer.qt.nokia.com/\">DEV</a></li>\n" \
+ " <li class=\"nav-topright-labs\"><a href=\"http://labs.qt.nokia.com/blogs/\">LABS</a></li>\n" \
+ " <li class=\"nav-topright-doc nav-topright-doc-active\"><a href=\"http://doc.qt.nokia.com/\">\n" \
+ " DOC</a></li>\n" \
+ " <li class=\"nav-topright-blog\"><a href=\"http://blog.qt.nokia.com/\">BLOG</a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <div id=\"shortCut\">\n" \
+ " <ul>\n" \
+ " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt 4.8</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://doc.qt.nokia.com\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global Declarations</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrapper\">\n" \
+ " <div class=\"hd\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " <div class=\"bd group\">\n" \
+ " <div class=\"sidebar\">\n" \
+ " <div class=\"searchlabel\">\n" \
+ " Search index:</div>\n" \
+ " <div class=\"search\" id=\"sidebarsearch\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
+ " <div id=\"resultdialog\"> \n" \
+ " <a href=\"#\" id=\"resultclose\">Close</a> \n" \
+ " <p id=\"resultlinks\" class=\"all\"><a href=\"#\" id=\"showallresults\">All</a> | <a href=\"#\" id=\"showapiresults\">API</a> | <a href=\"#\" id=\"showarticleresults\">Articles</a> | <a href=\"#\" id=\"showexampleresults\">Examples</a></p> \n" \
+ " <p id=\"searchcount\" class=\"all\"><span id=\"resultcount\"></span><span id=\"apicount\"></span><span id=\"articlecount\"></span><span id=\"examplecount\"></span>&nbsp;results:</p> \n" \
+ " <ul id=\"resultlist\" class=\"all\"> \n" \
+ " </ul> \n" \
+ " </div> \n" \
+ " </fieldset>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div class=\"box first bottombar\" id=\"lookup\">\n" \
+ " <h2 title=\"API Lookup\"><span></span>\n" \
+ " API Lookup</h2>\n" \
+ " <div id=\"list001\" class=\"list\">\n" \
+ " <ul id=\"ul001\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"classes.html\">Class index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">Function index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"modules.html\">Modules</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"namespaces.html\">Namespaces</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qtglobal.html\">Global Declarations</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeelements.html\">QML elements</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box bottombar\" id=\"topics\">\n" \
+ " <h2 title=\"Qt Topics\"><span></span>\n" \
+ " Qt Topics</h2>\n" \
+ " <div id=\"list002\" class=\"list\">\n" \
+ " <ul id=\"ul002\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box\" id=\"examples\">\n" \
+ " <h2 title=\"Examples\"><span></span>\n" \
+ " Examples</h2>\n" \
+ " <div id=\"list003\" class=\"list\">\n" \
+ " <ul id=\"ul003\">\n" \
+ " <li class=\"defaultLink\"><a href=\"all-examples.html\">Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"tutorials.html\">Tutorials</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"demos.html\">Demos</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html\">QML Examples</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrap\">\n" \
+ " <div class=\"toolbar\">\n" \
+ " <div class=\"breadcrumb toolblock\">\n" \
+ " <ul>\n" \
+ " <li class=\"first\"><a href=\"index.html\">Home</a></li>\n" \
+ " <!-- Bread crumbs goes here -->\n"
+
+HTML.postpostheader = " </ul>\n" \
+ " </div>\n" \
+ " <div class=\"toolbuttons toolblock\">\n" \
+ " <ul>\n" \
+ " <li id=\"smallA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"medA\" class=\"t_button active\">A</li>\n" \
+ " <li id=\"bigA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
+ " <span>Print</span></a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"content mainContent\">\n"
+
+HTML.footer = "" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"ft\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"footer\">\n" \
+ " <p>\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2008-2010 Nokia Corporation and/or its\n" \
+ " subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation \n" \
+ " in Finland and/or other countries worldwide.</p>\n" \
+ " <p>\n" \
+ " All other trademarks are property of their respective owners. <a title=\"Privacy Policy\"\n" \
+ " href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
+ " <br />\n" \
+ " <p>\n" \
+ " Licensees holding valid Qt Commercial licenses may use this document 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.</p>\n" \
+ " <p>\n" \
+ " Alternatively, this document may be used under the terms of the <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU\n" \
+ " Free Documentation License version 1.3</a>\n" \
+ " as published by the Free Software Foundation.</p>\n" \
+ " </div>\n" \
+ " <div id=\"feedbackBox\">\n" \
+ " <div id=\"feedcloseX\" class=\"feedclose t_button\">X</div>\n" \
+ " <form id=\"feedform\" action=\"http://doc.qt.nokia.com/docFeedbck/feedback.php\" method=\"get\">\n" \
+ " <p id=\"noteHead\">Thank you for giving your feedback.</p> <p class=\"note\">Make sure it is related to this specific page. For more general bugs and \n" \
+ " requests, please use the <a href=\"http://bugreports.qt.nokia.com/secure/Dashboard.jspa\">Qt Bug Tracker</a>.</p>\n" \
+ " <p><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\"></textarea></p>\n" \
+ " <p><input id=\"feedsubmit\" class=\"feedclose\" type=\"submit\" name=\"feedback\" /></p>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div id=\"blurpage\">\n" \
+ " </div>\n"
+
+# This stuff is used by the Qt 4.7 doc format.
+scriptdirs = ../../../doc/src/template/scripts
+styledirs = ../../../doc/src/template/style
+
+scripts.HTML = functions.js \
+ narrow.js \
+ superfish.js \
+ jquery.js
+
+styles.HTML = style.css \
+ narrow.css \
+ superfish.css \
+ superfish_skin.css \
+ style_ie6.css \
+ style_ie7.css \
+ style_ie8.css
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = scripts/functions.js \
+ scripts/jquery.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/narrow.css \
+ style/superfish.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style.css
+
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 7b719c89e2..9e45f8c903 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -1929,10 +1929,8 @@ void HtmlGenerator::generateHeader(const QString& title,
}
}
-#if 0 // Removed for new doc format. MWS
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p>\n";
-#endif
+ out() << "<p class=\"naviNextPrevious headerNavi\">\n" << navigationLinks << "</p><p/>\n";
}
void HtmlGenerator::generateTitle(const QString& title,
@@ -1957,7 +1955,7 @@ void HtmlGenerator::generateTitle(const QString& title,
void HtmlGenerator::generateFooter(const Node *node)
{
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p>\n";
+ out() << "<p class=\"naviNextPrevious footerNavi\">\n" << navigationLinks << "</p>\n";
out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
<< QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
@@ -3721,7 +3719,11 @@ void HtmlGenerator::findAllClasses(const InnerNode *node)
(*c)->subType() == Node::QmlClass &&
!(*c)->doc().isEmpty()) {
QString qmlClassName = (*c)->name();
- qmlClasses.insert(qmlClassName,*c);
+ // Remove the "QML:" prefix if present.
+ if (qmlClassName.startsWith(QLatin1String("QML:")))
+ qmlClasses.insert(qmlClassName.mid(4),*c);
+ else
+ qmlClasses.insert(qmlClassName,*c);
}
else if ((*c)->isInnerNode()) {
findAllClasses(static_cast<InnerNode *>(*c));
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index ae0bf255a7..d47e066534 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -120,9 +120,9 @@ SOURCES += apigenerator.cpp \
qtPrepareTool(QDOC, qdoc3)
-docs.commands = $$QDOC qdoc-manual.qdocconf
+html-docs.commands = cd \"$$PWD/doc\" && $$QDOC qdoc-manual.qdocconf
-QMAKE_EXTRA_TARGETS += docs
+QMAKE_EXTRA_TARGETS += html-docs
target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 58cee4f11b..4ae032f7cc 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -9,6 +9,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div id=\"nav-logo\">\n" \
" <a href=\"index.html\">Home</a></div>\n" \
" <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"></div>\n" \
" <div id=\"nav-topright\">\n" \
" <ul>\n" \
" <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
@@ -26,6 +27,37 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" </a></li>\n" \
" </ul>\n" \
" </div>\n" \
+ " <ul class=\"sf-menu\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global Declarations</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
" </div>\n" \
" </div>\n" \
" <div class=\"wrapper\">\n" \
@@ -36,7 +68,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div class=\"sidebar\">\n" \
" <div class=\"searchlabel\">\n" \
" Search index:</div>\n" \
- " <div class=\"search\">\n" \
+ " <div class=\"search\" id=\"sidebarsearch\">\n" \
" <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
" <fieldset>\n" \
" <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
diff --git a/tools/qdoc3/tokenizer.h b/tools/qdoc3/tokenizer.h
index bd359659bc..1b33f6f5d6 100644
--- a/tools/qdoc3/tokenizer.h
+++ b/tools/qdoc3/tokenizer.h
@@ -145,7 +145,7 @@ class Tokenizer
int ch = getch();
if (ch == EOF)
return EOF;
- // cast explicitely to make sure the value of ch
+ // cast explicitly to make sure the value of ch
// is in range [0..255] to avoid assert messages
// when using debug CRT that checks its input.
return int(uint(uchar(ch)));
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 540ffa9383..d1e2c60116 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1543,8 +1543,72 @@ bool Tree::generateIndexSection(QXmlStreamWriter &writer,
return true;
}
+
/*!
- */
+ Returns true if the node \a n1 is less than node \a n2.
+ The comparison is performed by comparing properties of the nodes in order
+ of increasing complexity.
+*/
+bool compareNodes(const Node *n1, const Node *n2)
+{
+ // Private nodes can occur in any order since they won't normally be
+ // written to the index.
+ if (n1->access() == Node::Private && n2->access() == Node::Private)
+ return true;
+
+ if (n1->location().filePath() < n2->location().filePath())
+ return true;
+ else if (n1->location().filePath() > n2->location().filePath())
+ return false;
+
+ if (n1->type() < n2->type())
+ return true;
+ else if (n1->type() > n2->type())
+ return false;
+
+ if (n1->name() < n2->name())
+ return true;
+ else if (n1->name() > n2->name())
+ return false;
+
+ if (n1->access() < n2->access())
+ return true;
+ else if (n1->access() > n2->access())
+ return false;
+
+ if (n1->type() == Node::Function && n2->type() == Node::Function) {
+ const FunctionNode *f1 = static_cast<const FunctionNode *>(n1);
+ const FunctionNode *f2 = static_cast<const FunctionNode *>(n2);
+
+ if (f1->isConst() < f2->isConst())
+ return true;
+ else if (f1->isConst() > f2->isConst())
+ return false;
+
+ if (f1->signature() < f2->signature())
+ return true;
+ else if (f1->signature() > f2->signature())
+ return false;
+ }
+
+ if (n1->type() == Node::Fake && n2->type() == Node::Fake) {
+ const FakeNode *f1 = static_cast<const FakeNode *>(n1);
+ const FakeNode *f2 = static_cast<const FakeNode *>(n2);
+ if (f1->fullTitle() < f2->fullTitle())
+ return true;
+ else if (f1->fullTitle() > f2->fullTitle())
+ return false;
+ }
+
+ return false;
+}
+
+/*!
+ Generate index sections for the child nodes of the given \a node
+ using the \a writer specified. If \a generateInternalNodes is true,
+ nodes marked as internal will be included in the index; otherwise,
+ they will be omitted.
+*/
void Tree::generateIndexSections(QXmlStreamWriter &writer,
const Node *node,
bool generateInternalNodes) const
@@ -1554,7 +1618,10 @@ void Tree::generateIndexSections(QXmlStreamWriter &writer,
if (node->isInnerNode()) {
const InnerNode *inner = static_cast<const InnerNode *>(node);
- foreach (const Node *child, inner->childNodes()) {
+ NodeList cnodes = inner->childNodes();
+ qSort(cnodes.begin(), cnodes.end(), compareNodes);
+
+ foreach (const Node *child, cnodes) {
/*
Don't generate anything for a QML property group node.
It is just a place holder for a collection of QML property
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.cpp b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
new file mode 100644
index 0000000000..499e10292f
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmeegofencesync.h"
+#include "qmeegofencesync_p.h"
+#include "qmeegoruntime.h"
+
+/* QMeeGoFenceSyncPrivate */
+
+QMeeGoFenceSyncPrivate::QMeeGoFenceSyncPrivate() : syncObject(NULL)
+{
+}
+
+QMeeGoFenceSyncPrivate::~QMeeGoFenceSyncPrivate()
+{
+ if (syncObject) {
+ QMeeGoRuntime::destroyFenceSync(syncObject);
+ syncObject = NULL;
+ }
+}
+
+/* QMeeGoFenceSync */
+
+QMeeGoFenceSync::QMeeGoFenceSync(QWidget *parent) : QObject(parent), d_ptr(new QMeeGoFenceSyncPrivate())
+{
+ Q_D(QMeeGoFenceSync);
+ d->q_ptr = this;
+}
+
+QMeeGoFenceSync::~QMeeGoFenceSync()
+{
+}
+
+void QMeeGoFenceSync::setSyncPoint()
+{
+ Q_D(QMeeGoFenceSync);
+ if (d->syncObject)
+ QMeeGoRuntime::destroyFenceSync(d->syncObject);
+
+ d->syncObject = QMeeGoRuntime::createFenceSync();
+}
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.h b/tools/qmeegographicssystemhelper/qmeegofencesync.h
new file mode 100644
index 0000000000..2d3f5c5841
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEEGOFENCESYNC_H
+#define QMEEGOFENCESYNC_H
+
+#include <QWidget>
+
+class QMeeGoFenceSyncPrivate;
+
+//! A synchronization helper for GL pipeline.
+/*!
+ Fence syncs provide a mechanism for synchronizing access to certain GL primitives
+ and make it possible for the application developer to be sure that a certain point
+ in the GL processing pipeline has been already executed before continuing operation.
+
+ Currently fence syncs are only useful in conjunction with QMeeGoLivePixmaps.
+ \code
+ ...
+ // In your paint/expose event:
+ QImage *image = livePixmap->lock(&someGlobalFenceSync);
+ // Modify the image...
+ livePixmap->release(image);
+
+ painter->drawPixmap(0, 0, *livePixmap);
+ someGlobalFenceSync.setSyncPoint();
+ ...
+ \endcode
+
+ Assuming the paint/expose events come repeatedly, the lock operation
+ will block till the previous event completed painting the livePixmap.
+*/
+
+class Q_DECL_EXPORT QMeeGoFenceSync : public QObject
+{
+public:
+ //! Constructs a new fence sync.
+ /*!
+ The fence sync is created without a sync point. You need to set the sync point manually.
+ */
+ QMeeGoFenceSync(QWidget *parent = 0);
+
+ //! Destructor for the fence sync.
+ virtual ~QMeeGoFenceSync();
+
+ //! Sets the fence sync.
+ /*!
+ The fence sync synchronization point should be set after all drawing has been scheduled.
+ Setting a synchronization point always overrides the previous point -- whetver is was
+ used (waited upon) or not.
+ */
+ void setSyncPoint();
+
+private:
+ Q_DISABLE_COPY(QMeeGoFenceSync)
+ Q_DECLARE_PRIVATE(QMeeGoFenceSync)
+
+protected:
+ QScopedPointer<QMeeGoFenceSyncPrivate> d_ptr; //! Private bits.
+ friend class QMeeGoLivePixmap;
+};
+
+#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync_p.h b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
new file mode 100644
index 0000000000..8a5d26e5a5
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmeegofencesync.h"
+
+#ifndef QMEEGOFENCESYNC_P_H
+#define QMEEGOFENCESYNC_P_H
+
+class QMeeGoFenceSyncPrivate
+{
+public:
+ Q_DECLARE_PUBLIC(QMeeGoFenceSync);
+ QMeeGoFenceSyncPrivate();
+
+ virtual ~QMeeGoFenceSyncPrivate();
+
+ void* syncObject;
+
+ QMeeGoFenceSync *q_ptr;
+};
+
+#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro
index 7412fc3c12..161a31bfbd 100644
--- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro
+++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro
@@ -6,5 +6,5 @@ include(../../src/qbase.pri)
QT += gui
INCLUDEPATH += '../../src/plugins/graphicssystems/meego'
-HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h
-SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h
+HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h
+SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
index d43efe2475..9700581f69 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
@@ -41,6 +41,7 @@
#include "qmeegolivepixmap.h"
#include "qmeegolivepixmap_p.h"
+#include "qmeegofencesync_p.h"
#include "qmeegoruntime.h"
/* QMeeGoLivePixmapPrivate */
@@ -102,10 +103,12 @@ QMeeGoLivePixmap::~QMeeGoLivePixmap()
{
}
-QImage* QMeeGoLivePixmap::lock()
+QImage* QMeeGoLivePixmap::lock(QMeeGoFenceSync *fenceSync)
{
- return QMeeGoRuntime::lockLiveTexture(this);
-
+ if (fenceSync)
+ return QMeeGoRuntime::lockLiveTexture(this, fenceSync->d_func()->syncObject);
+ else
+ return QMeeGoRuntime::lockLiveTexture(this, NULL);
}
void QMeeGoLivePixmap::release(QImage *img)
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.h b/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
index 7be2c4b0b1..51b5976e1f 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
@@ -43,6 +43,7 @@
#define QMEEGOLIVEPIXMAP_H
#include <QPixmap>
+#include "qmeegofencesync.h"
class QMeeGoLivePixmapPrivate;
class QSharedMemory;
@@ -82,8 +83,12 @@ public:
//! Locks the access to the pixmap.
/*!
The returned image can be used for direct access.
+ You can optionally specify a fence sync to wait upon before unlocking. When
+ you specify a fence sync, you can be sure that this function will return only
+ when the previsouly set QMeeGoFenceSync synchronization point has been executed/passed
+ by the GL processing pipeline.
*/
- QImage* lock();
+ QImage* lock(QMeeGoFenceSync *fenceSync = NULL);
//! Unlocks the access to the pixmap.
/*!
diff --git a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
index ac627e51f9..2d3ee3c2bd 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
@@ -60,9 +60,11 @@ typedef void (*QMeeGoSetSurfaceScalingFunc) (int x, int y, int w, int h);
typedef void (*QMeeGoSetTranslucentFunc) (bool translucent);
typedef QPixmapData* (*QMeeGoPixmapDataWithNewLiveTextureFunc) (int w, int h, QImage::Format format);
typedef QPixmapData* (*QMeeGoPixmapDataFromLiveTextureHandleFunc) (Qt::HANDLE h);
-typedef QImage* (*QMeeGoLiveTextureLockFunc) (QPixmap*);
+typedef QImage* (*QMeeGoLiveTextureLockFunc) (QPixmap*, void* fenceSync);
typedef bool (*QMeeGoLiveTextureReleaseFunc) (QPixmap*, QImage *i);
typedef Qt::HANDLE (*QMeeGoLiveTextureGetHandleFunc) (QPixmap*);
+typedef void* (*QMeeGoCreateFenceSyncFunc) (void);
+typedef void (*QMeeGoDestroyFenceSyncFunc) (void *fs);
static QMeeGoImageToEglSharedImageFunc qt_meego_image_to_egl_shared_image = NULL;
static QMeeGoPixmapDataFromEglSharedImageFunc qt_meego_pixmapdata_from_egl_shared_image = NULL;
@@ -77,6 +79,8 @@ static QMeeGoPixmapDataFromLiveTextureHandleFunc qt_meego_pixmapdata_from_live_t
static QMeeGoLiveTextureLockFunc qt_meego_live_texture_lock = NULL;
static QMeeGoLiveTextureReleaseFunc qt_meego_live_texture_release = NULL;
static QMeeGoLiveTextureGetHandleFunc qt_meego_live_texture_get_handle = NULL;
+static QMeeGoCreateFenceSyncFunc qt_meego_create_fence_sync = NULL;
+static QMeeGoDestroyFenceSyncFunc qt_meego_destroy_fence_sync = NULL;
void QMeeGoRuntime::initialize()
{
@@ -103,12 +107,15 @@ void QMeeGoRuntime::initialize()
qt_meego_live_texture_lock = (QMeeGoLiveTextureLockFunc) library.resolve("qt_meego_live_texture_lock");
qt_meego_live_texture_release = (QMeeGoLiveTextureReleaseFunc) library.resolve("qt_meego_live_texture_release");
qt_meego_live_texture_get_handle = (QMeeGoLiveTextureGetHandleFunc) library.resolve("qt_meego_live_texture_get_handle");
+ qt_meego_create_fence_sync = (QMeeGoCreateFenceSyncFunc) library.resolve("qt_meego_create_fence_sync");
+ qt_meego_destroy_fence_sync = (QMeeGoDestroyFenceSyncFunc) library.resolve("qt_meego_destroy_fence_sync");
if (qt_meego_image_to_egl_shared_image && qt_meego_pixmapdata_from_egl_shared_image &&
qt_meego_pixmapdata_with_gl_texture && qt_meego_destroy_egl_shared_image && qt_meego_update_egl_shared_image_pixmap &&
qt_meego_set_surface_fixed_size && qt_meego_set_surface_scaling && qt_meego_set_translucent &&
qt_meego_pixmapdata_with_new_live_texture && qt_meego_pixmapdata_from_live_texture_handle &&
- qt_meego_live_texture_lock && qt_meego_live_texture_release && qt_meego_live_texture_get_handle)
+ qt_meego_live_texture_lock && qt_meego_live_texture_release && qt_meego_live_texture_get_handle &&
+ qt_meego_create_fence_sync && qt_meego_destroy_fence_sync)
{
qDebug("Successfully resolved MeeGo graphics system: %s %s\n", qPrintable(libraryPrivate->fileName), qPrintable(libraryPrivate->fullVersion));
} else {
@@ -191,11 +198,11 @@ QPixmapData* QMeeGoRuntime::pixmapDataFromLiveTextureHandle(Qt::HANDLE h)
return qt_meego_pixmapdata_from_live_texture_handle(h);
}
-QImage* QMeeGoRuntime::lockLiveTexture(QPixmap *p)
+QImage* QMeeGoRuntime::lockLiveTexture(QPixmap *p, void* fenceSync)
{
ENSURE_INITIALIZED;
Q_ASSERT(qt_meego_live_texture_lock);
- return qt_meego_live_texture_lock(p);
+ return qt_meego_live_texture_lock(p, fenceSync);
}
bool QMeeGoRuntime::releaseLiveTexture(QPixmap *p, QImage *i)
@@ -211,3 +218,17 @@ Qt::HANDLE QMeeGoRuntime::getLiveTextureHandle(QPixmap *pixmap)
Q_ASSERT(qt_meego_live_texture_get_handle);
return qt_meego_live_texture_get_handle(pixmap);
}
+
+void* QMeeGoRuntime::createFenceSync()
+{
+ ENSURE_INITIALIZED;
+ Q_ASSERT(qt_meego_create_fence_sync);
+ return qt_meego_create_fence_sync();
+}
+
+void QMeeGoRuntime::destroyFenceSync(void *fs)
+{
+ ENSURE_INITIALIZED;
+ Q_ASSERT(qt_meego_destroy_fence_sync);
+ qt_meego_destroy_fence_sync(fs);
+}
diff --git a/tools/qmeegographicssystemhelper/qmeegoruntime.h b/tools/qmeegographicssystemhelper/qmeegoruntime.h
index 6b34836591..be6ff6b259 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.h
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.h
@@ -57,9 +57,11 @@ public:
static void setTranslucent(bool translucent);
static QPixmapData* pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
static QPixmapData* pixmapDataFromLiveTextureHandle(Qt::HANDLE h);
- static QImage* lockLiveTexture(QPixmap *pixmap);
+ static QImage* lockLiveTexture(QPixmap *pixmap, void *fenceSync);
static bool releaseLiveTexture(QPixmap *pixmap, QImage *image);
static Qt::HANDLE getLiveTextureHandle(QPixmap *pixmap);
+ static void* createFenceSync();
+ static void destroyFenceSync(void *fs);
private:
static bool initialized;
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index 00d43c1a7d..579f1abf6f 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -172,6 +172,7 @@ void scriptOptsUsage()
qWarning(" play ..................................... playback an existing script");
qWarning(" testimages ............................... record images or compare images on playback");
qWarning(" testerror ................................ test 'error' property of root item on playback");
+ qWarning(" testskip ................................ test 'skip' property of root item on playback");
qWarning(" snapshot ................................. file being recorded is static,");
qWarning(" only one frame will be recorded or tested");
qWarning(" exitoncomplete ........................... cleanly exit the viewer on script completion");
@@ -305,6 +306,8 @@ static void parseScriptOptions()
scriptOptions |= QDeclarativeViewer::TestImages;
} else if (option == QLatin1String("testerror")) {
scriptOptions |= QDeclarativeViewer::TestErrorProperty;
+ } else if (option == QLatin1String("testskip")) {
+ scriptOptions |= QDeclarativeViewer::TestSkipProperty;
} else if (option == QLatin1String("exitoncomplete")) {
scriptOptions |= QDeclarativeViewer::ExitOnComplete;
} else if (option == QLatin1String("exitonfailure")) {
diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp
index 9864df63ce..eaf3403a66 100644
--- a/tools/qml/qdeclarativetester.cpp
+++ b/tools/qml/qdeclarativetester.cpp
@@ -52,6 +52,7 @@
QT_BEGIN_NAMESPACE
+extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer::ScriptOptions opts,
QDeclarativeView *parent)
@@ -136,8 +137,25 @@ void QDeclarativeTester::imagefailure()
{
hasFailed = true;
- if (options & QDeclarativeViewer::ExitOnFailure)
- exit(-1);
+ if (options & QDeclarativeViewer::ExitOnFailure){
+ testSkip();
+ exit(hasFailed?-1:0);
+ }
+}
+
+void QDeclarativeTester::testSkip()
+{
+ if (options & QDeclarativeViewer::TestSkipProperty){
+ QString e = m_view->rootObject()->property("skip").toString();
+ if (!e.isEmpty()) {
+ if(hasFailed){
+ qWarning() << "Test failed, but skipping it: " << e;
+ }else{
+ qWarning() << "Test skipped: " << e;
+ }
+ hasFailed = 0;
+ }
+ }
}
void QDeclarativeTester::complete()
@@ -149,7 +167,10 @@ void QDeclarativeTester::complete()
hasFailed = true;
}
}
- if (options & QDeclarativeViewer::ExitOnComplete)
+
+
+ testSkip();
+ if (options & QDeclarativeViewer::ExitOnComplete)
QApplication::exit(hasFailed?-1:0);
if (hasCompleted)
@@ -247,7 +268,14 @@ void QDeclarativeTester::updateCurrentTime(int msec)
if (options & QDeclarativeViewer::TestImages) {
img.fill(qRgb(255,255,255));
+#ifdef Q_WS_MAC
+ bool oldSmooth = qt_applefontsmoothing_enabled;
+ qt_applefontsmoothing_enabled = false;
+#endif
QPainter p(&img);
+#ifdef Q_WS_MAC
+ qt_applefontsmoothing_enabled = oldSmooth;
+#endif
m_view->render(&p);
}
diff --git a/tools/qml/qdeclarativetester.h b/tools/qml/qdeclarativetester.h
index 021869d93a..0cf508ab40 100644
--- a/tools/qml/qdeclarativetester.h
+++ b/tools/qml/qdeclarativetester.h
@@ -228,6 +228,7 @@ private:
void imagefailure();
void complete();
+ void testSkip();
enum Destination { View, ViewPort };
void addKeyEvent(Destination, QKeyEvent *);
diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h
index d1ec26d268..b43aa54476 100644
--- a/tools/qml/qmlruntime.h
+++ b/tools/qml/qmlruntime.h
@@ -83,7 +83,8 @@ public:
SaveOnExit = 0x00000010,
ExitOnComplete = 0x00000020,
ExitOnFailure = 0x00000040,
- Snapshot = 0x00000080
+ Snapshot = 0x00000080,
+ TestSkipProperty = 0x00000100
};
Q_DECLARE_FLAGS(ScriptOptions, ScriptOption)
void setScript(const QString &s) { m_script = s; }
diff --git a/tools/runonphone/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp
index db6375e03e..f5b2521bd2 100644
--- a/tools/runonphone/serenum_unix.cpp
+++ b/tools/runonphone/serenum_unix.cpp
@@ -100,7 +100,7 @@ QList<SerialPortId> enumerateSerialPorts(int loglevel)
// data transmission.
// the extra info stores that as a index for the interface
if (buf[0] >= 5 && buf[1] == 36 && buf[2] == 6) { // CDC Union
- for (int i = 4; i < buf[0]; i++)
+ for (int i = 3; i < buf[0]; i++)
usableInterfaces.append((int) buf[i]);
}
size -= buf[0];
@@ -146,32 +146,17 @@ QList<SerialPortId> enumerateSerialPorts(int loglevel)
// second loop to find the actual data interface.
foreach (int i, usableInterfaces) {
- for (int m = 0; m < usbConfig.bNumInterfaces; ++m) {
- for (int o = 0; o < usbConfig.interface[m].num_altsetting; ++o) {
- struct usb_interface_descriptor &descriptor = usbConfig.interface[m].altsetting[o];
- if (descriptor.bInterfaceNumber != i)
- continue;
- if (descriptor.bInterfaceClass == 10) { // "CDC Data"
- if (loglevel > 1) {
- qDebug() << " found the data port"
- << "bus:" << bus->dirname
- << "device" << device->filename
- << "interface" << descriptor.bInterfaceNumber;
- }
- // ### manufacturer and product strings are only readable as root :(
- if (!manufacturerString.isEmpty() && !productString.isEmpty()) {
- eligibleInterfaces << QString("usb-%1_%2-if%3")
- .arg(manufacturerString.replace(QChar(' '), QChar('_')))
- .arg(productString.replace(QChar(' '), QChar('_')))
- .arg(i, 2, 16, QChar('0'));
- } else {
- eligibleInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix!
- }
- eligibleInterfacesInfo << InterfaceInfo(manufacturerString, productString, device->descriptor.idVendor, device->descriptor.idProduct);
- }
- }
+ // ### manufacturer and product strings are only readable as root :(
+ if (!manufacturerString.isEmpty() && !productString.isEmpty()) {
+ eligibleInterfaces << QString("usb-%1_%2-if%3")
+ .arg(manufacturerString.replace(QChar(' '), QChar('_')))
+ .arg(productString.replace(QChar(' '), QChar('_')))
+ .arg(i, 2, 16, QChar('0'));
+ } else {
+ eligibleInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix!
}
}
+ eligibleInterfacesInfo << InterfaceInfo(manufacturerString, productString, device->descriptor.idVendor, device->descriptor.idProduct);
}
}
}
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 95fabaf220..3648fddfa2 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -67,7 +67,7 @@ Grund:
</message>
<message>
<source>Error reading collection file &apos;%1&apos;: %2.</source>
- <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2</translation>
+ <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2.</translation>
</message>
<message>
<source>Error creating collection file &apos;%1&apos;: %2.</source>
@@ -741,7 +741,7 @@ Grund:
</message>
<message>
<source>Input File</source>
- <translation>Eingabedatei:</translation>
+ <translation>Datei eingeben</translation>
</message>
<message>
<source>Specify the .adp or .dcf file you want to convert to the new Qt help project format and/or collection format.</source>
@@ -989,7 +989,7 @@ Grund:
</message>
<message>
<source>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation und/oder ihre Tochtergesellschaft(en).&lt;/p&gt;</translation>
</message>
<message>
<source>Could not register file &apos;%1&apos;: %2</source>
@@ -1354,7 +1354,19 @@ qcollectiongenerator &lt;collection-config-file&gt; [options]
qcollectiongenerator.
</source>
- <translation type="unfinished"></translation>
+ <translation>
+Aufruf:
+
+qcollectiongenerator &lt;collection-Konfigurationsdatei&gt; [Optionen]
+
+ -o &lt;collection-Datei&gt; Erstellt eine Collection-Datei mit
+ dem Namen &lt;collection-Datei&gt;. Wenn
+ diese Option nicht angegeben ist, wird
+ der Standardname verwendet.
+ -v Zeigt die Versionsnummer von
+ qcollectiongenerator an.
+
+</translation>
</message>
<message>
<source>Could not open %1.
@@ -1435,7 +1447,22 @@ qhelpgenerator &lt;help-project-file&gt; [options]
qhelpgenerator.
</source>
- <translation type="unfinished"></translation>
+ <translation>
+Aufruf:
+
+qhelpgenerator &lt;Hilfe-Projektdatei&gt; [Optionen]
+ -o &lt;komprimierte-Datei&gt; Erstellt eine komprimierte
+ Qt-Hilfedatei mit dem Namen
+ &lt;komprimierte-Datei&gt;. Wenn diese
+ Option nicht angegeben ist, wird
+ ein Standardname verwendet.
+ -c Prüft, ob alle Verknüpfungen in
+ HTML-Dateien auf Dateien in diesem
+ Hilfeprojekt verweisen.
+ -v Zeigt die Versionsnummer von
+ qhelpgenerator an.
+
+</translation>
</message>
<message>
<source>Could not open %1.
diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts
index f5ba461931..61c8d6c704 100644
--- a/translations/assistant_ru.ts
+++ b/translations/assistant_ru.ts
@@ -76,10 +76,6 @@ Reason:
<translation>Ошибка создания файла коллекции справки &apos;%1&apos;: %2.</translation>
</message>
<message>
- <source>Error reading collection file &apos;%1&apos;: %2</source>
- <translation>Ошибка чтения файла коллекции справки &apos;%1&apos;: %2</translation>
- </message>
- <message>
<source>Cannot load sqlite database driver!</source>
<translation>Не удалось загрузить драйвер баз данных sqlite!</translation>
</message>
@@ -112,6 +108,17 @@ Reason:
</message>
</context>
<context>
+ <name>BookmarkItem</name>
+ <message>
+ <source>New Folder</source>
+ <translation>Новая папка</translation>
+ </message>
+ <message>
+ <source>Untitled</source>
+ <translation>Безымянная</translation>
+ </message>
+</context>
+<context>
<name>BookmarkManager</name>
<message>
<source>Remove</source>
@@ -131,7 +138,7 @@ Reason:
</message>
<message>
<source>Untitled</source>
- <translation>Неозаглавлено</translation>
+ <translation>Безымянная</translation>
</message>
<message>
<source>Manage Bookmarks...</source>
@@ -329,6 +336,64 @@ Reason:
<translation>Файл коллекции справки &apos;%1&apos; не существует.</translation>
</message>
<message>
+ <source>Usage: assistant [Options]
+
+-collectionFile file Uses the specified collection
+ file instead of the default one
+-showUrl url Shows the document with the
+ url.
+-enableRemoteControl Enables Assistant to be
+ remotely controlled.
+-show widget Shows the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-activate widget Activates the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-hide widget Hides the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-register helpFile Registers the specified help file
+ (.qch) in the given collection
+ file.
+-unregister helpFile Unregisters the specified help file
+ (.qch) from the give collection
+ file.
+-setCurrentFilter filter Set the filter as the active filter.
+-remove-search-index Removes the full text search index.
+-rebuild-search-index Re-builds the full text search index (potentially slow).
+-quiet Does not display any error or
+ status message.
+-help Displays this help.
+</source>
+ <translation>Использование: assistant [ОПЦИИ]
+
+-collectionFile файл Использовать указанный файл коллекции,
+ вместо стандартного
+-showUrl ссылка Отобразить документ по ссылке.
+-enableRemoteControl Включение удалённого управления Assistant.
+-show виджет Отображение указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-activate виджет Включение указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-hide виджет Скрытие указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-register файлСправки Регистрация указанного файла справки (.qch)
+ в данном файле коллекции.
+-unregister файлСправки Отмена регистрации указанного файла
+ справки (.qch) в данном файле коллекции.
+-setCurrentFilter фильтр Активация указанного фильтра.
+-remove-search-index Удаление индекса полнотекстового поиска.
+-rebuild-search-index Пересоздание индекса полнотекстового поиска
+ (потенциально медленно).
+-quiet Не отображать сообщения об ошибках и состояниях.
+-help Показать эту справку.
+</translation>
+ </message>
+ <message>
<source>Missing collection file.</source>
<translation>Отсутствует файл коллекции справки.</translation>
</message>
@@ -377,6 +442,56 @@ Reason:
</message>
</context>
<context>
+ <name>ConversionWizard</name>
+ <message>
+ <source>Help Conversion Wizard</source>
+ <translation>Мастер преобразования справки</translation>
+ </message>
+ <message>
+ <source>Converting %1...</source>
+ <translation>Преобразование %1...</translation>
+ </message>
+ <message>
+ <source>Writing help collection file...</source>
+ <translation>Запись файла коллекции справки...</translation>
+ </message>
+ <message>
+ <source>Done.</source>
+ <translation>Готово.</translation>
+ </message>
+</context>
+<context>
+ <name>FilesPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Files:</source>
+ <translation>Файлы:</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Remove All</source>
+ <translation>Удалить всё</translation>
+ </message>
+ <message>
+ <source>Unreferenced Files</source>
+ <translation>Невостребованные файлы</translation>
+ </message>
+ <message>
+ <source>Remove files which are neither referenced by a keyword nor by the TOC.</source>
+ <translation>Удаление файлов, на которые нет ссылок ни по ключевым словам, ни в содержании.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; When removing images or stylesheets, be aware that those files are not directly referenced by the .adp or .dcf file.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;&lt;b&gt;Внимание:&lt;/b&gt; при удалении изображений или таблиц стилей следует убедиться, что на эти файлы напрямую не ссылается файл .adp или .dcf.&lt;/p&gt;</translation>
+ </message>
+</context>
+<context>
<name>FilterNameDialogClass</name>
<message>
<source>Add Filter Name</source>
@@ -388,6 +503,66 @@ Reason:
</message>
</context>
<context>
+ <name>FilterPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Filter attributes for current documentation (comma separated list):</source>
+ <translation>Атрибуты фильтра для текущей документации (список, разделённый запятыми):</translation>
+ </message>
+ <message>
+ <source>Custom Filters</source>
+ <translation>Пользовательские фильтры</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Добавить</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Filter Settings</source>
+ <translation>Настройки фильтра</translation>
+ </message>
+ <message>
+ <source>Specify the filter attributes for the documentation. If filter attributes are used, also define a custom filter for it. Both the filter attributes and the custom filters are optional.</source>
+ <translation>Укажите атрибуты фильтра для документации. Если атрибуты фильтра используются, также укажите пользовательский фильтр для них. Атрибуты и пользовательский фильтр необязательны.</translation>
+ </message>
+ <message>
+ <source>Filter Name</source>
+ <translation>Название фильтра</translation>
+ </message>
+ <message>
+ <source>Filter Attributes</source>
+ <translation>Атрибуты фильтра</translation>
+ </message>
+ <message>
+ <source>The custom filter &apos;%1&apos; is defined multiple times.</source>
+ <translation>Пользовательский фильтр &quot;%1&quot; определён несколько раз.</translation>
+ </message>
+ <message>
+ <source>The attributes for custom filter &apos;%1&apos; are defined multiple times.</source>
+ <translation>Атрибуты для пользовательского фильтра &quot;%1&quot; определены несколько раз.</translation>
+ </message>
+ <message>
+ <source>unfiltered</source>
+ <comment>list of available documentation</comment>
+ <translation>вся документация</translation>
+ </message>
+</context>
+<context>
<name>FindWidget</name>
<message>
<source>Previous</source>
@@ -407,6 +582,17 @@ Reason:
</message>
</context>
<context>
+ <name>FinishPage</name>
+ <message>
+ <source>Converting File</source>
+ <translation>Преобразование файла</translation>
+ </message>
+ <message>
+ <source>Creating the new Qt help files from the old ADP file.</source>
+ <translation>Создание файлов справки Qt из старых файлов ADP.</translation>
+ </message>
+</context>
+<context>
<name>FontPanel</name>
<message>
<source>Font</source>
@@ -430,6 +616,59 @@ Reason:
</message>
</context>
<context>
+ <name>GeneralPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Namespace:</source>
+ <translation>Пространство имён:</translation>
+ </message>
+ <message>
+ <source>Virtual Folder:</source>
+ <translation>Виртуальный каталог:</translation>
+ </message>
+ <message>
+ <source>General Settings</source>
+ <translation>Основные настройки</translation>
+ </message>
+ <message>
+ <source>Specify the namespace and the virtual folder for the documentation.</source>
+ <translation>Укажите пространство имён и виртуальный каталог для документации.</translation>
+ </message>
+ <message>
+ <source>Namespace Error</source>
+ <translation>Ошибка пространства имён</translation>
+ </message>
+ <message>
+ <source>The namespace contains some invalid characters.</source>
+ <translation>Пространство имён содержит недопустимые символы.</translation>
+ </message>
+ <message>
+ <source>Virtual Folder Error</source>
+ <translation>Ошибка виртуального каталога</translation>
+ </message>
+ <message>
+ <source>The virtual folder contains some invalid characters.</source>
+ <translation>Виртуальный каталог содержит недопустимые символы.</translation>
+ </message>
+</context>
+<context>
+ <name>HelpEngineWrapper</name>
+ <message>
+ <source>Unfiltered</source>
+ <translation>Вся документация</translation>
+ </message>
+</context>
+<context>
+ <name>HelpGenerator</name>
+ <message>
+ <source>Warning: %1</source>
+ <translation>Предупреждение: %1</translation>
+ </message>
+</context>
+<context>
<name>HelpViewer</name>
<message>
<source>&lt;title&gt;about:blank&lt;/title&gt;</source>
@@ -453,6 +692,40 @@ Reason:
</message>
</context>
<context>
+ <name>HelpWindow</name>
+ <message>
+ <source>&lt;center&gt;&lt;b&gt;Wizard Assistant&lt;/b&gt;&lt;/center&gt;</source>
+ <translation>&lt;center&gt;&lt;b&gt;Помощь по мастеру преобразования справки&lt;/b&gt;&lt;/center&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>IdentifierPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Create identifiers</source>
+ <translation>Создавать идентификаторы</translation>
+ </message>
+ <message>
+ <source>Global prefix:</source>
+ <translation>Глобальный префикс:</translation>
+ </message>
+ <message>
+ <source>Inherit prefix from file names</source>
+ <translation>Наследовать префикс из имён файлов</translation>
+ </message>
+ <message>
+ <source>Identifiers</source>
+ <translation>Идентификаторы</translation>
+ </message>
+ <message>
+ <source>This page allows you to create identifiers from the keywords found in the .adp or .dcf file.</source>
+ <translation>Данная страница позволяет создавать идентификаторы из ключевых слов найденных в файле .adp или .dcf.</translation>
+ </message>
+</context>
+<context>
<name>IndexWindow</name>
<message>
<source>&amp;Look for:</source>
@@ -468,6 +741,53 @@ Reason:
</message>
</context>
<context>
+ <name>InputPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>File name:</source>
+ <translation>Имя файла:</translation>
+ </message>
+ <message>
+ <source>...</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Input File</source>
+ <translation>Исходный файл</translation>
+ </message>
+ <message>
+ <source>Specify the .adp or .dcf file you want to convert to the new Qt help project format and/or collection format.</source>
+ <translation>Укажите файл .adp или .dcf, который необходимо преобразовать в формат нового проекта справки Qt или коллекции.</translation>
+ </message>
+ <message>
+ <source>Open file</source>
+ <translation>Открыть файл</translation>
+ </message>
+ <message>
+ <source>Qt Help Files (*.adp *.dcf)</source>
+ <translation>Файлы справки Qt (*.adp *.dcf)</translation>
+ </message>
+ <message>
+ <source>File Open Error</source>
+ <translation>Ошибка открытия файла</translation>
+ </message>
+ <message>
+ <source>The specified file could not be opened!</source>
+ <translation>Не удалось открыть указанный файл!</translation>
+ </message>
+ <message>
+ <source>File Parsing Error</source>
+ <translation>Ошибка обработки файла</translation>
+ </message>
+ <message>
+ <source>Parsing error in line %1!</source>
+ <translation>Возникла ошибка обработки на строке %1!</translation>
+ </message>
+</context>
+<context>
<name>InstallDialog</name>
<message>
<source>Install Documentation</source>
@@ -715,6 +1035,10 @@ Reason:
<translation>&amp;Закладки</translation>
</message>
<message>
+ <source>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</source>
+ <translation>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Версия %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</translation>
+ </message>
+ <message>
<source>Could not register file &apos;%1&apos;: %2</source>
<translation>Не удалось зарегистрировать файл &apos;%1&apos;: %2</translation>
</message>
@@ -776,7 +1100,93 @@ Reason:
</message>
<message>
<source>Updating search index</source>
- <translation>Обновление поискового индекса</translation>
+ <translation>Обновление индекса полнотекстового поиска</translation>
+ </message>
+</context>
+<context>
+ <name>OutputPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Project file name:</source>
+ <translation>Имя файла проекта:</translation>
+ </message>
+ <message>
+ <source>Collection file name:</source>
+ <translation>Имя файла коллекции:</translation>
+ </message>
+ <message>
+ <source>Output File Names</source>
+ <translation>Имена выходных файлов</translation>
+ </message>
+ <message>
+ <source>Specify the file names for the output files.</source>
+ <translation>Укажите имена выходных файлов.</translation>
+ </message>
+ <message>
+ <source>Convert...</source>
+ <translation>Преобразовать...</translation>
+ </message>
+ <message>
+ <source>Qt Help Project File</source>
+ <translation>Файл проекта справки Qt</translation>
+ </message>
+ <message>
+ <source>Qt Help Collection Project File</source>
+ <translation>Файл проекта коллекции справки Qt</translation>
+ </message>
+ <message>
+ <source>The specified file %1 already exist.
+
+Do you want to remove it?</source>
+ <translation>Файл %1 уже существует.
+
+Желаете удалить его?</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>PathPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>File filters:</source>
+ <translation>Фильтры файлов:</translation>
+ </message>
+ <message>
+ <source>Documentation source file paths:</source>
+ <translation>Пути к исходным файлам документации:</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Добавить</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Source File Paths</source>
+ <translation>Пути к исходным файлам</translation>
+ </message>
+ <message>
+ <source>Specify the paths where the sources files are located. By default, all files in those directories matched by the file filter will be included.</source>
+ <translation>Укажите пути, где расположены исходные файлы. По умолчанию, будут включены все файлы в каталогах, соответствующие фильтру файлов.</translation>
+ </message>
+ <message>
+ <source>Source File Path</source>
+ <translation>Путь к исходному файлу</translation>
</message>
</context>
<context>
@@ -914,6 +1324,165 @@ Reason:
</message>
</context>
<context>
+ <name>QCollectionGenerator</name>
+ <message>
+ <source>Unknown token at line %1.</source>
+ <translation>Неизвестный токен в строке %1.</translation>
+ </message>
+ <message>
+ <source>Unknown token at line %1. Expected &quot;QtHelpCollectionProject&quot;.</source>
+ <translation>Неизвестный токен в строке %1. Ожидался &quot;QtHelpCollectionProject&quot;.</translation>
+ </message>
+ <message>
+ <source>Missing end tags.</source>
+ <translation>Отсутствуют завершающие теги.</translation>
+ </message>
+ <message>
+ <source>Missing input or output file for help file generation.</source>
+ <translation>Отсутствует входной или выходной файл для создания файла справки.</translation>
+ </message>
+ <message>
+ <source>Missing output file name.</source>
+ <translation>Отсутствует имя выходного файла.</translation>
+ </message>
+ <message>
+ <source>Qt Collection Generator version 1.0 (Qt %1)
+</source>
+ <translation>Генератор коллекций Qt версии 1.0 (Qt %1)
+</translation>
+ </message>
+ <message>
+ <source>Missing collection config file.</source>
+ <translation>Отсутствует файл настроек коллекции.</translation>
+ </message>
+ <message>
+ <source>
+Usage:
+
+qcollectiongenerator &lt;collection-config-file&gt; [options]
+
+ -o &lt;collection-file&gt; Generates a collection file
+ called &lt;collection-file&gt;. If
+ this option is not specified
+ a default name will be used.
+ -v Displays the version of
+ qcollectiongenerator.
+
+</source>
+ <translation>
+Использование:
+
+qcollectiongenerator &lt;файл-конфигурации-коллекции&gt; [ОПЦИИ]
+
+ -o &lt;файл-коллекции&gt; Создание файла коллекции с именем
+ &lt;файл-коллекции&gt;. Если эта опция не указана,
+ будет использовано имя по умолчанию.
+ -v Показать версию qcollectiongenerator.
+
+</translation>
+ </message>
+ <message>
+ <source>Could not open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Reading collection config file...
+</source>
+ <translation>Чтение файла конфигурации коллекции...
+</translation>
+ </message>
+ <message>
+ <source>Collection config file error: %1
+</source>
+ <translation>Ошибка файла конфигурации коллекции: %1
+</translation>
+ </message>
+ <message>
+ <source>Generating help for %1...
+</source>
+ <translation>Создание справки для %1...</translation>
+ </message>
+ <message>
+ <source>Creating collection file...
+</source>
+ <translation>Создание файла коллекции...</translation>
+ </message>
+ <message>
+ <source>The file %1 cannot be overwritten.
+</source>
+ <translation>Файл %1 не может быть перезаписан.</translation>
+ </message>
+ <message>
+ <source>Cannot open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Cannot open referenced image file %1.
+</source>
+ <translation>Не удалось открыть необходимый файл изображения %1.
+</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpGenerator</name>
+ <message>
+ <source>Missing output file name.</source>
+ <translation>Отсутствует имя выходного файла.</translation>
+ </message>
+ <message>
+ <source>Qt Help Generator version 1.0 (Qt %1)
+</source>
+ <translation>Генератор справки Qt, версия 1.0 (Qt %1)
+</translation>
+ </message>
+ <message>
+ <source>Missing Qt help project file.</source>
+ <translation>Отсутствует файл проекта справки Qt.</translation>
+ </message>
+ <message>
+ <source>
+Usage:
+
+qhelpgenerator &lt;help-project-file&gt; [options]
+
+ -o &lt;compressed-file&gt; Generates a Qt compressed help
+ file called &lt;compressed-file&gt;.
+ If this option is not specified
+ a default name will be used.
+ -c Checks whether all links in HTML files
+ point to files in this help project.
+ -v Displays the version of
+ qhelpgenerator.
+
+</source>
+ <translation>
+Использование:
+
+qhelpgenerator &lt;файл-проекта-справки&gt; [ОПЦИИ]
+
+ -o &lt;сжатый-файл&gt; Создание сжатого файла справки Qt под именем
+ &lt;сжатый-файл&gt;. Если эта опция не указана,
+ будет использоваться имя по умолчанию.
+ -c Проверка на то, чтобы все ссылки в файлах
+ HTML указывали на файлы в этом проекте.
+ -v Отображение версии qhelpgenerator.
+
+</translation>
+ </message>
+ <message>
+ <source>Could not open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Could not create output directory: %1
+</source>
+ <translation>Не удалось создать каталог: %1</translation>
+ </message>
+</context>
+<context>
<name>RemoteControl</name>
<message>
<source>Debugging Remote Control</source>
diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts
index 89977b1057..d6ab18eb8d 100644
--- a/translations/designer_ru.ts
+++ b/translations/designer_ru.ts
@@ -25,6 +25,49 @@
</message>
</context>
<context>
+ <name>AbstractItemEditor</name>
+ <message>
+ <source>Selectable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Editable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>DragEnabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>DropEnabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>UserCheckable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Tristate</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Unchecked</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>PartiallyChecked</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Checked</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
<name>AddLinkDialog</name>
<message>
<source>Insert Link</source>
@@ -304,7 +347,7 @@
</message>
<message>
<source>Change Z-order of &apos;%1&apos;</source>
- <translation type="unfinished">Изменить порядок удалённости &apos;%1&apos;</translation>
+ <translation>Изменить порядок удалённости &apos;%1&apos;</translation>
</message>
<message>
<source>Raise &apos;%1&apos;</source>
@@ -324,11 +367,11 @@
</message>
<message>
<source>Promote to custom widget</source>
- <translation type="unfinished">Преобразовать в пользовательский виджет</translation>
+ <translation>Преобразовать в пользовательский виджет</translation>
</message>
<message>
<source>Demote from custom widget</source>
- <translation type="unfinished">Преобразовать из пользовательского виджета</translation>
+ <translation>Преобразовать из пользовательского виджета</translation>
</message>
<message>
<source>Lay out using grid</source>
@@ -348,7 +391,7 @@
</message>
<message>
<source>Simplify Grid Layout</source>
- <translation type="unfinished">Упрощённая компоновка по сетке</translation>
+ <translation>Упрощённая компоновка по сетке</translation>
</message>
<message>
<source>Move Page</source>
@@ -396,7 +439,7 @@
</message>
<message>
<source>Add Dock Window</source>
- <translation type="unfinished">Добавить прикрепляемое окно</translation>
+ <translation>Добавить прикрепляемое окно</translation>
</message>
<message>
<source>Adjust Size of &apos;%1&apos;</source>
@@ -404,11 +447,11 @@
</message>
<message>
<source>Change Form Layout Item Geometry</source>
- <translation type="unfinished">Изменить геометрию элементов компоновки столбцами</translation>
+ <translation>Изменить геометрию элемента компоновки столбцами</translation>
</message>
<message>
<source>Change Layout Item Geometry</source>
- <translation type="unfinished">Изменить геометрию элементов компоновки</translation>
+ <translation>Изменить геометрию элемента компоновки</translation>
</message>
<message>
<source>Delete Subwindow</source>
@@ -653,7 +696,7 @@
</message>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>Unable to launch %1.</source>
@@ -777,7 +820,7 @@
<message>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
<message>
<source>Device Profiles</source>
@@ -852,6 +895,7 @@ Parsing grid layout minimum size values</extracomment>
<name>FormEditorOptionsPage</name>
<message>
<source>%1 %</source>
+ <extracomment>Zoom percentage</extracomment>
<translation>%1 %</translation>
</message>
<message>
@@ -876,7 +920,7 @@ Parsing grid layout minimum size values</extracomment>
<name>FormLayoutRowDialog</name>
<message>
<source>Add Form Layout Row</source>
- <translation type="unfinished">Добавление строки компоновщика формы</translation>
+ <translation>Добавление строки компоновщика столбцами (QFormLayout)</translation>
</message>
<message>
<source>&amp;Label text:</source>
@@ -962,7 +1006,7 @@ Parsing grid layout minimum size values</extracomment>
</message>
<message>
<source>Embedded Design</source>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
</context>
<context>
@@ -1131,7 +1175,7 @@ Parsing grid layout minimum size values</extracomment>
<message>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
- <translation>Не используется</translation>
+ <translation>Не используются</translation>
</message>
</context>
<context>
@@ -1205,11 +1249,11 @@ This indicates an inconsistency in the ui-file.</source>
<name>QAxWidgetTaskMenu</name>
<message>
<source>Set Control</source>
- <translation>Установить элемент управления</translation>
+ <translation>Задать элемент управления</translation>
</message>
<message>
<source>Reset Control</source>
- <translation type="unfinished">Удалить элемент управления</translation>
+ <translation>Сбросить элемент управления</translation>
</message>
<message>
<source>Licensed Control</source>
@@ -1224,7 +1268,7 @@ This indicates an inconsistency in the ui-file.</source>
<name>QCoreApplication</name>
<message>
<source>%1 is not a promoted class.</source>
- <translation type="unfinished">%1 не является преобразованным классом.</translation>
+ <translation>%1 не является преобразованным классом.</translation>
</message>
<message>
<source>The base class %1 is invalid.</source>
@@ -1236,7 +1280,7 @@ This indicates an inconsistency in the ui-file.</source>
</message>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>The class %1 cannot be removed</source>
@@ -1567,11 +1611,11 @@ Would you like to retry?</source>
<name>QDesignerAxWidget</name>
<message>
<source>Reset control</source>
- <translation type="unfinished">Сбросить элемент управления</translation>
+ <translation>Сбросить элемент управления</translation>
</message>
<message>
<source>Set control</source>
- <translation>Установить элемент управления</translation>
+ <translation>Задать элемент управления</translation>
</message>
<message>
<source>Control loaded</source>
@@ -1579,7 +1623,7 @@ Would you like to retry?</source>
</message>
<message>
<source>A COM exception occurred when executing a meta call of type %1, index %2 of &quot;%3&quot;.</source>
- <translation type="unfinished">Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 &quot;%3&quot;.</translation>
+ <translation>Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 в &quot;%3&quot;.</translation>
</message>
</context>
<context>
@@ -1838,7 +1882,7 @@ Container pages should only be added by specifying them in XML returned by the d
</message>
<message>
<source>Backup Information</source>
- <translation type="unfinished">Информация о резервированых копиях</translation>
+ <translation>Информация о резервных копиях</translation>
</message>
<message>
<source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source>
@@ -2232,27 +2276,27 @@ Empty class name passed to widget factory method</extracomment>
</message>
<message>
<source>Linear</source>
- <translation type="unfinished">Линейный</translation>
+ <translation>Линейный</translation>
</message>
<message>
<source>Radial</source>
- <translation type="unfinished">Радиальный</translation>
+ <translation>Радиальный</translation>
</message>
<message>
<source>Conical</source>
- <translation type="unfinished">Конический</translation>
+ <translation>Конический</translation>
</message>
<message>
<source>Pad</source>
- <translation type="unfinished">Равномерная</translation>
+ <translation>Равномерная</translation>
</message>
<message>
<source>Repeat</source>
- <translation type="unfinished">Цикличная</translation>
+ <translation>Цикличная</translation>
</message>
<message>
<source>Reflect</source>
- <translation type="unfinished">Зеркальная</translation>
+ <translation>Зеркальная</translation>
</message>
<message>
<source>Form</source>
@@ -2514,6 +2558,10 @@ Empty class name passed to widget factory method</extracomment>
<context>
<name>QtLocalePropertyManager</name>
<message>
+ <source>&lt;Invalid&gt;</source>
+ <translation>&lt;Некорректное значение&gt;</translation>
+ </message>
+ <message>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
@@ -2651,7 +2699,7 @@ Do you want to replace it?</source>
</message>
<message>
<source>newPrefix</source>
- <translation type="unfinished">newPrefix</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<source>&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; The file&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;is outside of the current resource file&apos;s parent directory.&lt;/p&gt;</source>
@@ -2883,7 +2931,7 @@ to
<name>QtSizePolicyPropertyManager</name>
<message>
<source>&lt;Invalid&gt;</source>
- <translation>&lt;Неверный&gt;</translation>
+ <translation>&lt;Некорректное значение&gt;</translation>
</message>
<message>
<source>[%1, %2, %3, %4]</source>
@@ -3174,23 +3222,23 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Dock views</source>
- <translation type="unfinished">Прикрепляемые панели</translation>
+ <translation>Прикрепляемые панели</translation>
</message>
<message>
<source>File</source>
- <translation type="unfinished">Файл</translation>
+ <translation>Файл</translation>
</message>
<message>
<source>Edit</source>
- <translation type="unfinished">Правка</translation>
+ <translation>Правка</translation>
</message>
<message>
<source>Tools</source>
- <translation type="unfinished">Инструменты</translation>
+ <translation>Инструменты</translation>
</message>
<message>
<source>Form</source>
- <translation type="unfinished">Форма</translation>
+ <translation>Форма</translation>
</message>
<message>
<source>Toolbars</source>
@@ -3220,11 +3268,11 @@ Do you want overwrite the template?</source>
<name>VideoPlayerTaskMenu</name>
<message>
<source>Available Mime Types</source>
- <translation type="unfinished">Доступные типы данных</translation>
+ <translation>Доступные типы данных</translation>
</message>
<message>
<source>Display supported mime types...</source>
- <translation type="unfinished">Показывать поддерживаемые типы данных...</translation>
+ <translation>Показать поддерживаемые типы данных...</translation>
</message>
<message>
<source>Load...</source>
@@ -3306,11 +3354,11 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Icon View</source>
- <translation type="unfinished">Значки</translation>
+ <translation>Значки</translation>
</message>
<message>
<source>Detailed View</source>
- <translation type="unfinished">Подробно</translation>
+ <translation>Подробно</translation>
</message>
<message>
<source>New action</source>
@@ -3902,7 +3950,7 @@ Do you want overwrite the template?</source>
<name>qdesigner_internal::FormLayoutMenu</name>
<message>
<source>Add form layout row...</source>
- <translation>Добавить строку компоновщика формы...</translation>
+ <translation>Добавить строку компоновки в 2 столбца...</translation>
</message>
</context>
<context>
@@ -3953,7 +4001,7 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
- <translation type="unfinished">Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов.</translation>
+ <translation>Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов.</translation>
</message>
<message>
<source>Break the layout of the container you want to paste into, select this container and then paste again.</source>
@@ -4083,11 +4131,11 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Lay Out in a &amp;Form Layout</source>
- <translation>Скомпоновать в &amp;две колонки</translation>
+ <translation>Скомпоновать в &amp;два столбца</translation>
</message>
<message>
<source>Lays out the selected widgets in a form layout</source>
- <translation>Компонует выделенные виджеты в две колонки (QFormLayout)</translation>
+ <translation>Компонует выделенные виджеты в два столбца (QFormLayout)</translation>
</message>
<message>
<source>Lay Out in a &amp;Grid</source>
@@ -4548,7 +4596,7 @@ Please select another name.</source>
</message>
<message>
<source>Embedded Design</source>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
<message>
<source>Device:</source>
@@ -4567,7 +4615,7 @@ Please select another name.</source>
</message>
<message>
<source>New Promoted Class</source>
- <translation type="unfinished">Новый преобразованный класс</translation>
+ <translation>Новый преобразованный класс</translation>
</message>
<message>
<source>Base class name:</source>
@@ -4575,7 +4623,7 @@ Please select another name.</source>
</message>
<message>
<source>Promoted class name:</source>
- <translation type="unfinished">Имя преобразованного класса:</translation>
+ <translation>Имя преобразованного класса:</translation>
</message>
<message>
<source>Header file:</source>
@@ -4644,7 +4692,7 @@ Please select another name.</source>
</message>
<message>
<source>Compute Details</source>
- <translation type="unfinished">Расчитывать детали</translation>
+ <translation type="unfinished">Рассчитывать детали</translation>
</message>
<message>
<source>Quick</source>
@@ -4671,7 +4719,7 @@ Please select another name.</source>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
<source>Change Palette</source>
- <translation type="unfinished">Изменить палитру</translation>
+ <translation>Изменить палитру</translation>
</message>
</context>
<context>
@@ -4742,6 +4790,14 @@ Please select another name.</source>
<translation>Поиск вновь установленных модулей пользовательских виджетов.</translation>
</message>
<message>
+ <source>Loaded Plugins</source>
+ <translation>Загруженные модули</translation>
+ </message>
+ <message>
+ <source>Failed Plugins</source>
+ <translation>Незагруженные модули</translation>
+ </message>
+ <message>
<source>Qt Designer couldn&apos;t find any plugins</source>
<translation>Qt Designer не может найти ни одного модуля</translation>
</message>
@@ -4898,7 +4954,7 @@ ate the goose who was loose.</source>
</message>
<message>
<source>Global include</source>
- <translation>Глобальное включение</translation>
+ <translation type="unfinished">Глобальное включение</translation>
</message>
<message>
<source>Usage</source>
@@ -4909,11 +4965,11 @@ ate the goose who was loose.</source>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
<source>Promoted widgets...</source>
- <translation type="unfinished">Преобразованные виджеты...</translation>
+ <translation>Преобразованные виджеты...</translation>
</message>
<message>
<source>Promote to ...</source>
- <translation type="unfinished">Преобразовать в ...</translation>
+ <translation>Преобразовать в ...</translation>
</message>
<message>
<source>Change signals/slots...</source>
@@ -4921,11 +4977,11 @@ ate the goose who was loose.</source>
</message>
<message>
<source>Promote to</source>
- <translation type="unfinished">Преобразовать в</translation>
+ <translation>Преобразовать в</translation>
</message>
<message>
<source>Demote to %1</source>
- <translation type="unfinished">Преобразовать в %1</translation>
+ <translation>Преобразовать в %1</translation>
</message>
</context>
<context>
@@ -4988,15 +5044,15 @@ Class: %2</source>
<name>qdesigner_internal::QDesignerPromotionDialog</name>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>Promoted Classes</source>
- <translation type="unfinished">Преобразованные классы</translation>
+ <translation>Преобразованные классы</translation>
</message>
<message>
<source>Promote</source>
- <translation type="unfinished">Преобразовать</translation>
+ <translation>Преобразовать</translation>
</message>
<message>
<source>Change signals/slots...</source>
@@ -5227,7 +5283,7 @@ Class: %2</source>
</message>
<message>
<source>Source</source>
- <translation type="unfinished">Исходник</translation>
+ <translation>Исходник</translation>
</message>
<message>
<source>&amp;OK</source>
@@ -5600,7 +5656,7 @@ Class: %2</source>
</message>
<message>
<source>Edit Tree Widget</source>
- <translation type="unfinished">Изменение виджета Дерево</translation>
+ <translation>Изменение виджета Дерево</translation>
</message>
<message>
<source>&amp;Items</source>
@@ -5681,7 +5737,7 @@ Class: %2</source>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
<source>Scratchpad</source>
- <translation type="unfinished">Блокнот</translation>
+ <translation>Блокнот</translation>
</message>
<message>
<source>Custom Widgets</source>
@@ -5742,7 +5798,7 @@ Class: %2</source>
</message>
<message>
<source>The current page of the container &apos;%1&apos; (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget.</source>
- <translation type="unfinished">При создании компоновщика не удалось определить текущую страницу контейнера &apos;%1&apos; (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для контейнерного виджета.</translation>
+ <translation>При создании компоновщика не удалось определить текущую страницу контейнера &apos;%1&apos; (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для виджета контейнерного типа.</translation>
</message>
<message>
<source>Attempt to add a layout to a widget &apos;%1&apos; (%2) which already has an unmanaged layout of type %3.
diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts
index 2d06f25758..3b448a0351 100644
--- a/translations/linguist_ru.ts
+++ b/translations/linguist_ru.ts
@@ -258,6 +258,191 @@ Will assume a single universal form.</source>
</message>
</context>
<context>
+ <name>LConvert</name>
+ <message>
+ <source>
+Usage:
+ lconvert [options] &lt;infile&gt; [&lt;infile&gt;...]
+
+lconvert is part of Qt&apos;s Linguist tool chain. It can be used as a
+stand-alone tool to convert and filter translation data files.
+The following file formats are supported:
+
+%1
+If multiple input files are specified, they are merged with
+translations from later files taking precedence.
+
+Options:
+ -h
+ --help Display this information and exit.
+
+ -i &lt;infile&gt;
+ --input-file &lt;infile&gt;
+ Specify input file. Use if &lt;infile&gt; might start with a dash.
+ This option can be used several times to merge inputs.
+ May be &apos;-&apos; (standard input) for use in a pipe.
+
+ -o &lt;outfile&gt;
+ --output-file &lt;outfile&gt;
+ Specify output file. Default is &apos;-&apos; (standard output).
+
+ -if &lt;informat&gt;
+ --input-format &lt;format&gt;
+ Specify input format for subsequent &lt;infile&gt;s.
+ The format is auto-detected from the file name and defaults to &apos;ts&apos;.
+
+ -of &lt;outformat&gt;
+ --output-format &lt;outformat&gt;
+ Specify output format. See -if.
+
+ --input-codec &lt;codec&gt;
+ Specify encoding for QM and PO input files. Default is &apos;Latin1&apos;
+ for QM and &apos;UTF-8&apos; for PO files. UTF-8 is always tried as well for
+ QM, corresponding to the possible use of the trUtf8() function.
+
+ --output-codec &lt;codec&gt;
+ Specify encoding for PO output files. Default is &apos;UTF-8&apos;.
+
+ --drop-tags &lt;regexp&gt;
+ Drop named extra tags when writing TS or XLIFF files.
+ May be specified repeatedly.
+
+ --drop-translations
+ Drop existing translations and reset the status to &apos;unfinished&apos;.
+ Note: this implies --no-obsolete.
+
+ --source-language &lt;language&gt;[_&lt;region&gt;]
+ Specify/override the language of the source strings. Defaults to
+ POSIX if not specified and the file does not name it yet.
+
+ --target-language &lt;language&gt;[_&lt;region&gt;]
+ Specify/override the language of the translation.
+ The target language is guessed from the file name if this option
+ is not specified and the file contents name no language yet.
+
+ --no-obsolete
+ Drop obsolete messages.
+
+ --no-finished
+ Drop finished messages.
+
+ --sort-contexts
+ Sort contexts in output TS file alphabetically.
+
+ --locations {absolute|relative|none}
+ Override how source code references are saved in TS files.
+ Default is absolute.
+
+ --no-ui-lines
+ Drop line numbers from references to UI files.
+
+ --verbose
+ be a bit more verbose
+
+Long options can be specified with only one leading dash, too.
+
+Return value:
+ 0 on success
+ 1 on command line parse failures
+ 2 on read failures
+ 3 on write failures
+</source>
+ <translation>
+Использование:
+ lconvert [параметры] &lt;входной файл&gt; [&lt;входной файл&gt;...]
+
+lconvert - это один из инструментов Qt Linguist. Он может быть использован как
+для преобразования файлов переводов, так и для обработки файлов переводов.
+
+Поддерживаются файлы следующих форматов:
+
+%1
+Если задано несколько входных файлов, то они будут объединены, причем, каждый
+последующий файл имеет приоритет над предыдущим.
+
+Параметры:
+ -h
+ --help Отображение данной справки и выход.
+
+ -i &lt;файл&gt;
+ --input-file &lt;файл&gt;
+ Указание входного файл. Следует использовать, если &lt;входной файл&gt;
+ начинается с дефиса. Этот параметр может быть использован несколько
+ раз для объединения файлов.
+ Допустимо значение &quot;-&quot; (стандартный ввод) для использования каналов.
+
+ -o &lt;файл&gt;
+ --output-file &lt;файл&gt;
+ Указание выходного файла.
+ По умолчанию значение &quot;-&quot; (стандартный вывод).
+
+ -if &lt;формат&gt;
+ --input-format &lt;формат&gt;
+ Указание формата для последующих входных файлов.
+ Формат определяется автоматически из имени файла.
+ По умолчанию предполагается &quot;ts&quot;.
+
+ -of &lt;формат&gt;
+ --output-format &lt;формат&gt;
+ Указание формата выходного файла. См. -if.
+
+ --input-codec &lt;кодировка&gt;
+ Указание кодировки входных файлов QM и PO. По умолчанию,
+ используется &quot;Latin1&quot; для QM и &quot;UTF-8&quot; для PO файлов. Так же UTF-8
+ всегда применяется для QM, где возможно использование
+ функции trUtf8().
+
+ --output-codec &lt;кодировка&gt;
+ Указание кодировки выходных файлов формата PO. По умолчанию &quot;UTF-8&quot;.
+
+ --drop-tags &lt;regexp&gt;
+ Опустить дополнительные теги, соответствующие регулярному выражению
+ regexp, при записи файлов TS или XLIFF.
+ Можно указывать несколько раз.
+
+ --drop-translations
+ Опустить существующие переводы и сбросить их статус в &quot;незавершено&quot;.
+ Включает действие --no-obsolete.
+
+ --source-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/изменение языка исходных строк. По умолчанию POSIX, если не
+ указано и файл не содержит язык исходных строк в своём имени.
+
+ --target-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/изменение языка переводов.
+ Этот язык определяется из имени файла, если этот параметр не задан
+ или язык не указан внутри файла.
+
+ --no-obsolete
+ Опустить устаревшие переводы.
+
+ --no-finished
+ Опустить завершённые переводы.
+
+ --sort-contexts
+ Упорядочить по алфавиту контекст выходного TS файла.
+
+ --locations {absolute|relative|none}
+ Изменение метода сохранения ссылок на исходные тексты в TS файлах.
+ По умолчанию absolute.
+
+ --no-ui-lines
+ Опустить номера строк в ссылках на UI файлы.
+
+ --verbose
+ Выводить чуть больше информации.
+
+Длинные параметры также можно указывать и с одним дефисом.
+
+Возвращаемые результаты:
+ 0 в случае успеха
+ 1 в случае ошибки в командной строке
+ 2 при ошибке чтения
+ 3 при ошибки записи
+</translation>
+ </message>
+</context>
+<context>
<name>LRelease</name>
<message numerus="yes">
<source>Dropped %n message(s) which had no ID.</source>
@@ -291,6 +476,763 @@ Will assume a single universal form.</source>
<numerusform> Пропущено %n непереведённых исходных текстов</numerusform>
</translation>
</message>
+ <message>
+ <source>Usage:
+ lrelease [options] project-file
+ lrelease [options] ts-files [-qm qm-file]
+
+lrelease is part of Qt&apos;s Linguist tool chain. It can be used as a
+stand-alone tool to convert XML-based translations files in the TS
+format into the &apos;compiled&apos; QM format used by QTranslator objects.
+
+Options:
+ -help Display this information and exit
+ -idbased
+ Use IDs instead of source strings for message keying
+ -compress
+ Compress the QM files
+ -nounfinished
+ Do not include unfinished translations
+ -removeidentical
+ If the translated text is the same as
+ the source text, do not include the message
+ -markuntranslated &lt;prefix&gt;
+ If a message has no real translation, use the source text
+ prefixed with the given string instead
+ -silent
+ Do not explain what is being done
+ -version
+ Display the version of lrelease and exit
+</source>
+ <translation>Использование:
+ lrelease [параметры] &lt;файл-проекта&gt;
+ lrelease [параметры] &lt;ts-файлы&gt; [-qm &lt;qm-файлы&gt;]
+
+lrelease - это один из инструментов Qt Linguist. Он может быть использован для
+преобразования переводов, основанных на формате TS в &quot;скомпилированный&quot;
+формат QM, используемый объектами QTranslator.
+
+Параметры:
+ -help
+ Отобразить данную справку и выйти
+ -idbased
+ Использовать ID вместо исходных строк для индексирования сообщений
+ -compress
+ Сжать файл QM
+ -nounfinished
+ Не включать незавершённые переводы
+ -removeidentical
+ Не включать переводы, совпадающие с исходным текстом
+ -markuntranslated &lt;приставка&gt;
+ Если сообщение не имеет перевода, то использовать исходный текст
+ с указанной приставкой
+ -silent
+ Не отчитываться о производимых действиях
+ -version
+ Отобразить текущую версию lrelease и выйти
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: %1</source>
+ <translation>lrelease ошибка: %1</translation>
+ </message>
+ <message>
+ <source>Updating &apos;%1&apos;...
+</source>
+ <translation>Обновление &apos;%1&apos;...
+</translation>
+ </message>
+ <message>
+ <source>Removing translations equal to source text in &apos;%1&apos;...
+</source>
+ <translation>Удаление переводов для &apos;%1&apos;...
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot create &apos;%1&apos;: %2
+</source>
+ <translation>lrelease ошибка: не удалось создать &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot save &apos;%1&apos;: %2</source>
+ <translation>lrelease ошибка: не удалось сохранить &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <source>lrelease version %1
+</source>
+ <translation>lrelease версия %1
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot read project file &apos;%1&apos;.
+</source>
+ <translation>lrelease ошибка: не удалось прочитать файл проекта &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot process project file &apos;%1&apos;.
+</source>
+ <translation>lrelease ошибка: не удалось обработать файл проекта &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <source>lrelease warning: Met no &apos;TRANSLATIONS&apos; entry in project file &apos;%1&apos;
+</source>
+ <translation>lrelease ошибка: в файле проекта &apos;%1&apos; отсутствует запись &apos;TRANSLATIONS&apos;</translation>
+ </message>
+</context>
+<context>
+ <name>LUpdate</name>
+ <message>
+ <source>Parenthesis/bracket/brace mismatch between #if and #else branches; using #if branch
+</source>
+ <translation>Несовпадение скобок (круглых, квадратных или фигурных) между ветками #if и #else; используется ветка #if
+</translation>
+ </message>
+ <message>
+ <source>Parenthesis/brace mismatch between #if and #else branches; using #if branch
+</source>
+ <translation>Несовпадение скобок (круглых или фигурных) между ветками #if и #else; используется ветка #if
+</translation>
+ </message>
+ <message>
+ <source>Unterminated C++ comment
+</source>
+ <translation>Незавершённый комментарий C++
+</translation>
+ </message>
+ <message>
+ <source>Unterminated C++ string
+</source>
+ <translation>Незавершённая строка C++
+</translation>
+ </message>
+ <message>
+ <source>Excess closing brace in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Excess closing parenthesis in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Excess closing bracket in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>circular inclusion of %1
+</source>
+ <translation>цикличное включение %1
+</translation>
+ </message>
+ <message>
+ <source>Cannot open %1: %2
+</source>
+ <translation>Невозможно открыть %1: %2
+</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with tr() / QT_TR_NOOP(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с tr() / QT_TR_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>Qualifying with unknown namespace/class %1::%2
+</source>
+ <translation>Уточнение с неизвестным пространством имён/классом %1::%2
+</translation>
+ </message>
+ <message>
+ <source>tr() cannot be called without context
+</source>
+ <translation>tr() не может быть вызван без контекста
+</translation>
+ </message>
+ <message>
+ <source>Class &apos;%1&apos; lacks Q_OBJECT macro
+</source>
+ <translation>У класса &quot;%1&quot; отсутствует макрос Q_OBJECT
+</translation>
+ </message>
+ <message>
+ <source>It is not recommended to call tr() from within a constructor &apos;%1::%2&apos;
+</source>
+ <translation>Не рекомендуется вызывать tr() в теле конструктора &quot;%1::%2&quot;
+</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with translate() / QT_TRANSLATE_NOOP(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с translate() / QT_TRANSLATE_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>//= cannot be used with qtTrId() / QT_TRID_NOOP(). Ignoring
+</source>
+ <translation>//= не может быть использовано совместно с qtTrId() / QT_TRID_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>Unexpected character in meta string
+</source>
+ <translation>Неожиданный символ в мета-строке
+</translation>
+ </message>
+ <message>
+ <source>Unterminated meta string
+</source>
+ <translation>Незавершённая мета-строка
+</translation>
+ </message>
+ <message>
+ <source>Cannot invoke tr() like this
+</source>
+ <translation>Использование tr() в том виде, как здесь, не допускается
+</translation>
+ </message>
+ <message>
+ <source>Discarding unconsumed meta data
+</source>
+ <translation>Отбрасываются неиспользуемые мета-данные
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening brace in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening parenthesis in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening bracket in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Cannot open %1: %2</source>
+ <translation>Невозможно открыть %1: %2</translation>
+ </message>
+ <message>
+ <source>Unterminated Java comment.
+</source>
+ <translation>Незавершённый комментарий Java.
+</translation>
+ </message>
+ <message>
+ <source>Invalid Unicode value.
+</source>
+ <translation>Неверное значение Unicode.
+</translation>
+ </message>
+ <message>
+ <source>Unterminated string.
+</source>
+ <translation>Незавершённая строка.
+</translation>
+ </message>
+ <message>
+ <source>String used in translation can contain only literals concatenated with other literals, not expressions or numbers.
+</source>
+ <translation>Строка, используемая в переводе, может содержать только строковые литералы (возможно, соединённые с другими литералами), но не выражения или числа.
+</translation>
+ </message>
+ <message>
+ <source>&apos;class&apos; must be followed by a class name.
+</source>
+ <translation>После слова &quot;class&quot; должно идти имя класса.
+</translation>
+ </message>
+ <message>
+ <source>Excess closing brace.
+</source>
+ <translation>Лишняя закрывающая фигурная скобка.
+</translation>
+ </message>
+ <message>
+ <source>&apos;package&apos; must be followed by package name.
+</source>
+ <translation>После слова &quot;package&quot; должно идти имя пакета.
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening brace.
+</source>
+ <translation>Лишняя открывающая фигурная скобка.
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening parenthesis.
+</source>
+ <translation>Лишняя открывающая круглая скобка.
+</translation>
+ </message>
+ <message>
+ <source>Usage:
+ lupdate [options] [project-file]...
+ lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file
+
+lupdate is part of Qt&apos;s Linguist tool chain. It extracts translatable
+messages from Qt UI files, C++, Java and JavaScript/QtScript source code.
+Extracted messages are stored in textual translation source files (typically
+Qt TS XML). New and modified messages can be merged into existing TS files.
+
+Options:
+ -help Display this information and exit.
+ -no-obsolete
+ Drop all obsolete strings.
+ -extensions &lt;ext&gt;[,&lt;ext&gt;]...
+ Process files with the given extensions only.
+ The extension list must be separated with commas, not with whitespace.
+ Default: &apos;%1&apos;.
+ -pluralonly
+ Only include plural form messages.
+ -silent
+ Do not explain what is being done.
+ -no-sort
+ Do not sort contexts in TS files.
+ -no-recursive
+ Do not recursively scan the following directories.
+ -recursive
+ Recursively scan the following directories (default).
+ -I &lt;includepath&gt; or -I&lt;includepath&gt;
+ Additional location to look for include files.
+ May be specified multiple times.
+ -locations {absolute|relative|none}
+ Specify/override how source code references are saved in TS files.
+ Default is absolute.
+ -no-ui-lines
+ Do not record line numbers in references to UI files.
+ -disable-heuristic {sametext|similartext|number}
+ Disable the named merge heuristic. Can be specified multiple times.
+ -pro &lt;filename&gt;
+ Name of a .pro file. Useful for files with .pro file syntax but
+ different file suffix. Projects are recursed into and merged.
+ -source-language &lt;language&gt;[_&lt;region&gt;]
+ Specify the language of the source strings for new files.
+ Defaults to POSIX if not specified.
+ -target-language &lt;language&gt;[_&lt;region&gt;]
+ Specify the language of the translations for new files.
+ Guessed from the file name if not specified.
+ -ts &lt;ts-file&gt;...
+ Specify the output file(s). This will override the TRANSLATIONS
+ and nullify the CODECFORTR from possibly specified project files.
+ -codecfortr &lt;codec&gt;
+ Specify the codec assumed for tr() calls. Effective only with -ts.
+ -version
+ Display the version of lupdate and exit.
+ @lst-file
+ Read additional file names (one per line) from lst-file.
+</source>
+ <translation>Использование:
+ lupdate [параметры] [файл-проекта]...
+ lupdate [параметры] [исходный-файл|путь|@lst-файл]... -ts ts-файлы|@lst-файл
+
+lupdate - это один из инструментов Qt Linguist. Он извлекает переводимые строки
+из файлов Qt UI, исходных текстов C++, Java и JavaScript/QtScript. Эти строки
+сохраняются в текстовых исходных файлах перевода (обычно, Qt TS XML). Новые
+или изменённые сообщения могут быть добавлены в существующие TS файлы.
+
+Параметры:
+ -help Отобразить эту информацию и выйти.
+ -no-obsolete
+ Удалить все устаревшие строки.
+ -extensions &lt;ext&gt;[,&lt;ext&gt;]...
+ Обрабатывать файлы, имеющие только указанные расширения.
+ Список расширений должен быть разделён запятыми, а не пробелами.
+ По умолчанию:
+ &quot;%1&quot;.
+ -pluralonly
+ Включать только множественную форму сообщений.
+ -silent
+ Не показывать выполняемые действия.
+ -no-sort
+ Не упорядочивать контекст в TS файлах.
+ -no-recursive
+ Не сканировать каталоги рекурсивно.
+ -recursive
+ Сканировать каталоги рекурсивно (по умолчанию).
+ -I &lt;путь&gt; or -I&lt;путь&gt;
+ Дополнительное расположение подключаемых файлов.
+ Можно указать несколько раз.
+ -locations {absolute|relative|none}
+ Изменение метода сохранения ссылок на исходные тексты в TS файлах.
+ По умолчанию absolute.
+ -no-ui-lines
+ Не сохранять номера строк в ссылках на UI файлы.
+ -disable-heuristic {sametext|similartext|number}
+ Отключить указанный метод объединения:
+ sametext - тот же текст
+ similartext - похожий текст
+ number - числа
+ Может указываться несколько раз.
+ -pro &lt;имя файла&gt;
+ Название .pro файла. Используется для файлов в формате .pro, но
+ имеющих другое расширение. Проекты будут объединены и обработаны
+ рекурсивно.
+ --source-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/замена языка исходных строк. По умолчанию, POSIX, если не
+ указано, и файл не содержит его в своём имени.
+ --target-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/замена языка переводов.
+ Этот язык определяется из имени файла, если этот параметр не задан
+ или язык не указан внутри файла.
+ -ts &lt;ts-файл&gt;...
+ Указание выходного файла(ов). В этом случае будет заменена
+ переменная TRANSLATIONS и обнулена CODECFORTR в указанном файле
+ проекта.
+ -codecfortr &lt;кодировка&gt;
+ Указание кодировки, применимой к tr().
+ Используется только вместе с -ts.
+ -version
+ Отобразить версию lupdate и выйти.
+ @lst-файл
+ Прочитать дополнительные имена файлов (по одному на строке) из
+ файла lst-файл.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Codec for tr() &apos;%1&apos; disagrees with existing file&apos;s codec &apos;%2&apos;. Expect trouble.
+</source>
+ <translation>Предупреждение lupdate: Кодировка для tr() &quot;%1&quot; не совпадает с кодировкой существующего файла &quot;%2&quot;. Возможны проблемы.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Specified target language &apos;%1&apos; disagrees with existing file&apos;s language &apos;%2&apos;. Ignoring.
+</source>
+ <translation>Предупреждение lupdate: Указанный целевой язык &quot;%1&quot; не совпадает с языком существующего файла &quot;%2&quot;. Пропускается.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Specified source language &apos;%1&apos; disagrees with existing file&apos;s language &apos;%2&apos;. Ignoring.
+</source>
+ <translation>Предупреждение lupdate: Указанный исходный язык &quot;%1&quot; не совпадает с языком существующего файла &quot;%2&quot;. Пропускается.
+</translation>
+ </message>
+ <message>
+ <source>Updating &apos;%1&apos;...
+</source>
+ <translation>Обновление &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>Stripping non plural forms in &apos;%1&apos;...
+</source>
+ <translation>Удаление немножественных форм из &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Codec for source &apos;%1&apos; is invalid. Falling back to codec for tr().
+</source>
+ <translation>Предупреждение lupdate: Некорректная кодировка для исходника &quot;%1&quot;. Используется кодировка для tr().
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: TS files from command line will override TRANSLATIONS in %1.
+</source>
+ <translation>Предупреждение lupdate: TS файлы командной строки заменят TRANSLATIONS в %1.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: TS files from command line prevent recursing into %1.
+</source>
+ <translation>Предупреждение lupdate: TS файлы командной строки отключают рекурсию в %1.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: no TS files specified. Only diagnostics will be produced for &apos;%1&apos;.
+</source>
+ <translation>Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>The option -target-language requires a parameter.
+</source>
+ <translation>Параметр -target-language требует значение.
+</translation>
+ </message>
+ <message>
+ <source>The option -source-language requires a parameter.
+</source>
+ <translation>Параметр -source-language требует значение.
+</translation>
+ </message>
+ <message>
+ <source>The option -disable-heuristic requires a parameter.
+</source>
+ <translation>Параметр -disable-heuristic требует значение.
+</translation>
+ </message>
+ <message>
+ <source>Invalid heuristic name passed to -disable-heuristic.
+</source>
+ <translation>Неверное имя метода передано в -disable-heuristic.
+</translation>
+ </message>
+ <message>
+ <source>The option -locations requires a parameter.
+</source>
+ <translation>Параметр -locations требует значения.</translation>
+ </message>
+ <message>
+ <source>Invalid parameter passed to -locations.
+</source>
+ <translation>Неверное значение передано в -locations.
+</translation>
+ </message>
+ <message>
+ <source>The -codecfortr option should be followed by a codec name.
+</source>
+ <translation>Параметру -codecfortr требуется название кодировки.
+</translation>
+ </message>
+ <message>
+ <source>The -extensions option should be followed by an extension list.
+</source>
+ <translation>Параметру -extensions требуется список расширений.
+</translation>
+ </message>
+ <message>
+ <source>The -pro option should be followed by a filename of .pro file.
+</source>
+ <translation>Параметру -pro требуется имя .pro файла.
+</translation>
+ </message>
+ <message>
+ <source>The -I option should be followed by a path.
+</source>
+ <translation>Параметру -I требуется путь.
+</translation>
+ </message>
+ <message>
+ <source>Unrecognized option &apos;%1&apos;.
+</source>
+ <translation>Неопознанный параметр &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: List file &apos;%1&apos; is not readable.
+</source>
+ <translation>Ошибка lupdate: Не удалось прочитать файл списка &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: For some reason, &apos;%1&apos; is not writable.
+</source>
+ <translation>Предупреждение lupdate: По какой-то причине не удалось записать в &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: File &apos;%1&apos; has no recognized extension.
+</source>
+ <translation>Ошибка lupdate: Расширение файла &quot;%1&quot; не опознано.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: File &apos;%1&apos; does not exist.
+</source>
+ <translation>Ошибка lupdate: Файл &quot;%1&quot; не существует.
+</translation>
+ </message>
+ <message>
+ <source>Scanning directory &apos;%1&apos;...
+</source>
+ <translation>Сканирование каталога &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: -target-language usually only makes sense with exactly one TS file.
+</source>
+ <translation>Предупреждение lupdate: -target-language имеет смысл для одного TS файла.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: -codecfortr has no effect without -ts.
+</source>
+ <translation>Предупреждение lupdate: -codecfortr не имеет смысла без -ts.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: no TS files specified. Only diagnostics will be produced.
+</source>
+ <translation>Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: Both project and source files / include paths specified.
+</source>
+ <translation>Ошибка lupdate: Указаны и проект, и исходный файл / включаемые пути.
+</translation>
+ </message>
+ <message numerus="yes">
+ <source> Found %n source text(s) (%1 new and %2 already existing)
+</source>
+ <translation>
+ <numerusform> Обнаружен %n исходный текст (%1 новых и %2 уже имеющихся)
+</numerusform>
+ <numerusform> Обнаружено %n исходных текста (%1 новых и %2 уже имеющихся)
+</numerusform>
+ <numerusform> Обнаружено %n исходных текстов (%1 новых и %2 уже имеющихся)
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Removed %n obsolete entries
+</source>
+ <translation>
+ <numerusform>Удалена %n устаревшая запись
+</numerusform>
+ <numerusform>Удалены %n устаревших записи
+</numerusform>
+ <numerusform>Удалено %n устаревших записей
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Kept %n obsolete entries
+</source>
+ <translation>
+ <numerusform>Сохранена %n устаревшая запись
+</numerusform>
+ <numerusform>Сохранены %n устаревшие записи
+</numerusform>
+ <numerusform>Сохранено %n устаревших записей
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Number heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика number добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика number добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика number добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Same-text heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика same-text добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика same-text добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика same-text добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Similar-text heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика similar-text добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика similar-text добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика similar-text добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>Illegal character</source>
+ <translation>Недопустимый символ</translation>
+ </message>
+ <message>
+ <source>Unclosed string at end of line</source>
+ <translation>Незавершенный текст в конце строки</translation>
+ </message>
+ <message>
+ <source>Illegal escape squence</source>
+ <translation>Неверная esc-последовательность</translation>
+ </message>
+ <message>
+ <source>Illegal unicode escape sequence</source>
+ <translation>Неверная esc-последовательность unicode</translation>
+ </message>
+ <message>
+ <source>Unclosed comment at end of file</source>
+ <translation>Незакрытый комментарий в конце файла</translation>
+ </message>
+ <message>
+ <source>Illegal syntax for exponential number</source>
+ <translation>Неверный синтаксис для числа в экспоненциальной форме</translation>
+ </message>
+ <message>
+ <source>Identifier cannot start with numeric literal</source>
+ <translation>Идентификатор не может начинаться с цифры</translation>
+ </message>
+ <message>
+ <source>Unterminated regular expression literal</source>
+ <translation>Незавершённый литерал регулярного выражения</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with %1(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с %1(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>%1() requires at least two arguments.
+</source>
+ <translation>для %1() требуется как минимум два параметра.
+</translation>
+ </message>
+ <message>
+ <source>%1(): both arguments must be literal strings.
+</source>
+ <translation>%1(): оба параметра должны быть строковыми литералами.
+</translation>
+ </message>
+ <message>
+ <source>%1() requires at least one argument.
+</source>
+ <translation>для %1() требуется как минимум один параметр.
+</translation>
+ </message>
+ <message>
+ <source>%1(): text to translate must be a literal string.
+</source>
+ <translation>%1(): переводимый текст должен быть строковым литералом.
+</translation>
+ </message>
+ <message>
+ <source>//= cannot be used with %1(). Ignoring
+</source>
+ <translation>//= не может быть использовано совместно с %1(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>%1(): identifier must be a literal string.
+</source>
+ <translation>%1(): идентификатор должен быть строковым литералом.
+</translation>
+ </message>
+ <message>
+ <source>Expected </source>
+ <extracomment>Beginning of the string that contains comma-separated list of expected tokens</extracomment>
+ <translation>Ожидается </translation>
+ </message>
+ <message>
+ <source>XML error: Parse error at line %1, column %2 (%3).</source>
+ <translation>Ошибка XML: Ошибка разбора в строке %1, столбце %2 (%3).</translation>
+ </message>
+ <message>
+ <source>Parse error in UI file</source>
+ <translation>Ошибка разбора UI файла</translation>
+ </message>
</context>
<context>
<name>MainWindow</name>
@@ -1289,6 +2231,13 @@ Line: %2</source>
</message>
</context>
<context>
+ <name>PhraseBook</name>
+ <message>
+ <source>Parse error at line %1, column %2 (%3).</source>
+ <translation>Ошибка разбора в строке %1, столбце %2 (%3).</translation>
+ </message>
+</context>
+<context>
<name>PhraseBookBox</name>
<message>
<source></source>
@@ -1460,6 +2409,12 @@ Line: %2</source>
<source>XLIFF localization files</source>
<translation>Файлы локализации XLIFF</translation>
</message>
+ <message>
+ <source>lupdate version %1
+</source>
+ <translation>lupdate версия %1
+</translation>
+ </message>
</context>
<context>
<name>SourceCodeView</name>
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 3b9bbb04e0..d167434c28 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -3700,7 +3700,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;h3&gt;Über Qt&lt;/h3&gt;&lt;p&gt;Dieses Programm verwendet Qt Version %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
@@ -5186,7 +5186,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<source>Find &amp;Previous</source>
- <translation>Vorhergehende Fundstelle</translation>
+ <translation>&amp;Vorhergehende Fundstelle</translation>
</message>
<message>
<source>Shift+F3</source>
diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts
index 5fbd6e384a..b445c5d8d6 100644
--- a/translations/qt_ru.ts
+++ b/translations/qt_ru.ts
@@ -302,6 +302,14 @@ have libgstreamer-plugins-base installed.</source>
<translation>Ошибка открытия адреса URL</translation>
</message>
<message>
+ <source>Error opening resource</source>
+ <translation>Ошибка открытия ресурса</translation>
+ </message>
+ <message>
+ <source>Error opening source: resource not opened</source>
+ <translation>Ошибка открытия источника: ресурс не был открыт</translation>
+ </message>
+ <message>
<source>Setting volume failed</source>
<translation>Не удалось установить уровень громкости</translation>
</message>
@@ -313,6 +321,10 @@ have libgstreamer-plugins-base installed.</source>
<source>Playback complete</source>
<translation>Воспроизведение завершено</translation>
</message>
+ <message>
+ <source>Download error</source>
+ <translation>Ошибка загрузки</translation>
+ </message>
</context>
<context>
<name>Phonon::MMF::AbstractVideoPlayer</name>
@@ -421,6 +433,14 @@ have libgstreamer-plugins-base installed.</source>
<translation>Ошибка открытия источника: тип не поддерживается</translation>
</message>
<message>
+ <source>Error opening source: resource is compressed</source>
+ <translation>Ошибка открытия источника: сжатый ресурс</translation>
+ </message>
+ <message>
+ <source>Error opening source: resource not valid</source>
+ <translation>Ошибка открытия источника: некорректный ресурс</translation>
+ </message>
+ <message>
<source>Error opening source: media type could not be determined</source>
<translation>Ошибка открытия источника: не удалось определить тип медиа-данных</translation>
</message>
@@ -1360,7 +1380,7 @@ to
<name>QDeclarativeBinding</name>
<message>
<source>Binding loop detected for property &quot;%1&quot;</source>
- <translation type="unfinished">Обнаружена цикличная привязка для свойства &quot;%1&quot;</translation>
+ <translation type="unfinished">Обнаружено зацикливание привязки для свойства &quot;%1&quot;</translation>
</message>
</context>
<context>
@@ -1574,6 +1594,10 @@ to
<translation type="unfinished">Некорректное присваивание свойства: ожидается сценарий</translation>
</message>
<message>
+ <source>Cannot assign multiple values to a singular property</source>
+ <translation type="unfinished">Невозможно присвоить множество значений свойству, принимающему только одно</translation>
+ </message>
+ <message>
<source>Cannot assign object to property</source>
<translation type="unfinished">Невозможно назначить объектсвойству</translation>
</message>
@@ -1666,8 +1690,16 @@ to
<translation type="unfinished">Некорректное размещение псевдонима</translation>
</message>
<message>
+ <source>Invalid alias reference. An alias reference must be specified as &lt;id&gt;, &lt;id&gt;.&lt;property&gt; or &lt;id&gt;.&lt;value property&gt;.&lt;property&gt;</source>
+ <translation type="unfinished">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt;, &lt;id&gt;.&lt;свойство&gt; или &lt;id&gt;.&lt;свойство значения&gt;.&lt;свойство&gt;</translation>
+ </message>
+ <message>
+ <source>Alias property exceeds alias bounds</source>
+ <translation type="unfinished">Свойство псевдонима выходит за границы</translation>
+ </message>
+ <message>
<source>Invalid alias reference. An alias reference must be specified as &lt;id&gt; or &lt;id&gt;.&lt;property&gt;</source>
- <translation type="unfinished">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt; или &lt;id&gt;.&lt;property&gt;</translation>
+ <translation type="obsolete">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt; или &lt;id&gt;.&lt;property&gt;</translation>
</message>
<message>
<source>Invalid alias reference. Unable to find id &quot;%1&quot;</source>
@@ -1682,29 +1714,10 @@ to
</message>
</context>
<context>
- <name>QDeclarativeCompositeTypeManager</name>
- <message>
- <source>Resource %1 unavailable</source>
- <translation>Ресурс &quot;%1&quot; недоступен</translation>
- </message>
- <message>
- <source>Namespace %1 cannot be used as a type</source>
- <translation>Пространство имён &quot;%1&quot; не может быть использовано в качестве типа</translation>
- </message>
- <message>
- <source>%1 %2</source>
- <translation>%1 %2</translation>
- </message>
- <message>
- <source>Type %1 unavailable</source>
- <translation>Тип &quot;%1&quot; недоступен</translation>
- </message>
-</context>
-<context>
<name>QDeclarativeConnections</name>
<message>
<source>Cannot assign to non-existent property &quot;%1&quot;</source>
- <translation type="unfinished">Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
+ <translation>Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
</message>
<message>
<source>Connections: nested objects not allowed</source>
@@ -1760,6 +1773,10 @@ to
<context>
<name>QDeclarativeImportDatabase</name>
<message>
+ <source>cannot load module &quot;%1&quot;: File name case mismatch for &quot;%2&quot;</source>
+ <translation type="unfinished">невозможно загрузить модуль &quot;%1&quot;: Регистр имени файла не соответствует &quot;%2&quot;</translation>
+ </message>
+ <message>
<source>module &quot;%1&quot; definition &quot;%2&quot; not readable</source>
<translation type="unfinished">невозможно прочитать определение &quot;%2&quot; модуля &quot;%1&quot;</translation>
</message>
@@ -1815,6 +1832,10 @@ to
<source>is not a type</source>
<translation>не является типом</translation>
</message>
+ <message>
+ <source>File name case mismatch for &quot;%2&quot;</source>
+ <translation type="unfinished">Регистр имени файла не соответствует &quot;%2&quot;</translation>
+ </message>
</context>
<context>
<name>QDeclarativeKeyNavigationAttached</name>
@@ -1918,7 +1939,7 @@ to
<name>QDeclarativeParser</name>
<message>
<source>Illegal unicode escape sequence</source>
- <translation type="unfinished">Неверная unicode esc-последовательность</translation>
+ <translation>Недопустимая unicode esc-последовательность</translation>
</message>
<message>
<source>Illegal character</source>
@@ -1930,7 +1951,7 @@ to
</message>
<message>
<source>Illegal escape squence</source>
- <translation type="unfinished">Неверная esc-последовательность</translation>
+ <translation>Недопустимая esc-последовательность</translation>
</message>
<message>
<source>Unclosed comment at end of file</source>
@@ -1938,7 +1959,7 @@ to
</message>
<message>
<source>Illegal syntax for exponential number</source>
- <translation type="unfinished">Недопустимый синтаксис для экспоненциального числа</translation>
+ <translation>Недопустимый синтаксис для экспоненциального числа</translation>
</message>
<message>
<source>Identifier cannot start with numeric literal</source>
@@ -1986,15 +2007,15 @@ to
</message>
<message>
<source>Reserved name &quot;Qt&quot; cannot be used as an qualifier</source>
- <translation type="unfinished">Зарезервированное имя &quot;Qt&quot; не может быть использовано в качестве спецификатора</translation>
+ <translation>Зарезервированное имя &quot;Qt&quot; не может быть использовано в качестве спецификатора</translation>
</message>
<message>
<source>Script import qualifiers must be unique.</source>
- <translation type="unfinished">Спецификаторы импорта сценария должны быть уникальными.</translation>
+ <translation>Спецификаторы импорта сценария должны быть уникальными.</translation>
</message>
<message>
<source>Script import requires a qualifier</source>
- <translation type="unfinished">Для импорта сценария требуется спецификатор</translation>
+ <translation>Для импорта сценария требуется спецификатор</translation>
</message>
<message>
<source>Library import requires a version</source>
@@ -2081,6 +2102,25 @@ to
</message>
</context>
<context>
+ <name>QDeclarativeTypeLoader</name>
+ <message>
+ <source>Script %1 unavailable</source>
+ <translation>Сценарий %1 недоступен</translation>
+ </message>
+ <message>
+ <source>Type %1 unavailable</source>
+ <translation>Тип &quot;%1&quot; недоступен</translation>
+ </message>
+ <message>
+ <source>Namespace %1 cannot be used as a type</source>
+ <translation>Пространство имён &quot;%1&quot; не может быть использовано в качестве типа</translation>
+ </message>
+ <message>
+ <source>%1 %2</source>
+ <translation>%1 %2</translation>
+ </message>
+</context>
+<context>
<name>QDeclarativeVME</name>
<message>
<source>Unable to create object of type %1</source>
@@ -3298,18 +3338,10 @@ Please verify the correct directory name was given.</source>
<context>
<name>QLibrary</name>
<message>
- <source>Could not mmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить mmap &quot;%1&quot;: %2</translation>
- </message>
- <message>
<source>Plugin verification data mismatch in &apos;%1&apos;</source>
<translation>Проверочная информация для модуля &quot;%1&quot; не совпадает</translation>
</message>
<message>
- <source>Could not unmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить unmap &quot;%1&quot;: %2</translation>
- </message>
- <message>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>Модуль &quot;%1&quot; использует несоместимую библиотеку Qt. (%2.%3.%4) [%5]</translation>
</message>
@@ -6071,7 +6103,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Voice Dial</source>
- <extracomment>Button to trigger voice dialling</extracomment>
+ <extracomment>Button to trigger voice dialing</extracomment>
<translation type="unfinished">Голосовой вызов</translation>
</message>
<message>
@@ -8381,11 +8413,11 @@ Please choose a different file name.</source>
</message>
<message>
<source>W3C XML Schema identity constraint selector</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Переключатель ограничений типа шаблона W3C XML</translation>
</message>
<message>
<source>W3C XML Schema identity constraint field</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Поле ограничений типа шаблона W3C XML</translation>
</message>
<message>
<source>A construct was encountered which is disallowed in the current language(%1).</source>
@@ -9557,15 +9589,15 @@ Please choose a different file name.</source>
</message>
<message>
<source>Data of type %1 are not allowed to be empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Данные типа %1 не могут быть пустыми.</translation>
</message>
<message>
<source>Element %1 is missing child element.</source>
- <translation type="unfinished"></translation>
+ <translation>У элемента %1 отсутствует дочерний элемент.</translation>
</message>
<message>
<source>There is one IDREF value with no corresponding ID: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Присутствует одно значение IDREF без соответствующего ID: %1.</translation>
</message>
<message>
<source>Loaded schema file is invalid.</source>
@@ -9593,7 +9625,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Specified type %1 is not known to the schema.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Указанный тип %1 шаблону не известен.</translation>
</message>
<message>
<source>Element %1 is not defined in this scope.</source>
@@ -9601,15 +9633,15 @@ Please choose a different file name.</source>
</message>
<message>
<source>Declaration for element %1 does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует объявление элемента %1.</translation>
</message>
<message>
<source>Element %1 contains invalid content.</source>
- <translation type="unfinished"></translation>
+ <translation>В элементе %1 находится неверное содержимое.</translation>
</message>
<message>
<source>Element %1 is declared as abstract.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 объявлен абстрактным.</translation>
</message>
<message>
<source>Element %1 is not nillable.</source>
@@ -9617,7 +9649,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Attribute %1 contains invalid data: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Атрибут %1 содержит неверные данные: %2</translation>
</message>
<message>
<source>Element contains content although it is nillable.</source>
@@ -9625,7 +9657,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Fixed value constraint not allowed if element is nillable.</source>
- <translation type="unfinished"></translation>
+ <translation>Для обнуляемых элементов недопустимо ограничение фиксированным значением.</translation>
</message>
<message>
<source>Element %1 cannot contain other elements, as it has a fixed content.</source>
@@ -9633,75 +9665,75 @@ Please choose a different file name.</source>
</message>
<message>
<source>Specified type %1 is not validly substitutable with element type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Указанный тип %1 не может быть корректно замещён элементом типа %2.</translation>
</message>
<message>
<source>Complex type %1 is not allowed to be abstract.</source>
- <translation type="unfinished"></translation>
+ <translation>Недопустимо, чтобы сложный тип %1 был абстрактным.</translation>
</message>
<message>
<source>Element %1 contains not allowed attributes.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимые атрибуты.</translation>
</message>
<message>
<source>Element %1 contains not allowed child element.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимый дочерний элемент.</translation>
</message>
<message>
<source>Content of element %1 does not match its type definition: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое элемента %1 не соответствует его определению типа: %2.</translation>
</message>
<message>
<source>Content of element %1 does not match defined value constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое элемента %1 не соответствует определённому ограничению значения.</translation>
</message>
<message>
<source>Element %1 contains not allowed child content.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Элемент %1 содержит недопустимое дочернее содержимое.</translation>
</message>
<message>
<source>Element %1 contains not allowed text content.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимое текстовое содержимое.</translation>
</message>
<message>
<source>Element %1 is missing required attribute %2.</source>
- <translation type="unfinished"></translation>
+ <translation>У элемента %1 отсутствует необходимый атрибут %2.</translation>
</message>
<message>
<source>Attribute %1 does not match the attribute wildcard.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Атрибут %1 не соответствует шаблону.</translation>
</message>
<message>
<source>Declaration for attribute %1 does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует объявление атрибута %1.</translation>
</message>
<message>
<source>Element %1 contains two attributes of type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит два атрибута типа %2.</translation>
</message>
<message>
<source>Attribute %1 contains invalid content.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит неверное содержимое.</translation>
</message>
<message>
<source>Element %1 contains unknown attribute %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит неизвестный атрибут %2.</translation>
</message>
<message>
<source>Content of attribute %1 does not match its type definition: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое атрибута %1 не соответствует его определению типа: %2.</translation>
</message>
<message>
<source>Content of attribute %1 does not match defined value constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое атрибута %1 не соответствует определённому ограничению значения.</translation>
</message>
<message>
<source>Non-unique value found for constraint %1.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Обнаружено неуникальное значение для ограничения %1.</translation>
</message>
<message>
<source>Key constraint %1 contains absent fields.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Ограничение на ключ %1 содержит недостающие поля.</translation>
</message>
<message>
<source>Key constraint %1 contains references nillable element %2.</source>
@@ -9717,7 +9749,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Field %1 has no simple type.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Поле %1 имеет не простой тип.</translation>
</message>
<message>
<source>ID value &apos;%1&apos; is not unique.</source>
diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts
index 7137d21db6..ea1671f2e4 100644
--- a/translations/qtconfig_ru.ts
+++ b/translations/qtconfig_ru.ts
@@ -4,6 +4,26 @@
<context>
<name>MainWindow</name>
<message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Appearance&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to customize the appearance of your Qt applications.&lt;/p&gt;&lt;p&gt;You can select the default GUI Style from the drop down list and customize the colors.&lt;/p&gt;&lt;p&gt;Any GUI Style plugins in your plugin path will automatically be added to the list of built-in Qt styles. (See the Library Paths tab for information on adding new plugin paths.)&lt;/p&gt;&lt;p&gt;When you choose 3-D Effects and Window Background colors, the Qt Configuration program will automatically generate a palette for you. To customize colors further, press the Tune Palette button to open the advanced palette editor.&lt;p&gt;The Preview Window shows what the selected Style and colors look like.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Внешний вид&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить внешний вид приложений Qt.&lt;/p&gt;&lt;p&gt;Позволяет выбрать стиль интерфейса по умолчанию из выпадающего списка и настроить используемые стилем цвета.&lt;/p&gt;&lt;p&gt;Каждый стиль интерфейса, содержащийся в модулях, найденных в путях к модулям, автоматически добавляется в список встроенных стилей Qt (на вкладке Пути к библиотекам имеется более подробная информация о добавлении путей к модулям).&lt;/p&gt;&lt;p&gt;При выборе эффектов 3D и фоновых цветов окна программа настройки Qt автоматически создаст подходящую палитру. Для дальнейшей настройки цветов следует зайти в расширенный редактор палитры, нажав кнопку Настроить палитру.&lt;p&gt;В окне предпросмотра можно увидеть как будет выглядеть интерфейс с выбранными стилем и цветами.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Fonts&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to select the default font for your Qt applications. The selected font is shown (initially as &apos;Sample Text&apos;) in the line edit below the Family, Style and Point Size drop down lists.&lt;/p&gt;&lt;p&gt;Qt has a powerful font substitution feature that allows you to specify a list of substitute fonts. Substitute fonts are used when a font cannot be loaded, or if the specified font doesn&apos;t have a particular character.&lt;p&gt;For example, if you select the font Lucida, which doesn&apos;t have Korean characters, but need to show some Korean text using the Mincho font family you can do so by adding Mincho to the list. Once Mincho is added, any Korean characters that are not found in the Lucida font will be taken from the Mincho font. Because the font substitutions are lists, you can also select multiple families, such as Song Ti (for use with Chinese text).</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Шрифты&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно выбрать шрифт по умолчанию для приложений Qt. Выбранный шрифт отображается в строке редактирования ниже выпадающих списков &quot;Шрифт&quot;, &quot;Начертание&quot; и &quot;Размер&quot; (по умолчанию это текст &quot;Текст для примера (Sample Text)&quot;).&lt;/p&gt;&lt;p&gt;Qt обладает мощным механизмом подмены шрифтов, который позволяет задавать список подставляемых шрифтов. Подставляемые шрифты используются, когда шрифт не удаётся загрузить или в нём отсутствуют необходимые символы.&lt;p&gt;Например, если требуется, чтобы при выборе шрифта Lucida, в котором отсутствуют корейские иероглифы, для отображения корейского текста использовался шрифт Mincho,то можно добавить его в список. После этого все корейские символы, отсутствующие в шрифте Lucida, будут браться из шрифта Mincho. Так как для замены используется список, то можно добавлять несколько шрифтов, например, можно также добавить шрифт Song Ti для отображения китайского текста.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Interface&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to customize the feel of your Qt applications.&lt;/p&gt;&lt;p&gt;If the Resolve Symlinks checkbox is checked Qt will follow symlinks when handling URLs. For example, in the file dialog, if this setting is turned on and /usr/tmp is a symlink to /var/tmp, entering the /usr/tmp directory will cause the file dialog to change to /var/tmp. With this setting turned off, symlinks are not resolved or followed.&lt;/p&gt;&lt;p&gt;The Global Strut setting is useful for people who require a minimum size for all widgets (e.g. when using a touch panel or for users who are visually impaired). Leaving the Global Strut width and height at 0 will disable the Global Strut feature&lt;/p&gt;&lt;p&gt;XIM (Extended Input Methods) are used for entering characters in languages that have large character sets, for example, Chinese and Japanese.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Интерфейс&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить поведение приложений Qt.&lt;/p&gt;&lt;p&gt;Если включено &quot;Разрешать символьные ссылки&quot;, Qt будет следовать по символьным ссылкам при обработке путей URL. Например, если эта функция включена и /usr/tmp является символьной ссылкой на /var/tmp, то в диалоге выбора файла при вводе пути к каталогу /usr/tmp он будет изменён на /var/tmp.&lt;/p&gt;&lt;p&gt;Функция &quot;Минимальные размеры&quot; предназначены для тех, кому необходимо чтобы элементы интерфейса были не менее заданного размера (например, при использовании сенсорной панели или для людей с проблемами зрения). Если задать 0 в полях &quot;минимальная ширина&quot; и &quot;минимальная высота&quot;, то данная функция будет отключена.&lt;/p&gt;&lt;p&gt;Метод ввода XIM (расширенные методы ввода) используется для ввода символов на языках с большим набором символов (например, китайском или японском).</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Printer&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to configure the way Qt generates output for the printer.You can specify if Qt should try to embed fonts into its generated output.If you enable font embedding, the resulting postscript will be more portable and will more accurately reflect the visual output on the screen; however the resulting postscript file size will be bigger.&lt;p&gt;When using font embedding you can select additional directories where Qt should search for embeddable font files. By default, the X server font path is used.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Принтер&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить способ, которым Qt будет подготавливать данные для печати. Можно указать следует ли встраивать шрифты - в этом случае напечатанные документы будут более похожи на те, что на экране, но при этом увеличится объём данных, передаваемых на печатающее устройство.&lt;p&gt;При использовании встраивания шрифтов можно указать дополнительные каталоги, в которых Qt будет искать файлы шрифтов для встраивания. По умолчанию используется путь к шрифтам X сервера.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Phonon&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to configure the Phonon GStreamer multimedia backend. &lt;p&gt;It is reccommended to leave all settings on &quot;Auto&quot; to let Phonon determine your settings automatically.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Phonon&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить мультимедийную подсистему Phonon GStreamer.&lt;p&gt;Рекомендуется оставить значение &quot;Автоматически&quot; для всех настроек, чтобы Phonon определил параметры самостоятельно.</translation>
+ </message>
+ <message>
<source>Desktop Settings (Default)</source>
<translation>Настройки рабочего стола (по умолчанию)</translation>
</message>
@@ -236,7 +256,7 @@
</message>
<message>
<source>Feel Settings</source>
- <translation type="unfinished">Настройка указателя</translation>
+ <translation type="unfinished">Настройки поведения</translation>
</message>
<message>
<source> ms</source>
@@ -260,7 +280,7 @@
</message>
<message>
<source>Wheel &amp;Scroll Lines:</source>
- <translation type="unfinished">&amp;Прокручивать строк при повороте колёсика:</translation>
+ <translation>&amp;Прокручивать строк при повороте колёсика:</translation>
</message>
<message>
<source>Resolve symlinks in URLs</source>
@@ -268,7 +288,7 @@
</message>
<message>
<source>GUI Effects</source>
- <translation type="unfinished">Эффекты пользовательского интерфейса</translation>
+ <translation>Эффекты интерфейса</translation>
</message>
<message>
<source>&amp;Enable</source>
@@ -284,15 +304,15 @@
</message>
<message>
<source>C&amp;omboBox Effect:</source>
- <translation type="unfinished">Эффект &amp;выпадающего списка:</translation>
+ <translation>Эффект &amp;выпадающего списка:</translation>
</message>
<message>
<source>&amp;ToolTip Effect:</source>
- <translation type="unfinished">Эффект &amp;подсказки:</translation>
+ <translation>Эффект &amp;подсказки:</translation>
</message>
<message>
<source>Tool&amp;Box Effect:</source>
- <translation type="unfinished">Эффект панели &amp;инструментов:</translation>
+ <translation>Эффект панели &amp;инструментов:</translation>
</message>
<message>
<source>Disable</source>
@@ -308,7 +328,7 @@
</message>
<message>
<source>Global Strut</source>
- <translation type="unfinished">Минимальные размеры</translation>
+ <translation>Минимальные размеры</translation>
</message>
<message>
<source>Minimum &amp;Width:</source>
@@ -519,59 +539,59 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Build inactive palette from active</source>
- <translation type="unfinished">Создать неактивную палитру из активной</translation>
+ <translation>Создать неактивную палитру из активной</translation>
</message>
<message>
<source>Build disabled palette from active</source>
- <translation type="unfinished">Создать выключенную палитру из активной</translation>
+ <translation>Создать выключенную палитру из активной</translation>
</message>
<message>
<source>Central color &amp;roles</source>
- <translation type="unfinished">Роли &amp;цветов</translation>
+ <translation>Основные роли &amp;цветов</translation>
</message>
<message>
<source>Choose central color role</source>
- <translation type="unfinished">Выберите роль цвета</translation>
+ <translation>Выберите основную роль цвета</translation>
</message>
<message>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available central roles are: &lt;ul&gt; &lt;li&gt;Window - general background color.&lt;/li&gt; &lt;li&gt;WindowText - general foreground color. &lt;/li&gt; &lt;li&gt;Base - used as background color for e.g. text entry widgets, usually white or another light color. &lt;/li&gt; &lt;li&gt;Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. &lt;/li&gt; &lt;li&gt;Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. &lt;/li&gt; &lt;li&gt;ButtonText - a foreground color used with the Button color. &lt;/li&gt; &lt;li&gt;Highlight - a color to indicate a selected or highlighted item. &lt;/li&gt; &lt;li&gt;HighlightedText - a text color that contrasts to Highlight. &lt;/li&gt; &lt;li&gt;BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. &lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;</source>
- <translation type="unfinished">&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt;&lt;li&gt;Window - основной цвет фона.&lt;/li&gt; &lt;li&gt;WindowText - основной цвет текста.&lt;/li&gt; &lt;li&gt;Base - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.&lt;/li&gt; &lt;li&gt;Text - цвет текста используемый совместно с Base. Обычно, он совпадает с WindowText, так как в этом случае получается максимальный контраст и с Window, и с Base.&lt;/li&gt; &lt;li&gt;Button - основной цвет фона кнопки, которой требуется цвет отличный от Window, например, в стиле Macintosh.&lt;/li&gt; &lt;li&gt;ButtonText - цвет текста используемый совместно с Button.&lt;/li&gt; &lt;li&gt;Highlight - цвет для обозначения выбранного или выделенного элемента.&lt;/li&gt; &lt;li&gt;HighlightedText - цвет текста контрастирующий с Highlight.&lt;/li&gt; &lt;li&gt;BrightText - цвет текста, который отличается от WindowText и хорошо контрастирует с черным.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</translation>
+ <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt;&lt;li&gt;&lt;b&gt;Окно&lt;/b&gt; - основной цвет фона.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст окна&lt;/b&gt; - основной цвет текста.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Фон&lt;/b&gt; - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст&lt;/b&gt; - цвет текста используемый совместно с &lt;b&gt;Фон&lt;/b&gt;. Обычно, он совпадает с &lt;b&gt;Текст окна&lt;/b&gt;, так как в этом случае получается максимальный контраст и с &lt;b&gt;Окно&lt;/b&gt;, и с &lt;b&gt;Фон&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Кнопка&lt;/b&gt; - основной цвет фона кнопки, которой требуется цвет отличный от &lt;b&gt;Окно&lt;/b&gt;, например, в стиле Macintosh.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст кнопки&lt;/b&gt; - цвет текста используемый совместно с &lt;b&gt;Кнопка&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Выделение&lt;/b&gt; - цвет для обозначения выбранного или выделенного элемента.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Выделенный текст&lt;/b&gt; - цвет текста контрастирующий с &lt;b&gt;Выделение&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Яркий текст&lt;/b&gt; - цвет текста, который отличается от &lt;b&gt;Текст окна&lt;/b&gt; и хорошо контрастирует с черным.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>Window</source>
- <translation type="unfinished"></translation>
+ <translation>Окно</translation>
</message>
<message>
<source>WindowText</source>
- <translation type="unfinished"></translation>
+ <translation>Текст окна</translation>
</message>
<message>
<source>Button</source>
- <translation type="unfinished"></translation>
+ <translation>Кнопка</translation>
</message>
<message>
<source>Base</source>
- <translation type="unfinished"></translation>
+ <translation>Фон</translation>
</message>
<message>
<source>Text</source>
- <translation type="unfinished"></translation>
+ <translation>Текст</translation>
</message>
<message>
<source>BrightText</source>
- <translation type="unfinished"></translation>
+ <translation>Светлый текст</translation>
</message>
<message>
<source>ButtonText</source>
- <translation type="unfinished"></translation>
+ <translation>Текст на кнопке</translation>
</message>
<message>
<source>Highlight</source>
- <translation type="unfinished"></translation>
+ <translation>Выделение</translation>
</message>
<message>
<source>HighlightedText</source>
- <translation type="unfinished"></translation>
+ <translation>Выделенный текст</translation>
</message>
<message>
<source>&amp;Select Color:</source>
@@ -595,39 +615,39 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Generate shadings</source>
- <translation type="unfinished">Создание полутонов</translation>
+ <translation>Создание полутонов</translation>
</message>
<message>
<source>Check to let 3D-effect colors be calculated from button-color.</source>
- <translation type="unfinished">Включите, чтобы цвета эффекта трёхмерности были получены из цвета кнопки.</translation>
+ <translation>Создать цвета эффекта трёхмерности из цвета кнопки.</translation>
</message>
<message>
<source>Choose 3D-effect color role</source>
- <translation type="unfinished">Выбор роли цвета дял эффекта трёхмерности</translation>
+ <translation>Выбор роли цвета дял эффекта трёхмерности</translation>
</message>
<message>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available effect roles are: &lt;ul&gt; &lt;li&gt;Light - lighter than Button color. &lt;/li&gt; &lt;li&gt;Midlight - between Button and Light. &lt;/li&gt; &lt;li&gt;Mid - between Button and Dark. &lt;/li&gt; &lt;li&gt;Dark - darker than Button. &lt;/li&gt; &lt;li&gt;Shadow - a very dark color. &lt;/li&gt; &lt;/ul&gt;</source>
- <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt; &lt;li&gt;Light - светлее цвета Button. &lt;/li&gt; &lt;li&gt;Midlight - среднее между Light и Button. &lt;/li&gt; &lt;li&gt;Mid - среднее между Button и Dark. &lt;/li&gt; &lt;li&gt;Dark - темнее цвета Button. &lt;/li&gt; &lt;li&gt;Shadow - очень темный цвет. &lt;/li&gt; &lt;/ul&gt;</translation>
+ <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt; &lt;li&gt;&lt;b&gt;Светлый&lt;/b&gt; - светлее цвета &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Полусветлый&lt;/b&gt; - среднее между &lt;b&gt;Светлый&lt;/b&gt; и &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Полутёмный&lt;/b&gt; - среднее между &lt;b&gt;Кнопка&lt;/b&gt; и &lt;b&gt;Тёмный&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Тёмный&lt;/b&gt; - темнее цвета &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Тень&lt;/b&gt; - очень темный цвет. &lt;/li&gt; &lt;/ul&gt;</translation>
</message>
<message>
<source>Light</source>
- <translation type="unfinished"></translation>
+ <translation>Светлый</translation>
</message>
<message>
<source>Midlight</source>
- <translation type="unfinished"></translation>
+ <translation>Полусветлый</translation>
</message>
<message>
<source>Mid</source>
- <translation type="unfinished"></translation>
+ <translation>Полутёмный</translation>
</message>
<message>
<source>Dark</source>
- <translation type="unfinished"></translation>
+ <translation>Тёмный</translation>
</message>
<message>
<source>Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Тень</translation>
</message>
<message>
<source>Select Co&amp;lor:</source>
@@ -635,7 +655,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Choose a color for the selected effect color role.</source>
- <translation type="unfinished">Выбор цвета для указанной роли.</translation>
+ <translation>Выбор цвета для указанной роли.</translation>
</message>
<message>
<source>OK</source>
diff --git a/translations/qvfb_ru.ts b/translations/qvfb_ru.ts
index a1988de994..db9ff2ae28 100644
--- a/translations/qvfb_ru.ts
+++ b/translations/qvfb_ru.ts
@@ -262,6 +262,126 @@
<context>
<name>QVFb</name>
<message>
+ <source>&amp;File</source>
+ <translation>&amp;Файл</translation>
+ </message>
+ <message>
+ <source>&amp;Configure...</source>
+ <translation>&amp;Настройки...</translation>
+ </message>
+ <message>
+ <source>&amp;Save image...</source>
+ <translation>&amp;Сохранить изображение...</translation>
+ </message>
+ <message>
+ <source>&amp;Animation...</source>
+ <translation>&amp;Анимация...</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>В&amp;ыход</translation>
+ </message>
+ <message>
+ <source>&amp;View</source>
+ <translation>&amp;Вид</translation>
+ </message>
+ <message>
+ <source>Show &amp;Cursor</source>
+ <translation>Отображать &amp;курсор</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh Rate...</source>
+ <translation>&amp;Частота обновлений...</translation>
+ </message>
+ <message>
+ <source>&amp;No rotation</source>
+ <translation>&amp;Без поворота</translation>
+ </message>
+ <message>
+ <source>&amp;90° rotation</source>
+ <translation>Поворот на &amp;90°</translation>
+ </message>
+ <message>
+ <source>1&amp;80° rotation</source>
+ <translation>Поворот на 1&amp;80°</translation>
+ </message>
+ <message>
+ <source>2&amp;70° rotation</source>
+ <translation>Поворот на 2&amp;70°</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;0.5</source>
+ <translation>Масштаб &amp;0.5</translation>
+ </message>
+ <message>
+ <source>Zoom scale 0.7&amp;5</source>
+ <translation>Масштаб 0.7&amp;5</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;1</source>
+ <translation>Масштаб &amp;1</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;2</source>
+ <translation>Масштаб &amp;2</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;3</source>
+ <translation>Масштаб &amp;3</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;4</source>
+ <translation>Масштаб &amp;4</translation>
+ </message>
+ <message>
+ <source>Zoom &amp;scale...</source>
+ <translation>&amp;Масштаб...</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Справка</translation>
+ </message>
+ <message>
+ <source>&amp;About...</source>
+ <translation>&amp;О программе...</translation>
+ </message>
+ <message>
+ <source>Save Main Screen image</source>
+ <translation>Сохранить снимок основного экрана</translation>
+ </message>
+ <message>
+ <source>snapshot.png</source>
+ <translation>снимок.png</translation>
+ </message>
+ <message>
+ <source>Portable Network Graphics (*.png)</source>
+ <translation>Portable Network Graphics (*.png)</translation>
+ </message>
+ <message>
+ <source>Save Main Screen Image</source>
+ <translation>Сохранить снимок основного экрана</translation>
+ </message>
+ <message>
+ <source>Save failed. Check that you have permission to write to the target directory.</source>
+ <translation>Не удалось сохранить. Убедитесь, что Вы имеете права на запись в целевой каталог.</translation>
+ </message>
+ <message>
+ <source>Save Second Screen image</source>
+ <translation>Сохранить снимок дополнительного экрана</translation>
+ </message>
+ <message>
+ <source>Save Second Screen Image</source>
+ <translation>Сохранить снимок дополнительного экрана</translation>
+ </message>
+ <message>
+ <source>About QVFB</source>
+ <translation>О QVFB</translation>
+ </message>
+ <message>
+ <source>&lt;h2&gt;The Qt for Embedded Linux Virtual X11 Framebuffer&lt;/h2&gt;&lt;p&gt;This application runs under Qt for X11, emulating a simple framebuffer, which the Qt for Embedded Linux server and clients can attach to just as if it was a hardware Linux framebuffer. &lt;p&gt;With the aid of this development tool, you can develop Qt for Embedded Linux applications under X11 without having to switch to a virtual console. This means you can comfortably use your other development tools such as GUI profilers and debuggers.</source>
+ <translation>&lt;h2&gt;Qt для Embedded Linux Virtual X11 Framebuffer&lt;/h2&gt;&lt;p&gt;Данное приложение работает под Qt для X11, эмулируя простой фрэймбуфер, к которому сервер и клиенты Qt для Embedded Linux могут соединяться как если бы это был аппаратный фрэймбуфер Linux. &lt;p&gt;С помощью данного инструмента Вы можете разрабатывать приложения Qt для Embedded Linux под X11 без необходимости переключаться в виртуальную консоль, что делает более удобным использование других инструментов с графическим интерфейсом - как то профайлеров и отладчиков.</translation>
+ </message>
+ <message>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
@@ -274,4 +394,23 @@
<translation>Все обложки QVFB (*.skin)</translation>
</message>
</context>
+<context>
+ <name>QVFbRateDialog</name>
+ <message>
+ <source>Target frame rate:</source>
+ <translation>Частота смены кадров:</translation>
+ </message>
+ <message>
+ <source>%1fps</source>
+ <translation>%1 к/с</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation>ОК</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
</TS>